Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
Delphi XE3 Enterprise
|
AW: WM_QUERYENDSESSION ohne Fenster
16. Nov 2012, 00:58
eine Minimalversion:
Delphi-Quellcode:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,classes,messages,dialogs,windows;
type
TWndProcClass = class
protected
procedure WndProc(var msg: TMessage);
public
WinHandle: HWND;
end;
Function ProcessMessage(var Msg: TMsg): Boolean;
begin
Result := False;
if PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then
begin
PeekMessageA(Msg, 0, 0, 0, PM_REMOVE);
Result := True;
if Msg.Message <> WM_QUIT then
begin
TranslateMessage(Msg);
DispatchMessageA(Msg);
end;
end;
end;
procedure ProcessMessages;
var
Msg: TMsg;
begin
while ProcessMessage(Msg) do {loop};
end;
procedure TWndProcClass.WndProc(var msg: TMessage);
begin
writeln('MSG:' + inttostr(msg.Msg));
msg.Result := -1;
end;
var
WndProcClass: TWndProcClass;
begin
WndProcClass := TWndProcClass.Create;
WndProcClass.WinHandle := AllocateHWnd(WndProcClass.WndProc);
writeln('HWND:' + InttoStr(WndProcClass.WinHandle));
while True do begin
Sleep(10);
processMessages;
end;
DeallocateHWnd(WndProcClass.WinHandle);
WndProcClass.Free;
end.
Aufrufbeispiel aus einer anderen Anwendung über das Handle, welches hier bei Writeln ausgegeben wurde
Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
begin
sendmessage(2689556,wm_close,0,0)
end;
Thomas Wassermann H₂♂ Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂♂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
|
|
Zitat
|