能力值:
( LV3,RANK:20 )
|
-
-
2 楼
Delphi版的,没放帮你了。
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
网上c版的也不少,为啥要用delphi
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
驱动是C程序的,应用层调用是delphi的。
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
关键代码如下
procedure key(VirtualKey:WORD );
var
//kid:KEYBOARD_INPUT_DATA;
error:boolean;
BytesReturned:DWORD;
//Buffer:array[0..2]of byte;
//pBuffer:pword;
//dwOutput:DWORD;
MakeCode:Cardinal;
begin
//system.FillChar(kid,sizeof(kid),0);
//kid.Flags:=Flags;
MakeCode := WORD(MapVirtualKey(VirtualKey, 0));
//MakeCode:=$30;
error := DeviceIoControl(KeyMouse_Handle,
cardinal(IOCTL_KEY_DOWN),
@MakeCode,
sizeof(MakeCode),
nil,
0,
BytesReturned,
nil);
Sleep(100);
MakeCode := WORD(MapVirtualKey(VirtualKey, 0));
error := DeviceIoControl(KeyMouse_Handle,
cardinal(IOCTL_KEY_UP),
@MakeCode,
sizeof(MakeCode),
nil,
0,
BytesReturned,
nil);
if (not error) then showmessagefmt('从KeyMouse输入端口数据时出错:%d',[GetLastError]);
//result:=Buffer[0];
end;
执行DeviceIoControl老是返回错误87。不知道哪里有问题。驱动程序编译了,也启动了。
测试系统是WINXP SP2和WINXP SP3
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
帮你查了一下,87号是参数错误!结果已经很明显了,我不懂d,所以没法帮你排错...
死死盯着几个参数,反复推敲,一定会发现的,希望可以帮到你
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
谢谢回帖,搞不懂了,那个‘我做的模拟挂’这个帖子的代码运行没问题。但是现在这个就出错了。
里面的调用方法都差不的,我之所以想用这个是想做成64位的。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
64位下加载驱动搞定了吗
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
问题解决了,原因是因为开始定义数据的时候弄错了。改了就好了。谢谢各位的关注。
IOCTL_KEY_DOWN = (FILE_DEVICE_KEYMOUSE shl 16) +
($800 shl 2) + <=========这里错了。
METHOD_BUFFERED +
(FILE_ANY_ACCESS shl 14);
这个地方弄错了。
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
开机F8选"禁用驱动签名强制"启动就可以加载驱动了,现在的最主要问题是,如何跟踪kbdclass.sys中的
函数的特征码,我还不知道怎么弄。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
楼主好人啊,弄好了再发个给我们学习下吧
|
能力值:
( LV4,RANK:50 )
|
-
-
12 楼
发就发吧。留着也是留着,造福大家算了。记得在·有还原软件的系统中使用。不然驱动会被永久安装。
测试系统是winxp
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
谢谢了,64位下可以用吗
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
经我测试,貌似32位驱动不能在64位下加载...
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
看了下只有键盘的模拟,
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
学习一下!
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
太好了,正要用这个呢
|
|
|