你好我做在delphi XE2的功能,關閉顯示器,我做它在一個控制檯應用程序,他在一個圖形應用程序做了沒有問題,但是當你踏進控制檯應用程序給了我這些錯誤:關閉監視器控制檯與德爾福XE2
Undeclared identifier: 'Application'
Undeclared identifier: 'WM_SYSCOMMAND'
來源:
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.
,我可以在一個控制檯應用程序做到這一點?
嗯,首先,因爲它是一個控制檯應用程序,'Application.Initialize'和'Application.Run'永遠不會被調用。另外,你甚至在你的'用法'中沒有必要的單位。但這不會自動解決您的問題。你的問題的基礎是你需要傳遞一個合適的句柄來發送消息。不幸的是我無法在我的環境中測試這個,因爲我的IDE是通過遠程桌面進行的,因此我不想冒着不可預知的結果冒着不在IDE前面的機器:-)但是'Application'駐留在'形式'單位。 – 2014-12-07 02:36:52
'Application'在'Forms'單元中聲明,它不在你的uses子句中。控制檯應用程序默認沒有消息循環,也沒有窗口句柄,所以沒有什麼可以使用'SendMessage'。控制檯應用程序沒有'Application'來初始化或運行。 – 2014-12-07 04:09:06
然後我不能在控制檯中做到這一點? – adsdsa 2014-12-07 04:44:29