У меня есть приложение, в котором есть кнопка Нажатие кнопки, я пытаюсь вставить текст, уже доступный для Блокнота. Мое приложение сначала собирает текст и помещает его в буфер обмена (это работает отлично), я столкнулся с проблемой с частью Вставить. Вот код, пожалуйста, дайте мне знать, где я иду не так.
CWnd *pCwnd = FindWindow(NULL, _T("Untitled - Notepad"));
HWND handle = pCwnd->GetSafeHwnd();
pCwnd->PostMessageA(WM_PASTE,0,0);
Я использую Блокнот, чтобы проверить его, поэтому его имя («Без названия — Блокнот»).
Пожалуйста, помогите мне. Заранее спасибо.
Я не использую MFC, но вы, вероятно, можете перевести на то, что вам нужно. Проблема в том, что вам нужно отправить сообщение в элемент управления редактирования, а не в главное окно.
#include <Windows.h>
#include <string>
#include <cstdlib>
int main()
{
const std::string data("This is some text from the clipboard.");
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, data.size() + 1);
std::memcpy(GlobalLock(hMem), data.c_str(), data.size() + 1);
GlobalUnlock(hMem);
OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_TEXT, hMem);
CloseClipboard();
HWND mainWindow = FindWindow(NULL, "Untitled - Notepad");
HWND editWindow = FindWindowEx(mainWindow, NULL, "edit", NULL);
PostMessage(editWindow, WM_PASTE, 0, 0);
return 0;
}
Других решений пока нет …