2014-04-14 3 views
2

WScript Sendkeys를 사용하여 "ä"문자를 보내려고합니다. 작동하지 않습니다. 나는 하나 개의 게시물을 발견 Does or Can VBscript's SendKeys support Unicode?WScript Sendkey가 유니 코드 문자를 허용하지 않습니다.

내 코드 :

Set sh = WScript.CreateObject("WScript.Shell") 
sh.Run "notepad.exe", 9 
WScript.Sleep 1000 'wait a while to load notepad app' 
sh.SendKeys " äää Hello World!" //buggy line 
sh.SendKeys "{ENTER}" 
WScript.Sleep 100' 
sh.SendKeys "^p" 

하지만 난 솔루션을 이해 할 수없는입니다. 솔직한 간단한 코드 (솔루션)로 저를 가르치면 좋을 것입니다. 나는 WScript를 잘 못한다. 나는 코드를달라고 간청하고있다. (Pz는 나를 용서한다.) 하지만 plz 내 상황을 이해합니다.

미리 감사드립니다.

+2

이 솔루션은 Microsoft에서 유니 코드를 도입 한 방식으로 SendKeys가 손상되었다고 간단히 설명합니다. 특히 Windows 좁은 문자 집합이 UTF-8이 아닌 것으로 문제가 발생합니다. 해결 방법은 WScript *를 사용하지 않고 직접 네이티브 와이드 API를 사용하는 것입니다. – Deduplicator

답변

1

의견이 잘못되었습니다. unicode 나 다른 코드 인 scancodes라는 키보드 코드를 제외하고는 키보드와 같은 것이 없습니다. 키보드로 입력 할 수 없다면 sendkey를 사용할 수 없습니다. 그들은 문자가 아닌 키 스트로크입니다. 의미는 사용중인 키보드 레이아웃에 따라 다릅니다. 키보드와 동일한 키 스트로크를 사용하십시오. Windows는 CreateWindowA로 창을 작성한 경우이를 ASCII 문자로 변환하고 CreateWindowW로 창이 작성된 경우 유니 코드 문자로 변환합니다.

+0

tonybd : - 귀하의 제안을 시도하고 내 시스템의 키보드 레이아웃을 프랑스어로 변경했는데 "à"에 대해 char을 처리했지만 char "æç"에 대해서는 빈 공간을주었습니다. 미안 나는 특별히 넣을 수 없다. <@tag> 그래서 특별히 ur 이름 – workspace

4

Windows Script Host의 SendKeys doesn't support Unicode. WSH/SendKeys 매크로에

대안 :

  • 는 GUI 자동화를위한 무료 도구 AutoIt를 사용합니다. AutoIt의 Send, ControlSend 또는 ControlSetText 명령을 사용하여 텍스트 입력을 자동화 할 수 있습니다.

    Run('notepad.exe') 
    WinWaitActive("[CLASS:Notepad]", "", 10) 
    ControlSend("[CLASS:Notepad]", "", "Edit1", "äää Hello World!") 
    
  • 쓰기 다른 프로그래밍 언어에서 코드 (C++ 등 C#)과 KEYEVENTF_UNICODE 플래그를 사용하여 Windows API SendInput 함수를 호출합니다.

관련 문제