2 augusti, 2019 admin

findwindow 예제

이 예제에서는 두 번째 인스턴스에서 받은 정보가 포함된 메시지 상자만 표시됩니다. 호출의 예는 FindWindow(NULL, my_window_title)입니다. 이 코드 조각에서는 C ++ Windows 유형 응용 프로그램 간에 정보를 보내는 방법에 대한 솔루션을 제공합니다. 두 응용 프로그램 간에 특정 정보를 전달해야 하는 상황이 있었습니다. 이 경우 windows 응용 프로그램의 한 인스턴스에서 동일한 응용 프로그램의 다른 인스턴스로 명령줄 인수를 전달해야 했습니다. 따라서 응용 프로그램의 주요 인스턴스인 먼저 열린 인스턴스는 두 번째 명령줄 인수를 알 수 있습니다. 한 인스턴스에서 다른 인스턴스로 정보를 보내려면 Windows.h 헤더가 필요한 SendMessage 함수를 사용해야 합니다. 호출의 예로는 SendMessage(main_window_handle, WM_ID, 0, LPARAM(”보내고 싶은 정보”)가 있습니다. 지뢰 찾기라는 창을 검색하고 제목 표시줄을 한 번 깜박입니다.

Windows의 지뢰 찾기 게임이 실행되지 않는 한 창 클래스의 이름을 알 필요가 없습니다. 이 작업은 사용자가 단추 cmdFind를 클릭할 때 수행되므로 이 예제를 사용하려면 양식 창에 cmdFind라는 명령 단추를 자연스럽게 배치해야 합니다. 이것은 COPYDATASTRUCT를 사용하여 정보를 참조하는 방법의 예입니다 : 문서에서이 시점에 도달하면 내가 당신을 지루하게하지 않았다는 것을 의미합니다 (그 정도). 이 기능은 WinAPI를 사용하여 동일한 응용 프로그램의 인스턴스 간에뿐만 아니라 다른 창 형식 응용 프로그램 간에 정보 또는 데이터를 보내는 데 사용할 수 있습니다. Dim ntPtr Dim ceroIntPtr 로 새로운 IntPtr (0) Dim Wnd_name as string Wnd_name= ”일부 앱 이름” nWnd = FindWindow (없음, Wnd_name) `정보를 표시하는 경우 nWnd.Equals(ceroIntPtr) 다음 MsgBox(”앱 실행되지 않음”) Else MsgBox(”앱 실행되지 않음”) 정보가 응용 프로그램의 두 번째 인스턴스에서 첫 번째 인스턴스로 전송되었습니다. 이제 첫 번째 메시지에서 메시지를 가로채서 조치를 취해야 합니다. SendMessage 함수는 지정된 창에 대한 창 프로시저를 호출하므로 WM_COPYDATA ID를 사용하여 메시지가 전송되었는지 확인하는 WndProc 내부에 대/소문자를 추가하는 것만 하면 됩니다.