VC C++ API 模拟自动点击

::MessageBox(NULL,"1","1",MB_YESNO);HWNDhwnd1,hwnd2;hwnd1=::FindWindow(NULL,"1");hwnd... ::MessageBox(NULL,"1","1",MB_YESNO);
HWND hwnd1,hwnd2;

hwnd1=::FindWindow(NULL,"1");

hwnd2=::FindWindowEx(hwnd1,NULL,NULL,"是(Y)");

::::SetFocus(hWnd2);
UINT nCtrlID = ::GetDlgCtrlID(hWnd2);
::PostMessage(hWnd2, WM_COMMAND, (WPARAM)(BN_CLICKED << 16 | nCtrlID), (LPARAM)hWnd2);
::PostMessage(hWnd2,WM_MOUSEMOVE, MK_LBUTTON, MAKELONG(0,0) );
::PostMessage(hWnd2,WM_LBUTTONDOWN,MK_LBUTTON,MAKELPARAM(0,0));
::PostMessage(hWnd2,WM_LBUTTONUP,MK_LBUTTON,MAKELPARAM(0,0));

return 0;

为什么不能模拟自动点击呢 ?
就自己弹出一个消息框 然后模拟点击确定 要求源代码

写完还可以加50分!
展开
 我来答
sdfwds4
2010-01-17 · TA获得超过953个赞
知道小有建树答主
回答量:629
采纳率:0%
帮助的人:793万
展开全部
楼上的回答很正确,在执行MessageBox函数之后,程序会一直等待你选择后才执行后面的代码。试试使用多线程来实现,一个主线程弹出一个消息框,一个线程点击确定。试试:
#include <windows.h>

DWORD WINAPI ThreadFunc( LPVOID lpParam )
{
HWND hwnd1,hwnd2;
while(1)
{
Sleep(3000); // 每隔3秒去查看是否还有要点击的
hwnd1=::FindWindow(NULL,"1");
if (hwnd1 != NULL)
{
hwnd2=::FindWindowEx(hwnd1,NULL,NULL,"是(&Y)");
::PostMessage(hwnd2,WM_LBUTTONDOWN,MK_LBUTTON,MAKELPARAM(0,0));
::PostMessage(hwnd2,WM_LBUTTONUP,MK_LBUTTON,MAKELPARAM(0,0));

}
}
return 0;
}

int main(int argc, char *argv[])
{

::CreateThread(NULL, 0, ThreadFunc, NULL, 0, NULL); // 创建点击确定的线程
::MessageBox(NULL,"1","1",MB_YESNO);

return 0;
}
xhxh12345678
2010-01-17 · 超过23用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:59万
展开全部
MessageBox函数执行的时候内部有一个消息循环,在函数返回之前一直处于消息循环中,无法执行你后面的代码。你可将后面的代码放在另一个线程中执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式