#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
int len;
while (1) {
HWND hWnd = GetForegroundWindow();
DWORD fromId = GetCurrentThreadId();
DWORD pid = GetWindowThreadProcessId(hWnd, NULL);
AttachThreadInput(fromId, pid, TRUE);
HWND focus = GetFocus();
DWORD hi;
DWORD a;
SendMessage(focus, EM_GETSEL, (WPARAM) &hi, (LPARAM) &a);
len = SendMessage(focus, WM_GETTEXTLENGTH, 0, 0);
int maxLen = 100;
char temp[256];
SendMessage(focus, WM_GETTEXT, maxLen, (LPARAM)temp);
cout << hi << " " << a << endl;
for (int i = hi; i < a*2; i+=2) {
cout << temp[i];
}
cout << " " << endl;
cout << " " << endl;
}
return 0;
}
Focus API를 사용하기 위해 그 창의 hWnd를 구하고 GetCurrentThreadId()와 GetWindowThreadProcessId()를 사용하여 뭔지모를 id를 구한뒤 구한 id를 가지고 AttachThreadInput를 통해 Focus API를 사용할 수 있게한다
sendMessage는 "이거 줘"라고 하는 거다.
프로그램의 전체적인 방식은 Focus hWnd를 가지고 블록된 글씨 위치를 가져오는 WM_GETTEXTLENGTH와 모든 글씨를 가져오는 WM_GETTEXT를 각각 구한다음 WM_GETTEXT으로 구한 모든 글씨에서 WM_GETTEXTLENGTH 위치의 문자열을 잘라오면 된다.
메모장의 글씨를 가져온다 !
근데 다른프로그램에서는 안된다.ㅎ
'C C++' 카테고리의 다른 글
c++ 디스코드 봇 만들기 (6) | 2019.12.30 |
---|---|
콘솔로 프로그램 실행 및 명령어 (0) | 2019.10.08 |
[비주얼 스튜디오] c언어 -1- c언어 프로젝트 만들기와 기초 (1) | 2017.07.27 |
댓글