SendMessage()
WINAPI를 사용하여 DDE 서버 응용 프로그램에 연결하는 DDE 클라이언트 응용 프로그램이 있습니다. SendMessage()
호출 다음 DDE 서버에 대한 연결을 요청하는 동안 응답하지 않습니다. DDE 클라이언트 응용 프로그램과 서버 응용 프로그램 모두 VC++에 있습니다.SendMessage() DDE 서버에 연결할 때 WINAPI 응답하지 않는다
SendMessage((HWND) -1,WM_DDE_INITIATE,(WPARAM) m_hWnd,MAKELPARAM(hService,hTopic));
이제 어떻게 SendMessage()
는이 교수형에 처해지고 있다는거야? 기본적으로 시스템의 모든 창에 WM_DDE_INITIATE
창 메시지를 보냅니다. 의도 된 창 (DDE 서버)은 메시지를 처리해야하며 응답으로 응답해야합니다. 확인 응답이 수신되면 SendMessage()
호출이 완료되고 클라이언트가 연결됩니다.
우리의 경우에는 응답이 없어지고 다시 돌아 오지 않습니다. 결과적으로 DDE 클라이언트 응용 프로그램이 중지됩니다.
인터넷에서 검색 한 결과 방송에 SendMessage()
을 사용하면 여러 번 걸리므로 일반적으로 권장되지 않습니다.
저는 DDE 클라이언트 응용 프로그램과 DDE 서버 응용 프로그램에 대한 코드를 가지고 있습니다.
DDE 서버 창 핸들을 검색하거나 DDE 서버 창에 고유 한 이름을 지정하는 방법이 있는지 알려주십시오. 이렇게함으로써
, 난 (FindWindow()
WINAPI를 사용하여) 내가 고유 한 이름에서 DDE 서버의 창 핸들을 검색 할 수있는 클라이언트 측에서 생각 대신
SendMessage()
를 사용하여 방송의 난 창 핸들을 사용하여 DDE 서버에 직접 메시지를 보낼 수 있습니다.
DDE 서버의 창 핸들을 가져 오는 방법을 사용할 수 없거나 권장되지 않는다면 SendMessage()
winapi를 사용하여 DDE Server에 연결하는 다른 방법을 알려주십시오.
FindWindow 대신 EnumWindows를 사용하면 올바른 창을 식별 할 확률이 훨씬 높아집니다. Spy ++를 사용하여 창 속성을 보면 클래스 이름이 필터링에 좋은 경향이 있습니다. GetClassName(). DDE는 끔찍한 btw입니다. –