program project1;
uses
Windows;
var
HWndMain, HWndPopup: HWND;
const
CHotKeyShowId = 113000;
function MainProc(Wnd: HWND; Msg: UINT; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;
begin
if (Msg = WM_HOTKEY) and (WParam = CHotKeyShowId) then
begin
ShowWindow(HWndMain, SW_SHOW);
ShowWindow(HWndPopup, SW_SHOW);
// SetForegroundWindow(HWndMain);
SetForegroundWindow(HWndPopup);
end;
case Msg of
WM_CLOSE:
UnregisterHotKey(HWndMain, CHotKeyShowId);
WM_DESTROY:
begin
PostQuitMessage(0);
Exit;
end;
WM_KEYDOWN:
if VK_ESCAPE = WParam then
begin
ShowWindow(HWndMain, SW_HIDE);
ShowWindow(HWndPopup, SW_HIDE);
end;
WM_LBUTTONDOWN:
MessageBox(HWndMain, PChar('Left Mouse Button'), PChar('MyProgram'), MB_OK);
end;
Result := DefWindowProc(Wnd, Msg, WParam, LParam);
end;
var
WndClass: TWndClass;
Msg: TMSG;
HWndForHideMainFromTaskBar: HWND;
begin
WndClass.lpszClassName := 'MyWND';
WndClass.lpfnWndProc := @MainProc;
WndClass.hInstance := hInstance;
WndClass.hbrBackground := COLOR_WINDOW;
RegisterClass(WndClass);
HWndForHideMainFromTaskBar := CreateWindow(WndClass.lpszClassName, '', WS_POPUP,
0, 0, 0, 0, 0, 0, hInstance, nil);
HWndMain := CreateWindow(WndClass.lpszClassName, 'My API Window',
WS_OVERLAPPEDWINDOW or WS_VISIBLE, 500, 500, 500, 300, HWndForHideMainFromTaskBar,
0, hInstance, nil);
HWndPopup := CreateWindow(WndClass.lpszClassName, 'My Second Window',
WS_VISIBLE, 200, 500, 500, 300, HWndMain, 0, hInstance, nil);
if not RegisterHotKey(HWndMain, CHotKeyShowId, MOD_CONTROL, VK_BACK) then
MessageBox(HWndMain, PChar('HotKey Failed'), PChar('MyProgram'), 0);
while GetMessage(@Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.