본문 바로가기

코드^학습/메모한 지식

[MFC] File Drag & Drop과 UAC

[출처 : http://crowback.tistory.com/247 ]


제가 구현하던 프로그램에 File을 Drag & Drop하여 파일을 열도록 하는 기능을 추가한적이 있습니다.


구현할 때는 별문제 없이 구현하였고 테스트를 마쳤는데...


다음주 쯤이었나 릴리즈 버젼에서 파일을 열려고 드래그를 해보니 안 되는겁니다!!!


으아니!!!! 왜 안 되는거야!


알아보니까 출처 블로그에서 적은 내용처럼, 관리자 권한으로 얻은 Application은 일반적인 권한의 프로세스가 메시지를 날릴경우 필터링을 거칩니다.


그리고 차단당하는것 같습니다.


그래서 다음과 같이 처리합니다.


드래그 & 드롭에 관한 메시지는 다음과 같은 메시지 일부를 필터에 추가하여 줌으로써, 기능이 동작하도록 설정할 수 있습니다.

(MSDN 의 Remark 에 따르면 안전한 프로세스 관리를 위하여, 필요한 메시지만 필터하도록 권고 하므로 

 기능이 잘 안된다고 루프를 돌려서 모든 메시지를 추가하는 일이 없도록 주의 하십시오.)

ChangeWindowMessageFilter (WM_DROPFILES, MSGFLT_ADD);

ChangeWindowMessageFilter (WM_COPYDATA, MSGFLT_ADD);

ChangeWindowMessageFilter (0x0049, MSGFLT_ADD); 


이 코드를 InitDialog, Init하는 부분에서 넣어주시면 잘 동작합니다. 저 같은 경우는 View의 Init부분에 넣어줬습니다.


이와 비슷한 기능을 구현하시는 분들은 참고하세요ㅎ


[출처 : http://crowback.tistory.com/247 ]