12. oktober 2008 - 17:07
Der er
4 kommentarer og
1 løsning
Form.Handle ved Active Forms
Hej
Jeg har en Active Form, hvor jeg hva. RegisterHotKeys disabler Print Screen-funktion, så længe ActiveX objektet er loadet.
Imidlertid vil jeg gerne kunne reagere på, når brugeren trykker knappen ned. Dette gøres jo normalt med TForm1.WMHotKey(var Msg: TWMHotKey); men for at dette virker skal formens handle anvendes:
RegisterHotKey (Handle, idHOT_SNAPWINDOW, 0, VK_SNAPSHOT);
Form1.Handle er imidlertid af en eller anden grund ikke tilgængelig, når man arbejder med ActiveX. Er der nogen der ved, hvordan man løser dette?
/Hallandsen
12. oktober 2008 - 21:23
#3
med på en lytter.
Alternativt kan du lave et skjult vindue, har jeg i hvert fald brugt ved datamoduler, men kan godt se at activex formen burde have et handle.
program Project1;
uses
windows, messages;
var
WndCls : wndclass;
MsgWnd : cardinal;
msg : tagMsg;
function WndProc(wnd, msg : cardinal; wParam, lParam : integer) : integer; stdcall;
begin
// here you can process messages
result := DefWindowProc(wnd, msg, wParam, lParam);
end;
begin
ZeroMemory(@WndCls, sizeof(WndCls));
WndCls.lpfnWndProc := @WndProc;
WndCls.hInstance := hInstance;
WndCls.lpszClassName := 'msg wnd';
RegisterClass(WndCls);
MsgWnd := CreateWindowEx(0, WndCls.lpszClassName, nil, 0, 0, 0, 0, 0, 0, 0, hInstance, nil);
// MsgWnd now can be used as handle to message window
while GetMessage(msg, 0, 0, 0) do DispatchMessage(msg);
DestroyWindow(MsgWnd);
UnregisterClass(WndCls.lpszClassName, hInstance);
end.