C++ SendMessage WM_SETTEXT在MFC应用程序的另一个应用程序上不起作用

C++ SendMessage WM_SETTEXT在MFC应用程序的另一个应用程序上不起作用,c++,winforms,winapi,mfc,C++,Winforms,Winapi,Mfc,我试图将文本设置为来自C++ MFC应用程序的另一个应用程序的编辑控件。 如果另一个应用程序是记事本,那么我的代码可以正常工作,但它不能在我需要它工作的应用程序上工作。当我无法让WM_SETTEXT工作时,我想可能是应用程序正在将消息过滤到控件,因为键盘输入可以工作,所以我尝试发送键盘消息。这也不起作用。我通过在Spy++中记录消息来验证窗口是否接收键盘输入。我做错了什么或错过了什么 if (g_IPAdressHwnd != 0) // g_IPAdressHwnd is the handle

我试图将文本设置为来自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引起

我的应用程序需要以更高的完整性级别运行


事实证明,我只需要以管理员身份运行VisualStudio,然后以管理员身份在调试模式下运行我的应用程序。这也意味着最终的应用程序将始终需要在管理员模式下运行才能工作,但这将很好。

检查来自的返回值。如果指示错误,请调用
GetLastError
以找出失败的原因。是什么让您认为窗口类
WindowsForms10.EDIT.app.0.378734a
识别WM_SETTEXT消息?SendMessage的返回值为0。我假设这意味着没有错误。它与我测试过的其他能够识别WM_文本的应用程序是同一个窗口类。是的,这是一种假设,但我对WM_CHAR也有同样的问题。当我在Spy++中记录消息时,我验证键盘输入是否发送WM_字符并输入文本。当我尝试使用SendMessage时,它不起作用。控件是否只接受IP地址格式?如果是,你为什么要试着写信?