Дочернее окно обслуживается тем же потоком, что и его родительское окно. Так что sendInput send ничего не даст, если вы не вернетесь к насосу и не обработаете события, прежде чем снова отключите окно.
Если вы объясните, что вы пытаетесь достичь, мы, вероятно, могли бы дать вам лучший способ сделать это. Но в любом случае, по крайней мере, вам нужно запускать насос сообщений после SendEvents, пока не закончатся события.
Имейте в виду, что насос будет также перекачивать другие сообщения, так что это может привести к падению всей вашей конструкции. Но вот оно.
// process messages until the queue is empty.
//
MSG msg;
while (PeekMessage(&msg, NULL, 0, PM_REMOVE))
{
// make sure we don't eat the quit message.
if (WM_QUIT == msg.message)
{
PostQuitMessage();
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
О, и Sleep () не делает ничего полезного, вы можете его убрать.
Редактировать: этот код отправляется после вызова SendInput
и до отключения окна.
Вы также можете использовать его вместо Sleep()
, чтобы окно успокоилось до
Вы SendInput
.