读书人

delphi dll项目中 dpr和pas的全局变量

发布时间: 2013-07-16 22:38:05 作者: rapoo

delphi dll项目中 dpr和pas的全局变量怎么设置?

这个是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



unit Unit1;
interface
implementation

var // 全局变量
myInt:Integer = 100; // 可以直接初始化
myStr:String;
end.




// dll 项目的 dpr

library Project1;
uses
SysUtils,
Classes,
unit1 in 'unit1.pas' {myInt} {myStr};// 引入 unit1单元的两个全局变量

{$R *.res}

begin
end.

读书人网 >.NET

热点推荐