Я вытаскиваю свои волосы на этом. Я пытаюсь отправить сообщение в окно в другом процессе. Я продолжаю получать отказ в доступе (0x5) из GetLastError () после вызова SendMessage или PostMessage или PostThreadMessage. Я попытался отключить UAC. Я также учел UIPI, обеспечив, чтобы уровни целостности соответствовали всем процессам. (Я проверил с помощью Process Explorer из SysInternals, сейчас MS) Я также отключил Защитник Windows, но не повезло. Я могу просто отправить сообщение в окно изнутри процесса, но снаружи я получаю bupkus! Это похоже на проблему безопасности, но я понятия не имею, что это такое, поскольку оба процесса имеют одинаковый уровень целостности (средний - десятичный 8192)
Код из DLL, отправляющей сообщение
UINT MsgCode = ::RegisterWindowMessage(_T("MESSAGE_CODING_STRING"));
::ChangeWindowMessageFilter(MsgCode,MSGFLT_ADD);
::PostMessage(hwnd1,MsgCode,(WPARAM)1,(LPARAM)1);
DWORD errorcode = ::GetLastError();
Выбранный код из окна получения
BEGIN_MESSAGE_MAP(CMessageMailBox, CDialog)
ON_REGISTERED_MESSAGE(MsgCode, TextFromApp)
END_MESSAGE_MAP()
// Class Constructor
CMessageMailBox::CMessageMailBox(CWnd* pParent /*=NULL*/)
: CDialog(CMessageMailBox::IDD, pParent){
MsgCode = ::RegisterWindowMessage(_T("MESSAGE_CODING_STRING"));
::ChangeWindowMessageFilter(MsgCode,MSGFLT_ADD);
}
//Message Handler
afx_msg LRESULT CMessageMailBox::TextFromApp(WPARAM wParam,LPARAM lParam){
::MessageBox(NULL,L"message recieved",L"yea!",MB_OK);
return 0L;
}