Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Apagar pantalla desde un programa consola (https://www.clubdelphi.com/foros/showthread.php?t=87276)

JuanOrtega 07-12-2014 15:34:07

Apagar pantalla desde un programa consola
 
Hola estoy haciendo un programa consola en Delphi XE2 para apagar la pantalla , ya lo habia hecho en una aplicacion grafica normal pero en el programa consola me parece imposible de hacerlo , en stackoverflow me dieron que era imposbile hacerlo pero queria una segunda opinion , este es el codigo :

Código Delphi [-]
program test;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils,ShellApi,Windows;

function turn_off(): string;
const
  MONITOR_ON = -1;
  MONITOR_OFF = 2;
  MONITOR_STANDBY = 1;
begin
  SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF);
end;

begin
  try
    turn_off();
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.


Los errores son :
Código:

Undeclared identifier: 'Application' Undeclared identifier: 'WM_SYSCOMMAND'
El primero no puedo solucionarlo pero el segundo error se soluciona agregando el uses Winapi.Messages al codigo.

¿ Alguien me puede ayudar ?

dec 07-12-2014 15:45:22

Hola,

"Application" está definida en la unidad "Vcl.Forms", que, no incluyes en tu programa. Por otro lado tampoco incluyes la unidad "Vcl.Messages", donde se define "WM_SYSCOMMAND". No obstante incluir "Vcl.Forms" y usar "Application.Handle" no parece surtir el efecto que deseas. A mí me funciona usando la función "GetForegroundWindow()" en su lugar, es decir:

Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  Winapi.Windows,
  Winapi.Messages,
  System.SysUtils;

const
  MONITOR_ON = -1;
  MONITOR_OFF = 2;
  MONITOR_STANDBY = 1;

begin
  try
    SendMessage(GetForegroundWindow(), WM_SYSCOMMAND, SC_MONITORPOWER,
      MONITOR_OFF);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

end

JuanOrtega 07-12-2014 16:19:34

Funciona perfecto gracias por la ayuda dec.

dec 07-12-2014 16:31:39

Hola,

Cita:

Empezado por Lepuke (Mensaje 486228)
Funciona perfecto gracias por la ayuda dec.

¡No hay de qué! :)


La franja horaria es GMT +2. Ahora son las 23:26:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi