Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: virtus от Март 10, 2014, 10:21



Название: Can not find you window
Отправлено: virtus от Март 10, 2014, 10:21
Здравствуйте,

не получается отправить пользовательское сообщение дочернему потоку. Появляется сообщение: Can not find you window.

Вот как я отправляю из родительского процесса:

Код:
void MainWindow::on_pushButtonUserMessage_clicked()
{
    PROCESS_INFORMATION pi;
    STARTUPINFO si;
    wchar_t name[] = L"..\\HelloWorld\\debug\\HelloWorld.exe";
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    if(!CreateProcess(0,
                      name,
                      0,
                      0,
                      TRUE,
                      0,
                      0,
                      0,
                      &si,
                      &pi))
    {
        return;
    }

    HWND h = FindWindow(0, L"Child");
    if(h!=0)
    {
        UINT MyMessage=::RegisterWindowMessage(L"User message");
        if (MyMessage==0)
        {
            MessageBox(0, L"Impossible register message", L"", MB_OK);
            return;
        }
        SendMessage(h, MyMessage, 1, 2);
    }
    else MessageBox(0, L"Can not find you window", L"", MB_OK);

    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}

Поле windowTitle у дочернего процесса - Child.
В чем может быть причина такого сообщения?

Спасибо.


Название: Re: Can not find you window
Отправлено: Old от Март 10, 2014, 10:26
Скорее всего процесс не успевает стартовать, а вы уже пытаетесь найти его окно.


Название: Re: Can not find you window
Отправлено: virtus от Март 10, 2014, 10:44
да, дело было в этом. Разнес запуск процесса и отправку сообщения по двум pushButton  и все заработало. Спасибо большое!