Копировать текстовые данные из другого приложения - PullRequest
1 голос
/ 20 января 2012

Мне нужно получить данные из некоторого приложения win (не моего). В это время окно приложения может быть неактивным. Данные, которые мне нужны, представлены в таблице, поэтому я не могу использовать WM_GETTEXT, WM_COPY, потому что они получают текст только из текстовых полей, текстовых областей и т. Д. Я могу вручную сделать выделение в этой таблице, и все, что мне нужно, это просто скопировать текст из этого выделения путем эмуляции Ctrl + C, чтобы скопировать данные в буфер обмена. Я пытался отправить эту последовательность клавиш таким образом

PostMessage(hwnd, WM_KEYDOWN, 0x11, 0x001D0001);
PostMessage(hwnd, WM_KEYDOWN, VkKeyScan('c'), 0x002E0001);
PostMessage(hwnd, WM_CHAR, VkKeyScan('c'), 0x002E0001);
PostMessage(hwnd, WM_KEYUP, VkKeyScan('c'), 0xC02E0001);
PostMessage(hwnd, WM_KEYUP, 0x11, 0xC01D0001);

Но также не имеют успеха. Это прекрасно работает для блокнота, но не для моего стола. Есть ли другой способ получить оттуда текстовые данные?

1 Ответ

0 голосов
/ 20 января 2012

Вы упомянули c #, поэтому я собираюсь предположить, что другое win-приложение также является .Net, и в этом случае вы можете получить данные, используя такие методы, как: Hawkeye - .Net Runtime Object Editor

...