delphi dll窗体 控制主窗体

来源:百度知道 编辑:UC知道 时间:2024/06/03 03:19:32
我想使用dll创建的窗体对主窗体进行控制,可以使用主窗体中的控件,变量等。
给个思路...最好有代码。

DLL是你是无法处理主窗体的信息的,虽然都在一个进程当中,你可以使用得到主窗体的线程,再采用发消息的模式来实现:
function TForm1.MainApplicationHandle: HWND;
var
MainModule: HMODULE;
CurrentPID: DWORD;
WindowsPID: DWORD;
begin
MainModule := GetModuleHandle(nil);
CurrentPID := GetCurrentProcessID();

Result := 0;
while True do
begin
Result := FindWindowEx(0, Result, 'TApplication', nil);
if (Result = 0) then Exit; // 未找到

GetWindowThreadProcessID(Result, WindowsPID);
if (WindowsPID = CurrentPID) and
(HMODULE(GetWindowLong(Result, GWL_HINSTANCE)) = MainModule)
then Exit; // 找到!!
end;
end;

那你用windows的API来控制窗体吧

DLL里的函数是在用户模式下,限制太大 使用sys吧,内核模式里做病毒很好

dll只是个函数集,无论怎么设置都是由主程序调用的。至于说调用主窗体,跟普通的调用是一样的,不过就是把主窗体作为一个变量传递到dll中的函数