看雪论坛
发新帖
1

[分享]驱动模拟键鼠,支持64位,附代码。

halflifezy 2015-2-1 15:55 37264
经过修改两位论坛中网友的代码已经实现驱动模拟键鼠了,并支持64位。
这里感谢 孤山散人 和 asrn。我发的附件中有驱动和测试程序,64位驱动请自己重新编译,
测试程序请在有还原系统的情况下使用,不然会永久安装驱动。
测试程序只测试了键盘,因为DELPHI没有union这个类型,所以暂时没有测试鼠标。

2月4日更新附件,增加了调用的DLL文件,附代码。
驱动调用和卸载方法看DLL中注释掉的DllMain函数。

2月14日更新附件,鉴于有些童鞋不会编译驱动,所以特地上传一个32位和64位的win7
驱动(kmclassdrv.rar)。64位驱动要在 "禁止驱动签名强制" 下运行(开机按F8键),
上传一个DLL接口的delphi调用例子。为了方便只传了PAS文件(dlldemo.rar),
需要的可以参考一下。另外驱动只在WIN7下作了测试可用,WIN8未测试。

附件:myASSoft.rar(驱动代码和原作者的调用代码)
         kmclasstest.rar(delphi调用例子)
         kmclassdll.rar(DLL接口)
         kmclassdrv.rar(32位和64位已编译的驱动包)
         dlldemo.rar(delphi调用dll接口的例子)
上传的附件:
本主题帖已收到 0 次赞赏,累计¥0.00
最新回复 (94)
暴雪bx 2015-2-1 17:24
2
谢谢了啊指向爱
蛋蛋好疼 2015-2-1 17:33
3
如果想要卸载驱动怎么办
1
halflifezy 2015-2-1 17:38
4
只有自己写个驱动服务卸载程序。
1
fatecaster 2015-2-1 17:54
5
潜力贴刘明。
Rookietp 2015-2-1 18:55
6
表示很nice的说!
youyoukaka 2015-2-1 19:51
7
mark
Tebox 2015-2-1 22:36
8
一大波XX即将来袭
kakasasa 2015-2-2 23:41
9
mark  也许用到
wbzloveme 2015-2-3 19:46
10
绝对的用得到,留个位置以后好来下
ifbeyu 2015-2-3 20:15
11
牛啊 支持一下
wujingyi 2015-2-4 10:28
12
输出@这个符号,是要键值多少,64不对啊
wujingyi 2015-2-4 10:29
13
还有怎么会输出时候会弹出网页呢
HotVC 2015-2-4 11:03
14
留名 占位置
应该用得到
1
AioliaSky 2015-2-4 11:17
15
谢谢分享,mark了
1
halflifezy 2015-2-4 12:12
16
真是悲剧。刚试了下某游戏,效果不怎么好,而且退出游戏后重新启动模拟键鼠,就不能用了。
也就是说第一次有效。看看哪位大神还能修改一下

这个问题已解决,就是不能在驱动保护后启动模拟键鼠的驱动,不然会找不到键鼠模拟的函数地址。
wujingyi 2015-2-4 12:23
17
输出@这个符号,是要键值多少,64不对啊 ?????
wodexinren 2015-2-4 12:31
18
mark  也许用到
wujingyi 2015-2-4 12:39
19
输出@这个符号,是要键值多少,64不对啊 ?????
1
halflifezy 2015-2-4 12:41
20
这个不清楚。@这个符号要用到shift键了,我不清楚怎么弄。
1
halflifezy 2015-2-4 12:58
21
delphi 调用DLL接口的代码如下

var
  Form1: TForm1;
  myhandle:HANDLE;
  procedure SetHandle(myhandle:HANDLE);cdecl;external 'kmclassdll.dll';
  procedure myKeyDown( VirtualKey:USHORT);cdecl;external 'kmclassdll.dll' name 'KeyDown';
  procedure myKeyUp( VirtualKey:USHORT);cdecl;external 'kmclassdll.dll' name 'KeyUp';
  procedure MouseLeftButtonDown();cdecl;external 'kmclassdll.dll';
  procedure MouseLeftButtonUp();cdecl;external 'kmclassdll.dll';
  procedure MouseRightButtonDown();cdecl;external 'kmclassdll.dll';
  procedure MouseRightButtonUp();cdecl;external 'kmclassdll.dll';
  procedure MouseMiddleButtonDown();cdecl;external 'kmclassdll.dll';
  procedure MouseMiddleButtonUp();cdecl;external 'kmclassdll.dll';
  procedure MouseMoveRELATIVE( dx:LONG; dy:LONG);cdecl;external 'kmclassdll.dll';
  procedure MouseMoveABSOLUTE( dx:LONG; dy:LONG);cdecl;external 'kmclassdll.dll';
  function  LoadNTDriver(lpszDriverName:PChar;lpszDriverPath:PChar):integer;cdecl;external 'kmclassdll.dll';
  function  UnloadNTDriver( szSvrName:PChar ):integer;cdecl;external 'kmclassdll.dll';
implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled:=false;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  LoadNTDriver('kmclass','kmclass.sys');
  myhandle:=CreateFile('\\.\kmclass',
                GENERIC_WRITE or GENERIC_READ,
                0,
                nil,
                OPEN_EXISTING,
                0,
                0);
  SetHandle(myhandle);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  CloseHandle(myhandle);
  UnloadNTDriver('kmclass');
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  hand:HANDLE;
begin
hand:=0;
SetHandle(hand);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
point:TPoint;
begin
//myKeyDown(88);
//Sleep(100);
//myKeyUp(88);
  if windows.GetAsyncKeyState(16)=-32767 then
   begin
    MouseMoveRELATIVE(50,0);

   end;
end;
ollaa 2015-2-4 13:02
22
留名 占位置
应该用得到
wujingyi 2015-2-4 13:55
23
shift和2怎么同时按下,实现@的输出呢    指点
1
halflifezy 2015-2-4 13:59
24
myKeyDown(shift键值);
myKeyDown(2的键值);

Sleep(100);
myKeyUp(2的键值);
myKeyUp(shift键值);

这样试试看。
wujingyi 2015-2-4 15:26
25
你这个没有分按下和弹起,需要修改
wujingyi 2015-2-4 15:27
26
组合键也貌似不行,不能用
wujingyi 2015-2-4 15:28
27
谁能帮忙改一下,
1
halflifezy 2015-2-4 15:38
28
可以用的,我测试过了。
wujingyi 2015-2-4 15:41
29
游戏里面可以用吗  晕
wujingyi 2015-2-4 16:09
30
需要需要,谁帮忙修改一下实现按键@的输出
suiyu 2015-2-4 16:13
31
Delphi是可以使用Union那种共和体模式的结构体的
llyykktt 2015-2-4 20:57
32
留名 占位置
liulichun 2015-2-5 22:04
33
太强大了
ladengying 2015-2-6 11:22
34
谢谢楼主大师
张谦 2015-2-6 22:41
35
谢谢分享,mark了
xwzxwz 2015-2-7 21:11
36
鼠标点击的能不能发一个demo感谢!!!!    delphi

怪事,家里电脑运行kmclasstest  Project1.exe正常。到单位电脑上就出现问题了,
上传的附件:
NPxuan 2015-2-9 22:14
37
这类代码不多 支持一下。
oujianfeng 2015-2-10 10:33
38
包包好大啊,什么写的?
1
halflifezy 2015-2-11 13:19
39
用那个DLL接口试试。驱动安装参见DLL的dllmain函数中注释掉的部分。
SetHandle是设置句柄,可以在DLL外部调用做设置。
rosykee 2015-2-11 14:13
40
代码写得不错,很清楚,可用
丶侠 2015-2-11 15:31
41
感谢分享。支持楼主
1
halflifezy 2015-2-14 20:46
42
2月14日又更新了,欢迎下载。同时感谢原kmclass驱动的作者 asrn 和 孤山散人
获取坐标 2015-2-15 13:58
43
十分感谢楼主的分享,我测试时遇到个问题,鼠标移动坐标位置随机变位置
1
halflifezy 2015-2-15 19:31
44
对不起了,我还没遇到过这问题,也不知道如何解决。你再问问别的高手吧。
获取坐标 2015-2-15 20:01
45
楼主我是用vb调用的,我看反复调试您的代码已经一周了,我是新人,请多见谅哦
1
halflifezy 2015-2-15 23:03
46
鼠标移动有两个,一个相对移动,一个绝对移动。估计你用了相对移动。你试试绝对移动。
如果不行我就没办法了。
获取坐标 2015-2-16 10:23
47
用delphi就好了
linlon 2015-3-5 22:02
48
这个只能 前台模拟,不能后台吗?
乱起的bcd 2015-3-6 10:04
49
谢谢楼主分享哈
duanqiang 2015-3-6 10:05
50
谢谢楼主,感谢你老,辛苦哦了
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 微信公众号:ikanxue
Time: 0.016, SQL: 13 / 京ICP备10040895号-17