我有一个DLL,在入境点,即入境点删除某些代码。
procedure MainDLL(Reason: Integer);
begin
{ ... Code here ... }
end;
begin
DLLProc := @MainDLL;
end.
现在,我想从外部申请中将一些价值观带给LL的切入点。 我试图在LLL内部建立一个隐蔽的窗口,例如:
const
WM_JAJCO = WM_USER + 1024;
type
TWnd = class(TObject)
class procedure DLLWndProc(var Msg: TMessage);
end;
{ ... }
class procedure TWnd.DLLWndProc(var Msg: TMessage);
var
Tmp: DWORD;
begin
if (Msg.Msg = WM_JAJCO) then
begin
PNewHandle := Msg.LParam;
CreateThread(nil, 0, @Starter, nil, 0, Tmp);
Msg.Result := 0;
end else
Msg.Result := DefWindowProc(MyHnd, Msg.Msg, Msg.WParam, Msg.LParam);
end;
// in the entry point
MyHnd := AllocateHWND(TWnd.DLLWndProc);
然后,在我开始申请电话时,我使用:
SendMessage(FindWindow( TPUtilWindow , nil), WM_USER + 1024, 0, wi.WndHandle);
Application.ProcessMessages();
但是,LLL公司内部创建的窗口似乎没有得到这一信息。 你们是否知道为什么?
If that s a bad method and you have a different solution, please let me know.