Blog

2 August 2019

c++ sendmessage 예제

이 코드 조각에서는 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와 같습니다. 이렇게 하면 지정한 URL 패턴과 일치하는 모든 페이지에 메시징 API가 노출됩니다. URL 패턴에는 “*”, “*.com”, “*.co.uk”, “*.appspot.com”와 같은 호스트 이름 패턴이 금지된 두 번째 수준의 도메인이 포함되어야 합니다. 웹 페이지에서 runtime.sendMessage 또는 runtime.connect API를 사용하여 특정 앱 또는 확장 프로그램에 메시지를 보냅니다. 예: [v1.0.43.06+]: 메시지 수신자가 MyVar에 넣은 문자열은 추가 단계 없이 제대로 인식됩니다. 그러나 매개 변수의 첫 번째 문자가 앰퍼샌드(&)인 경우에만 작동합니다. 예를 들어, 5+&MyVar 작동 하지 않을 것 이다 하지만 & MyVar 또는 & MyVar +5 작동 합니다. 32비트 윈도우의 결과가 0으로 확장되므로 AutoHotkey 64비트에서도 이 변환이 필요할 수 있습니다.

예를 들어 32비트 창에서 -1의 결과는 모든 버전의 AutoHotkey에서 0xFFFFFFFF로 표시됩니다. 마찬가지로 다른 확장명으로 메시지를 보내는 것은 확장 내에서 메시지를 보내는 것과 유사합니다. 유일한 차이점은 통신하려는 확장의 ID를 통과해야 한다는 것입니다. 예를 들어 변수의 주소를 지정하여 wParam 또는 lParam을 통해 문자열을 보낼 수 있습니다.

Bize Ulaşın