按键精灵有用过的吗
它是用
SetWindowsHookEx(WH_JOURNALRECORD。。。
以及
SetWindowsHookEx(WH_JOURNALPLAYBACK这两种hook实现的么?
我用这两种hook做了试例,但在回放的过程中,就不能控制鼠标了,但按键精灵中回放时,还是可以控制鼠标。
这是怎么回事?是我的代码有问题,还是他们根本不是用这种hook实现的?
[解决办法]
不曾用过,
看高手招.
[解决办法]
不是吧?直接先把窗口设成最前,然后给个按钮消息的。
我用C++最近二天试了一下,下面只是控制键盘。我也刚学
void CFSDlg::OnTest()
{
// TODO: Add your control notification handler code here
HANDLE Process=NULL;
if( MyOpenProcess( &Process ) )//打开进程
{
AfxMessageBox( "某某游戏 未运行! ");
return;
}
HWND cWnd = ::FindWindow(NULL, "**游戏 ");
if( cWnd == NULL )
return ;
lBaseAddr=0x01B18AE0;
/*
if( ReadProcessMemory(Process,(LPVOID)(lBaseAddr),&lRenAdd,4,NULL) == TRUE )//读取游戏 内存数据
{
CString aaa;
aaa.Format( "%d ",lRenAdd);
::AfxMessageBox(aaa);
}
CloseHandle(Process);
*/
//这是关键
::SetForegroundWindow(cWnd);//设置 该游戏向前
::SetActiveWindow(cWnd);//该游戏在WINDOWS中成激活窗口状态
int iKey= 49;//49是键盘的1键
::keybd_event(VK_F5,0,0,0);//按下1键
::keybd_event(VK_F5,0,KEYEVENTF_KEYUP,0);//1键返回
}
[解决办法]
不用hook
按键精灵用的是VBScript + mouse_event +keydb_event做的
具体原理可以去看这个
http://dev.csdn.net/article/63/63483.shtm
[解决办法]
用SendInput,keydb_event过时了