[조재현님 요청]현재 키보드 입력 상태를 영문으로 전환하는 실행 프로그램

   조회 6559   추천 0    

HKL.exe (16.0K), Down : 2, 2012-05

이 파일을 실행하면 현재 키보드 입력상태를 영문으로 변환합니다.
짧은글 일수록 신중하게.
조재현 2012-05
악성 파일이라는데  한호씨 문제 없는건지요?
그것보다 메모장에서  한글로 친후 이 프로그램 실행시켜서 다시 메모장 가도
한글로 계속 쓰여지네요~~
아름 2012-05
올려주신 VB를 내용으로 작성한 것입니다.

저도 테스트 해보니 되는 곳이 있고 안되는 곳이 있네요.

악성 파일은 아닙니다. KIS2012로 검사 했습니다.
조재현 2012-05
바쁘실텐데 신경 써주셔서 감사합니다
아휴 이것때문에 이틀을 공치네요
아름 2012-05
윈도우에서 각 윈도핸들에 따라 IME가 따로 적용되고 있네요.
전체를 다 영문이나 한글로 바꾸는 방법이 있는지 찾아 봐야 될것 같습니다.
조재현 2012-05
한영키 누르면  간단할줄 알았는데
이리 머리 아픈건지 몰랐네요

제가 참고로 찾아본것들이 있어요
[SET THE LANGUAGE]
  iRet1 = GetLocaleInfo(Locale, LOCALE_SLANGUAGE, _
  lpLCDataVar, 0)
  Symbol = String$(iRet1, 0)

  iRet2 = GetLocaleInfo(Locale, LOCALE_SLANGUAGE, Symbol, iRet1)
  Pos = InStr(Symbol, Chr$(0))
  If Pos > 0 Then
      Symbol = Left$(Symbol, Pos - 1)
      If Symbol <> "English (United States)" Then
          MsgBox "The Language setting is currently set to """ & Symbol & """ and will be changed to ""English (United          States) """
          '[CHANGE SETTINGS]
          length = GetLocaleInfo(lLocal, LOCALE_SLANGUAGE, buf, Len(buf))

          lLocal = GetSystemDefaultLCID()

          SetLocaleInfo (lLocal, LOCALE_SLANGUAGE, "English (United States)"

    End If
  End If




Private Declare Function SetLocaleInfo& Lib "kernel32" Alias "SetLocaleInfoA" (ByVal _
Locale As Long, ByVal LCType As Long, ByVal lpLCData As String)

Const LOCALE_ICALENDARTYPE As Long = &H1009
Const LOCALE_ILANGUAGE As Long = &H1 'language id
'Const LOCALE_SLANGUAGE As Long = &H2 'localized name of language
Const LOCALE_SENGLANGUAGE As Long = &H1001 'English name of language
Const LOCALE_SABBREVLANGNAME As Long = &H3 'abbreviated language name
Const LOCALE_SNATIVELANGNAME As Long = &H4 'native name of language
Const LOCALE_ICOUNTRY As Long = &H5 'country code
Const LOCALE_SCOUNTRY As Long = &H6 'localized name of country
Const LOCALE_SENGCOUNTRY As Long = &H1002 'English name of country
Const LOCALE_SABBREVCTRYNAME As Long = &H7 'abbreviated country name
Const LOCALE_SNATIVECTRYNAME As Long = &H8 'native name of country
Const LOCALE_SINTLSYMBOL As Long = &H15 'intl monetary symbol
Const LOCALE_IDEFAULTLANGUAGE As Long = &H9 'default language id
Const LOCALE_IDEFAULTCOUNTRY As Long = &HA 'default country code


l = SetLocaleInfo(Locale, LOCALE_ICALENDARTYPE, "2")
T = SetLocaleInfo(US_LOCALE, LOCALE_IDEFAULTLANGUAGE, "0409")
Y = SetLocaleInfo(US_LOCALE, LOCALE_ICOUNTRY, 1)
u = SetLocaleInfo(US_LOCALE, LOCALE_IDEFAULTCOUNTRY, 1)
i = SetLocaleInfo(US_LOCALE, LOCALE_ILANGUAGE, "0409")
아름 2012-05
제가 생각하기에는 윈도우에 실행중인 모든 프로그램의 핸들을 얻어 IME모드를 영문으로 전환하는 방법이 되어야 한다고 생각됩니다.

제가 만들어 드리고 싶지만 다른 업무 때문에...
조재현 2012-05
아 그렇군요
아님니다 이렇게 말씀이라도 해주시니 너무 감사합니다
냐옹 2012-05
짧게 정리를 해보면...
앞서 나온 코드들에서 사용되는 함수들은 현재 프로세스에서만 먹힙니다.
ime 상태를 영문으로 바꾸는 것은 EnumWindow로 ime창에 메시지 날리는 것으로 되겠지만
그후 새로 띄운 프로그램은 기본 ime 상태가 한글이면 소용없고 결국 훅을 통해 프로세스 생성을 감시해야합니다.
전역적으로 한번에 통하는 방법은 키보드 로케일 바꾸고 적용하는건 아래에 적었었고.. 딜레이가 있다고 하셨는데
핫키를 입력하는 매크로 프로그램 하나 만들면 되지만 기본 핫키는 shift가 포함되어 있고 shift 좌우 구분하려면 또 키보드 관련 후킹이 필요합니다. 핫키를 다른걸로 설정하면 코드 5줄 정도면 됩니다. 로컬(프로세스내) 로케일 변경 함수를 전역훅으로 처리해주는 유틸리티는 기존에 있습니다.

같은 얘기의 반복인데 제 생각엔 제어판 들어가서 뭔가 바꾸고 하는거라면 귀찮겠지만 관리 작업 중 어짜피 한글 입력이 필요한 곳에서는 또 한글로 바꾸고 하는거라면 그냥 영문 로케일 설치하고 작업 전 Alt-Shift 누르면 되는 일로 보입니다. 한번 누르면 한글로 바꾸기 전까진 실수할 일 없고 기본 로케일을 영어로 설정하면 부팅시부터 영어고.. 한글 필요할 때 Alt-Shift 눌르는 것이나 한영전환 누르는 것이나... 결국 영문 로케일 추가하고 기본으로 설정하면 그냥 처음부터 영문상태고... 한글 필요할 때 한글로 바꾸고 쓰면 되지 않은가로 요약됩니다.
조재현 2012-05
아 찬민씨 끝까지 신경써주시는거 너무 감사합니다


QnA
제목Page 3687/5728
2015-12   1782360   백메가
2014-05   5257570   정은준1
2015-08   4525   해바라기믿음
2016-09   6078   하루카
2018-12   2564   행복하세
2024-09   1740   gusoong
2015-08   4747   김건우
2020-02   3491   그모도
2024-09   1137   이승익
2023-01   1984   grzlr
2014-04   3945   미니TM
2016-09   4885   눈팅돌이
2012-05   11206   블루영상
2021-06   2789   르나풀스
2023-02   6575   굴렁쇠
2019-01   3821   나너우리
2023-02   2338   한효석
2017-10   3612   케이아스
2024-11   1491   고래1006
2009-03   6577   정진환
2012-06   5066   왕초보슈렉
2017-10   6249   이방인