SendMessage из DLL в окно в другом процессе в Vista - PullRequest
2 голосов
/ 29 мая 2009

Я вытаскиваю свои волосы на этом. Я пытаюсь отправить сообщение в окно в другом процессе. Я продолжаю получать отказ в доступе (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;
    }

Ответы [ 2 ]

2 голосов
/ 22 июня 2015

Похоже, это случай изоляции привилегий пользовательского интерфейса (UIPI) (то есть если ваша DLL загружена в другой процесс)

Использовать ChangeWindowMessageFilterEx в процессе получения. Я надеюсь, что это будет работать

2 голосов
/ 29 мая 2009

Это должно быть сообщение? Существует множество способов взаимодействия между различными процессами:

  • Трубы * * 1004
  • Головки
  • Общая память
  • Файлы
...