VC C++ API 模拟自动点击

2025-04-22 22:13:31
推荐回答(2个)
回答1:

楼上的回答很正确,在执行MessageBox函数之后,程序会一直等待你选择后才执行后面的代码。试试使用多线程来实现,一个主线程弹出一个消息框,一个线程点击确定。试试:
#include

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;
}

回答2:

MessageBox函数执行的时候内部有一个消息循环,在函数返回之前一直处于消息循环中,无法执行你后面的代码。你可将后面的代码放在另一个线程中执行。