Всем привет!
Подскажите, пожалуйста, как мне отправить строку от родительского процесса дочернему при помощи WM_COPYDATA
В родительском процессе есть поле line edit и слот с обработкой:
void MainWindow::on_lineEdit_textChanged(const QString &arg1)
{
HWND hChild = FindWindow(0, L"Child");
HWND hParent = FindWindow(0, L"Parent");
if ( hChild != 0)
{
wchar_t str[] = L"X";
COPYDATASTRUCT data;
data.cbData = sizeof(str);
data.dwData = 33;
data.lpData = str;
SendMessage(hChild, WM_COPYDATA, (WPARAM)hParent, (LPARAM)&data);
}else
MessageBox(0, L"Cann't find window child", L"error", MB_OK);
}
У дочернего процесса такой обработчик:
bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
MSG* msg = static_cast<MSG*>(message);
if(msg->message == WM_COPYDATA)
{
COPYDATASTRUCT* data = reinterpret_cast<COPYDATASTRUCT*>(msg->lParam);
emit CopyData(QString((char*)data->lpData));
result = 0;
return true;
}
return false;
}
у дочернего процесса есть виджет qLabel.
Связь между главным окном главного окна и label происходит при помощи:
connect(this, SIGNAL(CopyData(QString)), ui->label, SLOT(setText(QString)));
В итоге у меня появляется в label только буква 'X', а мне бы хотелось, чтоб в родительском процессе я ввел в Line edit строку и она отобразилась в label у дочернего процесса.
Как можно это сделать?
Спасибо.