delphi dll项目中 dpr和pas的全局变量如何设置
delphi dll项目中 dpr和pas的全局变量怎么设置?
这个是dpr里面的部分代码
这个是pas里面的部分代码
gamehwid:=h;//这里把参数给这个变量 gamehwid 这个是dpr中的代码 这个数据在其他的pas中用到 怎么定义这个变量? 求了解的帮下这个忙。
------解决方案--------------------
pas文件中定义全局变量,在dll dpr中 uses xxx.pas {变量}; ,如果需要多个变量就 {变量1}{变量2}{变量n}...
例如
这个是dpr里面的部分代码
Function SetHook(h:HWND):boolean;stdcall;---h:HWND是一个传入的参数
var
GameTid:THandle;
begin
gamehwid:=h;//这里把参数给这个变量 gamehwid 这个是dpr中的代码 这个数据在其他的pas中用到 怎么定义这个变量?
Result:=false;
if (windows.IsWindow(h)=false) then
begin
Messagebox(0,'无效窗口句柄','error',0);
exit;
end;//如果未打开则退出
GameTid:=GetWindowThreadProcessId(h);
keyhhk:=SetWindowsHookEx(WH_GETMESSAGE,@GetMsgProc,HInstance,GameTid);
if keyhhk>0 then
Result:=true;
end;
procedure DllEnterProc(reason:integer);
begin
case reason of
windows.DLL_PROCESS_ATTACH: begin end;
windows.DLL_PROCESS_DETACH: begin Form1.Free;form1:=nil; end;
end;
end;
exports //导出函数
SetHook;
begin
dllProc:=@DllEnterProc;
end.
这个是pas里面的部分代码
if gamehwid>0 then //调试的时候发现这个数据被重置为0,导致后面的调用失败。
begin
SwitchToThisWindow(gamehwid,true);
delay1(3000);
keybd_event(65,0,0,0);
keybd_event(65,0,KEYEVENTF_KEYUP,0);
delay1(4000);
tab();
delay1(4000);
delay1(4000);
end;
gamehwid:=h;//这里把参数给这个变量 gamehwid 这个是dpr中的代码 这个数据在其他的pas中用到 怎么定义这个变量? 求了解的帮下这个忙。
Delphi
全局变量
------解决方案--------------------
pas文件中定义全局变量,在dll dpr中 uses xxx.pas {变量}; ,如果需要多个变量就 {变量1}{变量2}{变量n}...
例如
// dll 项目中的一个单元 unit1