c++ postmessage 예제

문자열은 변수의 주소를 지정하여 wParam 또는 lParam을 통해 전송될 수 있습니다. 다음 예제에서는 주소 연산자(&)를 사용하여 이 작업을 수행합니다. 예를 들어 32비트 창에서 -1의 결과는 모든 버전의 AutoHotkey에서 0xFFFFFFFF로 표시됩니다. 문자열 외에도 pp::Var은 다른 유형의 자바스크립트 개체를 나타낼 수 있습니다. 예를 들어 메시지는 자바스크립트 개체일 수 있습니다. 이러한 풍부한 형식을 사용하면 응용 프로그램의 메시징 프로토콜을 보다 쉽게 구현할 수 있습니다. 이 코드 조각에서는 C ++ Windows 유형 응용 프로그램 간에 정보를 보내는 방법에 대한 솔루션을 제공합니다. 두 응용 프로그램 간에 특정 정보를 전달해야 하는 상황이 있었습니다. 이 경우 windows 응용 프로그램의 한 인스턴스에서 동일한 응용 프로그램의 다른 인스턴스로 명령줄 인수를 전달해야 했습니다. 따라서 응용 프로그램의 주요 인스턴스인 먼저 열린 인스턴스는 두 번째 명령줄 인수를 알 수 있습니다. 한 인스턴스에서 다른 인스턴스로 정보를 보내려면 Windows.h 헤더가 필요한 SendMessage 함수를 사용해야 합니다. 호출의 예로는 SendMessage(main_window_handle, WM_ID, 0, LPARAM(“보내고 싶은 정보”)가 있습니다. wParam 및 lParam 매개 변수는 정수여야 합니다.

AutoHotkey 또는 대상 창이 32비트인 경우 낮은 32비트만 사용됩니다. 즉, 값은 -2147483648과 4294967295(0xFFFFFFFF) 사이여야 합니다. 자동 호키와 대상 창이 모두 64비트인 경우 AutoHotkey에서 지원하는 모든 정수 값을 사용할 수 있습니다. AutoHotkey의 모든 정수 값과 마찬가지로 접두사는 육각 값을 나타냅니다. 예를 들어 0xFF는 255와 같습니다. “Hello, World” 예제의 통신 작업 COPYDATASTRUCT를 사용하여 정보를 참조하는 방법의 예입니다. 네이티브 클라이언트 모듈과 자바스크립트는 서로 메시지를 전송하여 통신합니다. 메시지의 가장 기본적인 형식은 문자열입니다.

메시지는 ints, 배열, 배열 버퍼 및 사전을 포함한 많은 JavaScript 형식을 지원합니다(pp::Var, pp:Var:VarArrayBuffer 및 일반 메시징 시스템 설명서 참조). 메시지 유형을 결정하고 JavaScript 및 네이티브 클라이언트 측에서 메시지를 처리하는 방법을 정의하는 것은 사용자가 결정합니다. “Hello, World” 예제에서는 문자열 형식의 메시지만 사용할 수 있습니다. 이제 응용 프로그램에는 모든 메시지를 처리하는 큰 사례 문이 있는 함수가 있습니다. 예: 위의 예제는 각 구문() 호출에 대해 Worker 스레드를 생성합니다. 실제로 이러한 종류의 작업에 대신 작업자 풀을 사용합니다. 그렇지 않으면 근로자를 만드는 오버헤드가 자신의 이익을 초과할 가능성이 큽니다. “Hello, World” 예제의 네이티브 클라이언트 모듈의 C++ 코드: 숨김 또는 비활성화된 창을 포함하여 시스템의 모든 창에 메시지를 보내려면 WinTitle에 대해 ahk_id 0xFFFF를 지정합니다(0xFFFF는 HWND_BROADCAST).

다음 예제와 같이 브로드캐스트하려는 메시지에만 이 기술을 사용해야 합니다. 응용 프로그램. 네이티브 클라이언트 모듈은 PostMessage()를 사용하여 자바스크립트 코드로 메시지를 다시 보냅니다. 네이티브 클라이언트 모듈은 항상 브라우저의 자바 스크립트에서 처리 할 수있는 pp ::Var의 형태로 값을 반환합니다.