SendMessage WM_SETTEXT не работает на другом приложении из приложения MFC - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь установить текст в элементе управления Edit другого приложения из приложения 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
}

1 Ответ

0 голосов
/ 03 февраля 2019

Я вызвал GetLastError () после SendMessage (), даже несмотря на то, что SendMessage () вернул 0. Последняя ошибка была 5 - отказ в доступе.Вызывается UIPI.

Мое приложение должно работать с более высоким уровнем целостности.

Оказывается, мне просто нужно было запустить Visual Studio от имени администратора, который, в свою очередь, запускает мое приложение в режиме отладки от имени администратора.Это также означает, что для работы конечного приложения всегда нужно будет работать в режиме администратора, но это будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...