다른 명령
새 문서: # Windows 10에서 Caret 위치 텍스트 출력 프로그램 다음은 Windows 10에서 캐럿(커서) 위치의 텍스트를 출력하는 C++과 AutoIt 프로그램 예제입니다. ## C++ 버전 ```cpp #include <windows.h> #include <iostream> #include <string> std::string GetTextAroundCaret(HWND hWnd) { DWORD startPos, endPos; CHAR buffer[1024] = {0}; // 현재 포커스가 있는 윈도우 핸들 가져오기 if (hWnd == NULL) { hWnd = GetFoc... |
편집 요약 없음 |
||
| 5번째 줄: | 5번째 줄: | ||
## C++ 버전 | ## C++ 버전 | ||
<source lang=cpp> | |||
#include <windows.h> | #include <windows.h> | ||
#include <iostream> | #include <iostream> | ||
| 58번째 줄: | 58번째 줄: | ||
return 0; | return 0; | ||
} | } | ||
</source> | |||
## AutoIt 버전 | ## AutoIt 버전 | ||
<source lang=autoit> | |||
#include <WinAPI.au3> | #include <WinAPI.au3> | ||
#include <EditConstants.au3> | #include <EditConstants.au3> | ||
| 101번째 줄: | 102번째 줄: | ||
Exit | Exit | ||
</source> | |||
## 사용 방법 | ## 사용 방법 | ||
2025년 6월 18일 (수) 01:26 판
- Windows 10에서 Caret 위치 텍스트 출력 프로그램
다음은 Windows 10에서 캐럿(커서) 위치의 텍스트를 출력하는 C++과 AutoIt 프로그램 예제입니다.
- C++ 버전
#include <windows.h>
#include <iostream>
#include <string>
std::string GetTextAroundCaret(HWND hWnd) {
DWORD startPos, endPos;
CHAR buffer[1024] = {0};
// 현재 포커스가 있는 윈도우 핸들 가져오기
if (hWnd == NULL) {
hWnd = GetFocus();
}
// Edit 컨트롤인지 확인
char className[256];
GetClassNameA(hWnd, className, sizeof(className));
if (strcmp(className, "Edit") != 0) {
return "Not an Edit control";
}
// 현재 선택 영역 가져오기
SendMessageA(hWnd, EM_GETSEL, (WPARAM)&startPos, (LPARAM)&endPos);
// 텍스트 길이 가져오기
int textLength = GetWindowTextLengthA(hWnd);
// 전체 텍스트 가져오기
GetWindowTextA(hWnd, buffer, textLength + 1);
// 캐럿 주변 텍스트 추출 (예: 캐럿 앞 10자, 뒤 10자)
int start = max(0, (int)startPos - 10);
int end = min(textLength, (int)startPos + 10);
return std::string(buffer + start, buffer + end);
}
int main() {
std::cout << "Caret 위치 텍스트를 가져오는 프로그램 (10초간 실행)" << std::endl;
for (int i = 0; i < 10; i++) {
HWND foregroundWindow = GetForegroundWindow();
HWND focusWindow = GetFocus();
std::string text = GetTextAroundCaret(focusWindow);
std::cout << "Caret 주변 텍스트: " << text << std::endl;
Sleep(1000); // 1초 대기
}
return 0;
}
- AutoIt 버전
#include <WinAPI.au3>
#include <EditConstants.au3>
Func GetCaretText()
Local $hWnd = _WinAPI_GetFocus()
If $hWnd = 0 Then Return "포커스된 창이 없습니다."
; 클래스 이름 확인
Local $sClass = _WinAPI_GetClassName($hWnd)
If $sClass <> "Edit" Then Return "Edit 컨트롤이 아닙니다: " & $sClass
; 현재 선택 위치 가져오기
Local $iStart = _SendMessage($hWnd, $EM_GETSEL)
Local $iEnd = BitShift($iStart, 16)
$iStart = BitAND($iStart, 0xFFFF)
; 전체 텍스트 가져오기
Local $sText = ControlGetText("[ACTIVE]", "", $hWnd)
If @error Then Return "텍스트를 가져올 수 없습니다."
; 캐럿 주변 텍스트 추출 (앞 10자, 뒤 10자)
Local $iTextLen = StringLen($sText)
Local $iFrom = Max(0, $iStart - 10)
Local $iTo = Min($iTextLen, $iStart + 10)
Return StringMid($sText, $iFrom + 1, $iTo - $iFrom)
EndFunc
; 메인 프로그램
ToolTip("캐럿 위치 텍스트를 가져오는 AutoIt 프로그램 (10초간 실행)", 0, 0)
For $i = 1 To 10
Local $sText = GetCaretText()
ConsoleWrite("캐럿 주변 텍스트: " & $sText & @CRLF)
Sleep(1000)
Next
Exit
- 사용 방법
1. **C++ 버전**:
- Visual Studio 등으로 컴파일 후 실행 - 10초 동안 1초 간격으로 포커스된 Edit 컨트롤의 캐럿 위치 주변 텍스트 출력
2. **AutoIt 버전**:
- AutoIt 스크립트로 저장 후 실행 - 10초 동안 1초 간격으로 콘솔에 캐럿 위치 주변 텍스트 출력
- 주의 사항
- 이 프로그램은 표준 Edit 컨트롤에서만 작동합니다. - RichEdit, Chrome, 워드프로세서 등 다른 컨트롤에서는 작동하지 않을 수 있습니다. - 관리자 권한이 필요한 경우도 있을 수 있습니다.