Мы отправляем сообщение Win32 от одного процесса (process01) другому (process02).
Console.WriteLine(targetHandle); // 0x3072a
SendMessageTimeout(
targetHandle,
WM_COPYDATA,
IntPtr.Zero,
ref cds,
SendMessageTimeoutFlags.SMTO_NORMAL,
timeoutMs,
out result);
Мы установили, что process01 отправляет правильный дескриптор.Иногда сообщение приходит в process02, а в другое время оно не приходит.
// SomeForm.cs
protected override void WndProc(ref Message m) {
// Sometimes the message arrives here
Console.WriteLine(m); // 0x3072a
}
Когда сообщение не приходит в process02, сообщение об ошибке в process01 отсутствует.Он просто молча терпит неудачу.
Что может быть причиной этого?Как мы можем далее устранить это?Мы использовали Spy ++ для поиска и прослушивания сообщений для получателя.Spy ++ всегда находит процесс по его дескриптору.Когда сообщение не отображается в SomeForm.WndProc
, оно также не отображается в сообщениях Spy ++.