发送消息WM_SETTEXT不适用于 MFC 应用程序的另一个应用程序
SendMessage WM_SETTEXT does not work on another application from MFC application
我正在尝试从C++ MFC应用程序设置另一个应用程序的编辑控件中的文本。
如果另一个应用程序是记事本,我的代码工作正常,但它在我需要它处理的应用程序上不起作用。当我无法WM_SETTEXT工作时,我想可能是应用程序正在将消息过滤到控件,并且由于键盘输入有效,我尝试发送键盘消息。那也行不通。我通过在 Spy++ 中记录消息来验证窗口是否确实接收键盘输入。我做错了什么或错过了什么?
if (g_IPAdressHwnd != 0) // g_IPAdressHwnd is the handle to the Edit control
{
CWnd *wnd = CWnd::FromHandle(g_IPAdressHwnd);
wchar_t buff[256];
wchar_t windowText[256];
wchar_t className[256];
BOOL b = IsWindowUnicode(wnd->GetSafeHwnd()); // returns true
GetClassName(wnd->GetSafeHwnd(), className, 200); // returns "WindowsForms10.EDIT.app.0.378734a"
wnd->GetWindowText(windowText, 256); // does not work
wnd->SendMessage(WM_GETTEXT, 256, (LPARAM)buff); // this works
wcscpy_s(buff, L"Foo!");
wnd->SendMessage(WM_SETTEXT, 256, (LPARAM)buff); // does not work
wnd->SendMessage(WM_CHAR, L'A', 0); // does not work
}
我在SendMessage((之后调用了GetLastError((,即使SendMessage((返回0。最后一个错误是 5,访问被拒绝。由UIPI引起。
我的应用程序需要在更高的完整性级别运行。
事实证明,我只需要以管理员身份运行Visual Studio,这反过来又以管理员身份在调试模式下运行我的应用程序。这也意味着最终应用程序将始终需要在管理员模式下运行才能工作,但这很好。
相关文章:
- 在 1 个服务器 n 客户端套接字 C++ MFC 应用程序中更新数据的客户端
- 如何在 MFC 应用程序中启动 ZeroMQ 线程?
- 视窗 10 :笔(手写笔)在 MFC 应用程序上不起作用
- 从 MFC C++ 6.0 应用程序迁移到 VS 2005
- C++ - 从 MFC 应用程序启动记事本,并将其默认标题从 "Untitled - Notepad" 更改为其他内容
- 由于选项卡顺序的原因,鼠标光标总是得到错误的hwnd-MFC应用程序
- 在网格视图中显示数据 - 基于 MFC c++ 对话框的应用程序
- MFC功能区主页按钮双击关闭应用程序
- 使用参数 + stdout + stderr 从命令行调用 MFC 应用程序
- 在 MFC 应用程序中实现 IServiceProvider
- 如何在MFC对话框应用程序中默认将复选框设置为选中?
- 基于 MFC 对话框的应用程序无法调用对话框两次
- 将数组/对象/结构列表从C#库中传递给C MFC应用程序
- 无论如何,是否可以确定MFC应用程序是通过PC重新启动或用户单击应用程序快捷方式开始的
- 如何在MFC多字节应用程序中显示西里尔文本?
- 如何仅从另一个 MFC 应用程序打开 MFC 应用程序
- 如何将子窗口(MFC 应用程序)的工作区保存到图像
- 在MFC应用程序中缩放RDP ActiveX较大
- 如何显示基于 MFC 的应用程序类文件的输出
- 使用SDI应用程序(MFC)从文本文件读取数据并显示数据