14.11.2012, 16:59
|
Прохожий
|
|
Регистрация: 30.10.2012
Сообщения: 33
Репутация: 10
|
|
как создать поток в dll
делаю вот так:
Код:
library key;
uses
FastShareMem,Windows,transmite,main,Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Math;
type dlltimer = class(TThread)
protected
procedure Work;
procedure Execute; override;
end;
var
vartime: dlltimer;
SysHook : HHook = 0;
Wnd : Hwnd = 0;
{$R *.res}
procedure dlltimer.Execute;
begin
Synchronize(Work);
end;
procedure dlltimer.Work;
begin
//sleep(1000);
showmessage('работает таймер');
end;
function SysMsgProc(code : integer; wParam : word;
lParam : longint) : longint; stdcall;
begin
CallNextHookEx(SysHook, Code, wParam, lParam);
if code = HC_ACTION then
begin
Wnd := TMsg(Pointer(lParam)^).hwnd;
if TMsg(Pointer(lParam)^).message =WM_KEYDOWN then
case (TMsg(Pointer(lParam)^).wParam) of
37: begin
.....
end;
end;
end;
end;
procedure RunStopHook(State : Boolean) export; stdcall;
begin
if State=true then
begin
SysHook := SetWindowsHookEx(WH_GETMESSAGE,
@SysMsgProc, HInstance, 0);
dlltimer.create(false);
end
else// Иначе
begin
UnhookWindowsHookEx(SysHook);
SysHook := 0;
end;
end;
exports RunStopHook;
begin
end.
все компилится а сообщение в потоке dlltimer не выскакивает
|