관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

[그외] PostMessage/SendMessage관련 본문

AUTOHOTKEY/레퍼런스

[그외] PostMessage/SendMessage관련

님투 2007. 11. 7. 23:55
반응형

PostMessage/SendMessage관련

윈도우 메세지에 대해

Windows의GUI(은)는, 시스템이나 어플리케이션이 윈도우나GUI컨트롤에 대해서 윈도우 메세지를 송신해, 윈도우를 소유하는 어플리케이션이 보내진 메세지에 대응한 동작을 실시하는 것으로 성립되고 있다.
AutoHotkey그렇지만, PostMessage(이)나SendMessage의 커멘드로 윈도우 메세지를 송신하는 것으로써, 윈도우에 대해서 여러가지 조작을 실시할 수 있다.

윈도우 메세지나 각 메세지의 동작에 대해서는,Web위에 많은 자료가 있다.
일반적인 메세지의 일람에 대해서는, WinAPI Database for VB Programmer의 알파벳순서 표시 「W」의 항등이 자세하다.

WM_COMMAND의 커멘드 번호를 조사한다

「WM_COMMAND」메세지를 보내면, 메뉴등의 커멘드를 실행시킬 수 있다.
WM_COMMAND(을)를 보내려면 ,Msg인수에 「0x111」(을)를 지정한다.
wParam인수에는 커멘드ID(을)를 지정한다.

커멘드ID(을)를 조사하는 간단한 방법은, Resource Hacker(을)를 사용하는 방법이다.
조사하고 싶은 실행 파일을 열어, 트리의 「Menu」이하를 보면,

MENUITEM "&File...   \tL",  40029

(와)과 같은 형식에서 메뉴 항목이 기술되고 있다.
제일 마지막 숫자가, 메뉴 항목에 대응하는 커멘드ID이다.

또, 트리의 「Accelerators」이하에서는,

VK_A, 40019, NOINVERT, CONTROL, VIRTKEY

(와)과 같은 행이 열거되고 있다.
커멘드명이 쓰여지지 않기 때문에 알기 힘들지만, 단축 키에 대응하는 커멘드ID하지만 조사할 수 있다.

이러한 방법에서는, 툴바 밖에 할당할 수 있지 않은 커멘드ID(을)를 조사하는 것은 할 수 없다.
거기서, 툴바 버튼의 커멘드ID(을)를 조사하는 스크립트(을)를 작성했다.
표준적인 툴바이면, 버튼 번호에 대응하는 커멘드ID(을)를 조사할 수 있을 것이다.

Windows부속의 페인트의 툴 박스와 같은 표준적으로 없는 툴바의 경우, 이 스크립트에서도 커멘드ID(을)를 조사할 수 없지만, 창콘등의 툴로 실행된 커멘드를 감시해 조사할 수 있는 경우도 있다.

Delphi(이)나VisualBasic등, 일부의 개발 환경에서 만들어진 소프트의 경우, 커멘드ID하지만 일정이 아니거나 하고, 커멘드ID(을)를 조사해도 도움이 되지 않는다.

반응형

'AUTOHOTKEY > 레퍼런스' 카테고리의 다른 글

[그외] 일자 시각  (0) 2007.11.07
[그외] 배열  (0) 2007.11.07
Hotstring  (0) 2007.11.07
Remap  (0) 2007.11.07
Overriding or Disabling Hotkeys  (0) 2007.11.07
Comments