我可以给你提供一个思路,不过需要DLL和调用方进行配合,就像你需要的那样,在DLL的入口注册热键,然后在加载DLL的程序的WndProc函数里面处理WM_HOTKEY消息并调用DLL提供的函数。
这是一个非常简单的demo:
DLL代码
[Delphi] 纯文本查看 复制代码 library dhklib;
uses
Windows;
var
atom_id:ATOM;
begin
atom_id:=GlobalAddAtomW('dllhotkey');
RegisterHotKey(0,atom_id,MOD_CONTROL or MOD_SHIFT, VK_F4);
end.
加载方代码:
[Delphi] 纯文本查看 复制代码 program dhkloader;
uses
Windows;
var
lib:THandle;
msg:TMsg;
begin
lib:=LoadLibrary('dhklib.dll');
while GetMessage(msg,0,0,0) do
begin
if msg.message = WM_HOTKEY then
Writeln('Got Hot Key');
end;
end.
显然这里的输出一行可以换成DLL提供的函数。 |