首页
社区
课程
招聘
[旧帖] 按键精灵的SayString是怎么实现的 0.00雪花
发表于: 2015-12-21 12:14 5248

[旧帖] 按键精灵的SayString是怎么实现的 0.00雪花

2015-12-21 12:14
5248
小弟编程新手,最近接触到按键精灵,发现按键精灵的SayString命令很无敌,想知道实现的原理,不吝赐教,谢谢。
下面代码在记事本可以,但是在某些地方是不可以的,然而按键精灵的SayString命令是可以的
       HWND wnd;
        wnd=GetForegroundWindow();
        DWORD SelfThreadId=GetCurrentThreadId();
        DWORD ForeThreadId=GetWindowThreadProcessId(wnd,NULL);
        if(!AttachThreadInput(ForeThreadId,SelfThreadId,true))
        {
                return 0;
        }//附加线程
        wnd=GetFocus();//获取具有输入焦点的窗口句柄
        if(!::IsWindow(wnd))
        {
                return 0;
        }
        AttachThreadInput(ForeThreadId,SelfThreadId,false);
        return ::SendMessage(wnd,WM_CHAR,(WPARAM)'w',0);

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
1、 用VirtualAllocEx 在目标进行 分配一块区域,然后用 WriteProcessMemory 写入你要输入的数据。 然后调用 SendMessage 就可以了

2、WM_COPYDATA 也可以吧
2015-12-23 11:08
0
雪    币: 297
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没有动到内存
2015-12-29 15:59
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
用VirtualAllocEx 在目标进行 分配一块区域,然后用 WriteProcessMemory 写入你要输入的数据。 然后调用 SendMessage
2016-1-29 04:20
0
游客
登录 | 注册 方可回帖
返回
//