다른 명령
새 문서: === Windows 키 커스터마이징 === <source lang=autoit> ;~ See list of keys to detect here ;~ https://www.autoitscript.com/autoit3/docs/libfunctions/_IsPressed.htm #include <Misc.au3> #include <MsgBoxConstants.au3> Local $hDLL = DllOpen("user32.dll") Func lWinKeyPressed() If (_IsPressed("5B", $hDLL)) Then Return True EndIf EndFunc Func rWinKeyPressed() If (_IsPressed("5C", $hDLL)) Then Return True EndIf EndFunc Func leftKeyPressed()... |
편집 요약 없음 |
||
117번째 줄: | 117번째 줄: | ||
DllClose($hDLL) | DllClose($hDLL) | ||
</source> | </source> | ||
=== 문자열로 키 리스트 입력 받고 send() 로 전송 === | |||
* 주어진 문자열에서 `{문자}` 형식 부분을 배열로 추출하고, 일반 문자열은 `{문자}` 부분을 뺀 채 출력하며, 추출된 배열 순서대로 `Send("{문자}")`를 실행하는 동작을 함수로 만든 AutoIt 예제입니다. | |||
<source lang=autoit> | |||
#include <Array.au3> | |||
; 문자열을 처리하는 함수 | |||
Func ProcessAndSendKeys($sInput) | |||
; VBScript.RegExp 객체 생성 | |||
Local $oRegExp = ObjCreate("VBScript.RegExp") | |||
$oRegExp.Global = True | |||
$oRegExp.Pattern = "\{[^}]+\}" ; 중괄호 안 문자 대상 | |||
; {문자} 형태 추출 | |||
Local $oMatches = $oRegExp.Execute($sInput) | |||
Local $iCount = $oMatches.Count | |||
Local $aMatches[$iCount] | |||
For $i = 0 To $iCount - 1 | |||
$aMatches[$i] = $oMatches.Item($i).Value | |||
Next | |||
; 일반 문자열은 {문자} 부분 제거 | |||
Local $sPlainStr = $oRegExp.Replace($sInput, "") | |||
$sPlainStr = StringStripWS($sPlainStr, 8) ; 좌우 공백 제거 | |||
; 일반 문자열 출력 | |||
ConsoleWrite("일반 문자열: " & $sPlainStr & @CRLF) | |||
; 배열 출력 (필요시, 디버깅용) | |||
ConsoleWrite("{문자} 배열: " & @CRLF) | |||
For $i = 0 To UBound($aMatches) -1 | |||
ConsoleWrite(" " & $aMatches[$i] & @CRLF) | |||
Next | |||
; 추출된 {문자} 순서대로 Send() 실행 | |||
For $i = 0 To UBound($aMatches) - 1 | |||
Send($aMatches[$i]) | |||
Sleep(100) ; 키 입력 간 딜레이 (필요시 조절) | |||
Next | |||
EndFunc | |||
; 함수 사용 예 | |||
Local $str = "{LEFT} is {RIGHT} , test select dldldldl {UP} and {DOWN}" | |||
ProcessAndSendKeys($str) | |||
``` | |||
--- | |||
### 설명 | |||
- `ProcessAndSendKeys()` 함수에 문자열을 넘기면, | |||
- `{}`로 감싼 부분은 배열로 추출되고, | |||
- 일반 텍스트만 남긴 부분을 콘솔에 출력합니다. | |||
- 이후 배열 순서대로 `Send()`로 키 입력을 수행합니다. | |||
</source> | |||
[[category:autoit]] | [[category:autoit]] |
2025년 6월 23일 (월) 19:32 기준 최신판
Windows 키 커스터마이징
;~ See list of keys to detect here ;~ https://www.autoitscript.com/autoit3/docs/libfunctions/_IsPressed.htm #include <Misc.au3> #include <MsgBoxConstants.au3> Local $hDLL = DllOpen("user32.dll") Func lWinKeyPressed() If (_IsPressed("5B", $hDLL)) Then Return True EndIf EndFunc Func rWinKeyPressed() If (_IsPressed("5C", $hDLL)) Then Return True EndIf EndFunc Func leftKeyPressed() If (_IsPressed("25", $hDLL)) Then Return True EndIf EndFunc Func rightKeyPressed() If (_IsPressed("27", $hDLL)) Then Return True EndIf EndFunc Func upKeyPressed() If (_IsPressed("26", $hDLL)) Then Return True EndIf EndFunc Func downKeyPressed() If (_IsPressed("27", $hDLL)) Then Return True EndIf EndFunc Func spaceKeyPressed() If (_IsPressed("20", $hDLL)) Then Return True EndIf EndFunc Func altKeyPressed() If (_IsPressed("12", $hDLL)) Then Return True EndIf EndFunc Func ctrlKeyPressed() If (_IsPressed("11", $hDLL)) Then Return True EndIf EndFunc Func shiftKeyPressed() If (_IsPressed("10", $hDLL)) Then Return True EndIf EndFunc Func winKeyPressed() If ( lWinKeyPressed() Or rWinKeyPressed() ) Then Return True EndIf EndFunc Func win_left() If ( winKeyPressed() And leftKeyPressed() ) Then Return True EndIf EndFunc Func win_right() If ( winKeyPressed() And rightKeyPressed() ) Then Return True EndIf EndFunc While 1 If win_left() Then ; Code: When keyes are pressed. ConsoleWrite("Win+left Key is pressed." & @CRLF) While win_left() Sleep(50) WEnd ; Code: When keyes are released. ConsoleWrite("Win+left Key is released." & @CRLF) ElseIf win_right() Then ; Code: When keyes are pressed. ConsoleWrite("Win+right Key is pressed." & @CRLF) While win_right() Sleep(50) WEnd ; Code: When keyes are released. ConsoleWrite("Win+right Key is released." & @CRLF) EndIf ;~ Sleep(250) WEnd DllClose($hDLL)
문자열로 키 리스트 입력 받고 send() 로 전송
- 주어진 문자열에서 `{문자}` 형식 부분을 배열로 추출하고, 일반 문자열은 `{문자}` 부분을 뺀 채 출력하며, 추출된 배열 순서대로 `Send("{문자}")`를 실행하는 동작을 함수로 만든 AutoIt 예제입니다.
#include <Array.au3> ; 문자열을 처리하는 함수 Func ProcessAndSendKeys($sInput) ; VBScript.RegExp 객체 생성 Local $oRegExp = ObjCreate("VBScript.RegExp") $oRegExp.Global = True $oRegExp.Pattern = "\{[^}]+\}" ; 중괄호 안 문자 대상 ; {문자} 형태 추출 Local $oMatches = $oRegExp.Execute($sInput) Local $iCount = $oMatches.Count Local $aMatches[$iCount] For $i = 0 To $iCount - 1 $aMatches[$i] = $oMatches.Item($i).Value Next ; 일반 문자열은 {문자} 부분 제거 Local $sPlainStr = $oRegExp.Replace($sInput, "") $sPlainStr = StringStripWS($sPlainStr, 8) ; 좌우 공백 제거 ; 일반 문자열 출력 ConsoleWrite("일반 문자열: " & $sPlainStr & @CRLF) ; 배열 출력 (필요시, 디버깅용) ConsoleWrite("{문자} 배열: " & @CRLF) For $i = 0 To UBound($aMatches) -1 ConsoleWrite(" " & $aMatches[$i] & @CRLF) Next ; 추출된 {문자} 순서대로 Send() 실행 For $i = 0 To UBound($aMatches) - 1 Send($aMatches[$i]) Sleep(100) ; 키 입력 간 딜레이 (필요시 조절) Next EndFunc ; 함수 사용 예 Local $str = "{LEFT} is {RIGHT} , test select dldldldl {UP} and {DOWN}" ProcessAndSendKeys($str) ``` --- ### 설명 - `ProcessAndSendKeys()` 함수에 문자열을 넘기면, - `{}`로 감싼 부분은 배열로 추출되고, - 일반 텍스트만 남긴 부분을 콘솔에 출력합니다. - 이후 배열 순서대로 `Send()`로 키 입력을 수행합니다.