将function SetHandle(AHandle: THandle): Boolean; stdcall;
改成
function SetHandle(AHandle: THandle): Boolean; stdcall;
begin
Result:= True;
try
Application.Handle := AHandle;
except
Result:= False;
end;
end;
试试。
改成
function SetHandle(AHandle: THandle): Boolean; stdcall;
begin
Result:= True;
try
Application.Handle := AHandle;
except
Result:= False;
end;
end;
试试。
解决方案 »
- 请问cxgrid怎么凸显多个筛选列表头,像excel一样,筛选一列,这列表头有个标记,多列同时筛选则多列都有一个标记
- 提示“datasource1:circular datalinks are not allowed"这是什么意思?
- 关于 拖动 dbGrid 垂直滚动条的问题
- 请问在DBgrid中如何不显示SQL数据表中日期时间型字段的日期部分
- 请教高手访问ACCESS数据库语句的小问题,在线等待,多多谢!!
- 请问如何动态改变DBGrid里某一行的值????
- 有谁用过Ehlib3.0呀?
- 一个毕设很麻烦的问题就是用delphi怎么编程是关于计算机组成原理数据通路的实验
- 可怜可怜我吧!那位能具体解释一下SQL中的外连接的具体含义!!!
- 如何报价,给个意见
- 大楼IP分配的问题
- 创建任意形状的Hint
程序里安装的是一个全局钩子,全局钩子都是在dll中的。
我们知道应用程序在调用dll的时候都是把dll的内存映射到自己的4g的内存空间中的,而且最重要的是dll中的全局数据在进程间是不能共享的,所以每一个调用该dll的应用程序都有一份dll的全局数据,本例中为两个变量hHk: HHOOK; GetHandle: THandle; 所以为什么会出现双击不同的应用程序会产生不同的结果就可以解释了。另外,从ShowMessage的caption上也可以看出这一点,因为ShowMessage的caption用的是 Application.Title; 我们一般都认为hook只不过是一个过程而以,而忽略了他的dll本性。本想改过来,可是在进程间共享全局数据有点难度