gpt4 book ai didi

c++ - SendMessage 从 DLL 到 Vista 中另一个进程中的窗口

转载 作者:搜寻专家 更新时间:2023-10-31 01:23:42 24 4
gpt4 key购买 nike

我在这个问题上大发雷霆。我正在尝试向另一个进程中的窗口发送消息。在调用 SendMessage 或 PostMessage 或 PostThreadMessage 后,我不断从 GetLastError() 收到访问被拒绝 (0x5)。我试过关闭 UAC。我还通过确保完整性级别在各个流程中匹配来说明 UIPI。 (我使用 SysInternals 的 Process Explorer 检查过,现在是 MS)我也关闭了 Windows Defender,但没有成功。我可以从过程内部向窗口发送消息就好了,但是从外部我得到了 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;
}

最佳答案

必须是消息吗?不同进程之间有多种通信方式:

  • 管道
  • socket
  • 共享内存
  • 文件

关于c++ - SendMessage 从 DLL 到 Vista 中另一个进程中的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/924215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com