ChangeWindowMessageFilter – Vista 에서 메시지(WM_COPYDATA등) 보내기 DarkKaiser, 2009년 9월 12일2023년 9월 6일 비스타에서는 UAC가 동작하고 있을때 권한이 낮은 어플리케이션에서 높은 어플리케이션으로 메시지가 전달이 안된다. 여러 사이트 검색결과 ChangeWindowMessageFilter를 이용하면 된다는 것을 알게되었다. typedef BOOL (WINAPI *CHANGEWINDOWMESSAGEFILTER)( UINT message, DWORD dwFlag ); 를 선언부에 선언하고, HANDLE popapi; CHANGEWINDOWMESSAGEFILTER ChangeWindowMessageFilter; popapi = LoadLibrary("USER32.DLL"); ChangeWindowMessageFilter=(CHANGEWINDOWMESSAGEFILTER)GetProcAddress((HINSTANCE)popapi,"ChangeWindowMessageFilter"); ChangeWindowMessageFilter(WM_COPYDATA,1); 하면 됩니다. ChangeWindowMessageFilter에서 MSGFLT_ADD를 사용하면 해당메세지를 받아들이게 되고,REMOVE를 사용하면 해당 메세지가 블록된다. 이렇게 하면 UAC를 멈추지 않고 각 프로그램간에 메세제를 주고 받을 수 있다. * 참고 WM_DROPFILES 메시지를 받기 위해서는 아래와 같이 0x0049 메시지도 같이 등록해 줘야지 메시지가 수신됨을 확인할 수 있다. pChangeWindowMessageFilterFunc(0x0049, 1); pChangeWindowMessageFilterFunc(WM_DROPFILES, 1); C/C++/VC++ Vista비스타