창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


소스자료실
- 창조 소스를 공유하는 곳입니다. 첨부가능 확장자는 *.zip,*.rar,*.arj,*.exe,*.jpg,*.png,*.gif,*.cuf,*.nhp,*.nhw 입니다.


LIST ALL
Posted by 박종훈2006-07-26 16:02:31, Hit : 9531
[0.9b] 간단한 키 매크로
Homepage : http://www.canxan.com/~qnrdlqkrwhdgns
File #1 : Key_Macro.gif (9.6 KB)   Download : 217
File #2 : Key_Macro.rar (630.5 KB)   Download : 396
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=pds_sc&no=513



예전에는 keyb_event 라는 API를 사용했습니다.
이것은, API사용없이, SendMessage라는 창조내장 API함수를 사용하여 만든겁니다.

키를 누를때와 키를 눌렀을때는 엄밀히 따지면, 다르다고 할수있습니다.
키를 누를때에 잡히는 키값이 있고, 키를 눌렀을때에 잡히는 키값이 있습니다.
또한, 이 두 이벤트의 _키 값은 약간씩 다릅니다.

1_ SendMessage(핸들,256,키값,0);
   설명 : 이 명령어는, 키를 누를때에 키값을 보내는겁니다.
            256이란 값이, WM_KEYDOWN 메시지의 상수값입니다.

2_ SendMessage(핸들,258,키값,0);
   설명 : 이 명령어는, 키를 눌렀을때에 키값을 보내는겁니다.
            258이란 값이, WM_CHAR 메시지의 상수값입니다.


주의사항)
   한글의 경우, 지원하지 않습니다.
   현재 지원하는 키는 A~Z, a~z, 1~0, Home, End, BackSpace, Ctrl+V, 방향키 등이 지원됩니다.

지원 및 도움)
   나중에는 추가로 키를 넣어 지원할 예정이나, 한글은 아직 못할거 같습니다.
   문의사항은, 코멘트나 쪽지, P* J.H Soft, MSN 으로 받습니다.
   이 매크로기능은, Web+ Editor에 들어갈 예정입니다.
   [직접 찾아오셔도 괜찮음 ㅋ]

   한글 매크로를 하실줄 아시는 분은 좀 고쳐주세요 ^^;



수정#1) 방향키 지원됩니다.

청송   2006-07-26 PM 6:49:07  
방금전에 제가 혼자서 공부하고 온 내용을 올려주셧군요..^^
박종훈   2006-07-26 PM 6:58:39  
응.. 공부한 내용이 뭐지 --+
아무리 해도, 한글은 안되네요; 아시는분 없으세요?
지상현   2006-07-26 PM 10:46:20  
한글은 이런 식으로 접근하는게 아니라서;;
WM_CHAR 로 하는건 맞습니다.
한글은 2바이트기 때문에, 앞 바이트와 뒤 바이트를 WM_CHAR 로 두번 보내면 한글 한 글자가 완성되지만... 이건 단순히 눌렸던 키를 기억하는 것일 뿐이니 완성된 한글 데이터가 없겠죠.

그러니 간단하게 창의 IME 상태를 한글 조합 모드로 둔 다음 그냥 WM_KEYDOWN 을 날려주는 것이 최고입니다. IME 상태를 인식해서 자동으로 저장해주는 기능도 괜찮을 것 같네요.
청송   2006-07-26 PM 11:18:48  
음..... 한글 키 코드를 알아낼 수 있는 걸 간단하게 맹글어봤네요.

이걸 이용하시면 한글 메크로 만드시는데 약간의 도움이 될 수도

있을것 같네요. 물론 완성하실려면...... 어마어마한 노동력이

필요할 겁니다.

저도 "keyb_event" api를 이용해서 해볼려고 했으나.... 실패했습니다.

암튼, 만드실려면 엄청난 노력이 필요할겁니다. 이미 만들어져 있는게

있다면.... 그걸 사용하시길 권장합니다.

"프로그램 자료실"에 올렸습니다.
박종훈   2006-07-27 AM 6:20:56  
음..한글은, 자판을 눌렀을때에 기록되지 않군요..
자판을 누를때와 자판을 뗄때에 뭔가가 기록되는데..
한글이 보내지기 전에 229라는 값이 자판이 땔때에 기록이 되네요..
박종훈   2006-07-27 AM 6:32:54  
음.. 간단한 예제만들어주실분 없나요 ^^;
한글일때 뭐 저장하는 이런거 일겠는데,
원리를 당췌; 저장해서 어떻게 하는지 모르는 ^^;

자판을 누를때와, 눌렀을때, 뗄때의 메시지는 뭔가요?
청송   2006-07-27 AM 10:35:47  
저도 "누를때, 눌럿을때, 뗄때"에 "_키"라는 변수에 대체 뭐가 들어갈까..
라고 고민 많이 했는데요. 간단합니다. 창조 도움말에 나왔는데 그걸
몰랐더군요.
"누를때"와 "뗄때"는 virtual-key이고, "눌럿을때"는 Ascii Code 라고
나오네요.
제가 알기론 "virtual-key"는 문자의 내용하고는 상관없이 키보드의
고유 번호를 말하는거구요.(키보드 키 하나하나에 고유번호를 말함)
"ascii code"는 키보드하고는 상관없이 문자의 코드번호를 말한다고
알고있습니다.
"_키"에는 모두 "아스키코드"가 들어가는줄 알았는데... 이렇게 다르네요.
한글을 제어하실려면, "아스키코드"로는 안되는듯 합니다.
"virtual-key"로 제작을 하셔야 될겁니다. 즉, "누를때와 뗄때"라는
사건이 일어났을때에서 작업하셔야 됩니다.
'아스키코드"로도 하는 방법이 있을지도 모르겠군요.
박종훈   2006-07-27 AM 10:42:01  
아.. 그렇군요^^..
청송   2006-07-27 PM 2:00:51  
제가 예제를 만들어 볼려고 했는데요... 좀 어렵네요..."ㅎ메모"와 "ㅎ에디트" 같은 객체를
잘 다룰줄 알아야 됩니다. "ㅎ메모"를 잘 다룰줄 알면 "ㅎ에디트"는 필요 없을지도 모릅니다.
전 "ㅎ메모"를 사용안해봐서 어렵군요. 제가 생각하고 있는 제작방법입니다.
먼저 알아야될것은...
"한/영"키를 눌러 한글입력 모드가 되면 그 값을 계속 기억하고 있는듯 합니다.(별로 중요치 않음)
"한/영"키를 누르고 한글을 입력하면... 컴퓨터는 "한/영" + "눌린키(2바이트)"를
처리하는 것으로 보입니다. 즉, "Caps Lock"처럼 말이죠.("한/영"키의 virtual-key 코드는 "229" 입니다.)
다음으로 알아야될건... "_키" 값은 1바이트만을 처리합니다.
한글은 2바이트 인데.... 어떡하나... 해결방법은 이렇습니다.
한글은 자판을 "누를때", "눌렸을때", "뗄때"라는 이벤트가 생겼을때 바로 처리하기가
매우 힘듭니다.(사실 불가능일지도 모릅니다.)
다음 두가지로 형태로 제작할 수 있겠군요.(1번으로도 할 수 있다면 말이죠....)
1. 먼저 "ㅎ메모"에서 마지막에 입력된 한글을 읽어서 "virtual-key(누를때와 뗄때)" 값으로 변경을 해주어야 됩니다.
2. "한/영" 키가 눌리면 "ㅎ에디트"나 "ㅎ이름표"와 서로 연동되도록 해야됩니다.
2바이트를 읽어와야되기 때문에...

문자 : 문1, 문2;
실수 : 수1, 수2;
문1 := 문자삭제(입력된한글값, 2, 2);
문2 := 문자삭제(입력된한글값, 1, 1);
수1 := 문수(문1);
수2 := 문수(문2);
리스트박스0.내용.추가(수를문(수1) + "+" + 수를문(수2));

위와 같을경우 "ㄱ" 을 입력하면 리스트박스에는 "164+161" 이라고 입력됩니다.
("한/영"키가 눌려서 한글 모드이면 실제로는 "한/영(키값)+164+161"을 표현해야
됩니다. 그러므로 "한/영" 키가 눌렸을때 "한/영" 키값을 한번만 "리스트박스"에 입력 하거나,
혹은 매번 같이 입력하거나.... 둘중 하나의 방법을 택합니다. 매번 같이 입력하면...
리스트박스에 이렇게 표현될겁니다.
"한/영+164+161" 또는 "229+164+161"......
전자는 "한/영" 키가 눌려 있을경우 표식 문자로 바꿔서 넣은거죠.)
그 다음으로 알아야될건... 영문과 한글의 처리 방식을 달리해야 된다는 거죠..
이건 지금까지 설명한 내용에 포함되어 있는 내용입니다.
"영문" 입력시는 "자판을 눌렀을때"에서 처리하셔야되고, "한글"은 "누를때"와 "뗄때"를
사용하시면 되나... 제가 해본 경헙으로는 "자판을 뗄때"를 추천합니다.
메크로를 실행 할 때에는 "한글"일 경우 필요없은 부분은 삭제 처리해야 되겠죠?
("한/영"과 "+" 등의 구분 기호를 삭제하고 메크로 실행)
(실행은 "창0.제목 := 수문(164)+수문(161);"과 같은 방법으로 하면 될겁니다.)
설명이 너무 어렵죠?


위의 설명은 "박종훈"님이 올려주신 "간단한 키 메크로"의 소스 틀을 이용했을 경우 입니다.
박종훈   2006-07-27 PM 2:04:37  
어흑.. 어려네요 --+
지상현   2006-07-27 PM 4:48:32  
간단하게...
청송님 말씀이 다 맞습니다.
자판을 누를 때와 뗐을 때 에 있는 "_키" 는, 말 그대로 키보드 키에 각각 배정된 번호입니다.
지금은 영문 키가 "우연히(사실 고의적으로)" 이 키 코드가 아스키 코드로 해석하면 대문자의 키 코드일 겁니다.

자판을 눌렀을 때에는 문자 키가 눌렸을 때에만 발생합니다.
2바이트 문자가 들어오면 이 것이 2번 발생하죠...
결론적으로, 내부의 API에 의해 누를 때 사건이 발생되면 자동으로 눌렀을 때도 발생하는 겁니다. 실제적으로 하드웨어에서 발생하는 메시지는 누를 때 같은 것 뿐입니다.

그러니, 실제로 매크로 할 때는 누를 때에서만 처리하면 충분하다고 생각합니다.
간단하게 한/영키까지 매크로 하면 됩니다.
지상현   2006-07-27 PM 4:51:25  
좀 더 정리하자면
1. 눌렸을 때 에는 문자와 관련된 메시지가 온다.
2. "눌렸을 때"는 자판을 누를 때와 같은 직접적인 메시지로부터 자동으로 생성되는 사건이다.
3. 한글도 마찬가지로 키를 누르면 IME가 한글로 조합해주는 것이다.

결론적으로 자판을 누를 때에서 발생하는 키만 제대로 캐치하고 제대로 눌러줄 수 있으면 나머지 사건은 신경쓰지 않아도 됩니다.
박종훈   2006-07-27 PM 6:39:22  
음.. 자판을 누를때만 하면 된다는 거군요..
저는 자판을 눌렀을때를 하고 있었는데 --+
박종훈   2006-11-25 PM 9:16:40  
음.. 이거 버그가 많습니다 -_-;
LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
754
     [re] 창조 RSS 리더기 소스 -_-((( (재 정리) [1]
박종훈 2006/02/02  10185
753
   오토마우스 소스 [1]
Fream 2003/01/30  10005
752
   [API] 특수폴더 얻기[SHGetFolderPath]
박종훈 2009/02/24  9815
751
   옥션 묻지마쿠폰 시작시간 체크 프로그램 ㅋ [7]
최재일 2006/05/24  9815
750
   [0.9b] EnumDisplayDevices 예제(그래픽 디바이스 정보)
박종훈 2010/07/22  9711
749
   진수 변환기(2~36진수) [4]
550ml 2004/11/05  9680
748
   [소스]헬스장 관리 프로그램 [8]
김환욱 2006/09/29  9678
747
   한패드 Hanpad v1.7 소스 [6]
최재일 2003/10/09  9651
746
   허접한 lrcParser [7]
박종훈 2009/01/04  9595
745
   [0.9b] CreateAllBrowser v1.5 사용예제 [9]
손상진 2004/05/19  9590
744
   인터넷 상의 자료 다운로드(API 사용) [2]
Pueding 2003/10/12  9548

   [0.9b] 간단한 키 매크로 [14]
박종훈 2006/07/26  9531
742
   [0.9b] 간단한 마우스 매크로 소스...
지상현 2003/11/01  9512
741
   주민등록번호 검사 프로그램입니다.. [2]
nylon 2002/09/10  9478
740
   [소스]DLL파일을 이용한 파일 다운로드, 업로드 [8]
김환욱 2002/11/02  9473
739
   SMI-플레이어 소스 공개.. [1]
손상진 2005/08/06  9456
738
   [0.9b] AlphaBlend 예제 (반투명 찍기) [3]
박종훈 2010/07/19  9405
737
   이전 자료실에 올렸던 포트리스소스입니다..
권선중 2006/11/07  9366
736
   FindWindow 예제.. (?) [7]
박종훈 2006/03/17  9354
735
   [소스]윈도우바탕화면 경로알아내기 [2]
김환욱 2002/11/24  9304
734
   [0.9b] 돌아온 창조 첩보원++ [7]
지상현 2007/01/23  9299
733
   노티쓰매니저 소스... [8]
한수훈 2007/08/11  9276
732
   해상도바꾸기!!! [8]
이경근 2004/02/27  9273
731
   행렬식 구하기
성인e 2016/03/19  9252
730
   문자(영문, 숫자) 암호화 & 복호화 [10]
손상진 2004/04/23  9252
LIST ALL   Prev [1] 2 [3][4][5][6][7][8][9][10]..[32] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인