혹시 프로그래밍 잘 아시는분 있는지요

   조회 6468   추천 0    

윈도우 실행 메뉴로 이걸 테스트 하면 
먹히지가 않는군요
한영전환인데 뭐가 문제인지 알수 있을까요?
rundll32.exe user32.dll, LoadKeyboardLayout  l "00000409" , klf_activate

짧은글 일수록 신중하게.
에아빠 2012-05
| 에 한표보냅니다.
조재현 2012-05
l 뺴고 실행한후
메모장 프로그램에서 확인하면 한영전환이 않되있네요```
조재현 2012-05
아 제가  대부분 영문으로 작업하는데 실수로 가끔 까먹고 한글키를 누르고 작업하는데
매번 짜증나서요
간단하게 exe  키를 만들어서 배치화일 실행시키려구요
조재현 2012-05
Option Explicit

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long

Private Declare Function ActivateKeyboardLayout Lib "user32" ( _
ByVal HKL As Long, _
ByVal Flags As Long) As Long

Private Declare Function GetKeyboardLayout Lib "user32" ( _
ByVal dwLayout As Long) As Long

Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" ( _
ByVal pwszKLID As String) As Long

Private Const SPIF_SENDWININICHANGE = &H2

Private Const SPI_SETDEFAULTINPUTLANG = 90

Const HKL = "00000409"




Private Sub Command1_Click()
Dim retval As Long

retval = SystemParametersInfo(SPI_SETDEFAULTINPUTLANG, 0, HKL, SPIF_SENDWININICHANGE)

ActivateKeyboardLayout retval, 0

End Sub

이걸 발견했거든요
이걸 실행파일로 만드는게 가능한지요
제가 잘 모르니 좀 부탁드릴꼐요
냐옹 2012-05
한영전환이 아니라 한영전환불능이 목적이신거네요.
작업이 커맨드라인에서만 이뤄지는 것인지요?
조재현 2012-05
완전 불가능하는게 아니라
제가 쓰는 프로그램에서  구현하기가 힘들어서 커멘드 라인이나  실행파일 같은걸로 실행하려고 하거든요
수고스럽지만 가능할까요?
냐옹 2012-05
그러니까 명령창에서 작업하시고 명령창에서 한글입력만 막으면 되는지요.

본문의 rundll32이용하는 것은 win2k이후 안되나보군요.
전역적으로 하려면 프로그램 따로 만들어야하는데 커맨드라인에서 입력만 문제라면 간단합니다.

chcp 437 <--영어로 로케일을 바꿉니다(영문만 입력됩니다).
chcp 949 <--다시 한글로 되돌립니다.
조재현 2012-05
명령창에서 한글입력이 안되게 하는게 아니라
윈도우 전체 프로그램에서  영어 입력이 되게 하는거거든요
chcp 로 해보니  안되네요
그게 명령창에서만 되는건가바요?
냐옹 2012-05
한글 입력이 전혀 필요없다면 국가/언어 설정에서 키보드 추가 -> 영어/US 를 추가해주시고 한글 키보드를 지우시면 됩니다. 굳이 프로그램을 짜야한다면 몇줄이면 되겠지만 무엇으로 짜실지 컴파일러를 말씀해주시면...
배치파일로 할 수 있는 방법은..

http://support.microsoft.com/kb/325856/ko
http://us.generation-nt.com/answer/loadkeyboardlayout-keyboard-layout-help-8530972.html

여기를 참조하시면 되겠습니다.
위 방법 역시 국가/언어 설정창을 호출해주고 세팅을 응답파일로 입력하는 것입니다.
조재현 2012-05
한글 입력도 필요한데 제가 필요할때는 한영키 누르면 되고
그 이외에는 실행시켜서 영어로만 하려고 하거든요
위에 vb 로  하면 좋을거 같은데요
조재현 2012-05
rundll32.exe user32.dll, LoadKeyboardLayout  l "00000409" , klf_activate 처 럼
 "SystemParametersInfoA 함수 이용해서 바꿀 방법은 없는건지요?
조재현 2012-05
rundll32.exe user32.dll, activatekeyboardlayout (LSystemParametersInfo  90 , 0 ,"00000409" , &H2) 0
이런식으로 실행창에서 하는 방법 없나요
이 함수 왜 작동을 안할까요?
냐옹 2012-05
의도를 잘 모르겠습니다.
한글이 필요할 때는 한영키 누르신다는데, 로케일 바꾼 상태에서는 언어전환한 다음 한영키(한영키는 이전에 한글 상태였다면 안눌러도 됩니다)를 눌러야겠죠.
그럼 결국 한영키를 실수로 누르거나 하지 않겠다는건지 잘 이해가 안됩니다.

한글 입력 하시겠다는건 한글 로케일도 그대로 두고 쓰시겠다는거고 따라서 프로그램이 해주는 일은 설치된 두가지 언어 중 영문 선택을 해주는 것 뿐인데...
프로그램 만들어두고 프로그램을 실행하는거나 핫키나 트레이에서 로케일을 바꾸는거나 똑같아 보이는데 왜 프로그램을 만들려고 하시는지.. 프로그램이 도전해볼만한 난이도가 있거나 그런것도 아니고...
(로그온시 자동으로 영어상태 -> 이것 역시 디폴트 로케일을 설정하면 되니까 잇점이 없고요)
프로그램 안만들고 그냥 세팅 사용하는 것과 비교해 편한 점 하나 없는 것 같은데...

처음 접근처럼 배치파일로 가능한건 위에 적어드렸는데 원하시는게 꼭 비베로 하셔야하는 것인지
비베 코드는 대략 위에 찾으신 코드대로 하시면 될겁니다.
실행파일로 만드는게 가능한지는 비베 사용법을 물으시는건지요?
조재현 2012-05
아 다른 프로그램을(제가 가장 많이 쓰는 프로그램안에 스크립트) 실행시킨후에 자동으로 이 프로그램 실행되게 덧붙이면
제가 눌러 구지 확인해 보지 않아도 자동으로 영어가 되니
그 의도거든요
아주 큰 뜻은 없답니다
그리고 위에 제가 붙여논 소스가 실행이 잘 되는지는 제가 비베를 도저히 깔 상황이 안되어서  부탁드린거거든요
그리고 위에 알려주실대로 하니  언저 콘트롤 판넬이 뜨기만 해서요
그리고 약간의 시간이 걸리더라구요
이왕이면 가장 빠른걸로 햇으면 해서요~  그리고 제가 링크한 비베 소스는 버튼을 눌러야 하는데
그냥 실행시키면 버튼없이 실행시키려고 하거든요
~~~
아름 2012-05
윗쪽에 요청하신 내용을 만들어 올려 놓았습니다.
조재현 2012-05
찬민씨 고생 많으셨습니다
시간 내주셔서 도와주신거 정말 감사하구요


QnA
제목Page 3687/5728
2015-12   1780705   백메가
2014-05   5255784   정은준1
2016-09   4885   눈팅돌이
2012-05   11204   블루영상
2021-06   2781   르나풀스
2023-02   6570   굴렁쇠
2019-01   3819   나너우리
2023-02   2331   한효석
2017-10   3611   케이아스
2024-11   1471   고래1006
2009-03   6573   정진환
2012-06   5064   왕초보슈렉
2017-10   6248   이방인
2020-03   5363   제온프로
2024-11   739   stones
2015-09   5541   메가날백
2023-02   4013   딥마인드
2016-09   6139   캔위드
2009-05   10348   최원시익
2015-10   5510   미수맨
2016-10   3877   빠나나우유
2012-07   6638   김인철