VCi를 업데이트하면서 중요한 문제점을 두 개 발견했다.
VCi 포스팅에 포함시키기엔 애매해서 별도로 포스팅.
1. Vista/W7/W8에서 drag-n-drop 정상적으로 사용하기
윈도우를 사용하면서 UAC를 끄고 관리자 모드로만 사용했다.
그런데, 이번에 PC를 포맷하면서 UAC를 켜고 써보니 관리자 권한에서는 drag-n-drop이 동작하지 않았다.
처음 발견된 새로운 버그라고 혼자 망상(?)을 잠시 했지만, 찾아보니 다 끝난 얘기다.
Vista 부터는 권한이 낮은 프로세스에서 높은 프로세스로 메시지가 전달되지 않는다.
애초에 UAC를 끄면 이런 문제가 없겠지만, 그건 좀 활동적X 스타일 해결책이고…
제대로 된 해결책은 ChangeWindowMessageFilter()로 메시지를 필터에 등록하는 것.
창의 초기화 부분에 아래 코드를 추가하면 된다.
1 2 3 | ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD); ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD); ChangeWindowMessageFilter(WM_COPYGLOBALDATA, MSGFLT_ADD); |
그런데, 여기서 사소한(?) 문제가 있다.
1. Visual C++ 6.0에선 ChangeWindowMessageFilter()를 해석하지 못함
2. WM_COPYGLOBALDATA는 어떤 Visual Studio에서도 선언이 되어있지 않음
그래서, 이런 식으로 코드를 작성했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // 선언 #ifndef CHANGEWINDOWMESSAGEFILTER typedef BOOL (WINAPI *CHANGEWINDOWMESSAGEFILTER)( UINT message , DWORD dwFlag);#endif #ifndef MSGFLT_ADD #define MSGFLT_ADD 1 #endif #ifndef WM_COPYGLOBALDATA #define WM_COPYGLOBALDATA 0x0049 #endif // 초기화 CHANGEWINDOWMESSAGEFILTER ChangeWindowMessageFilter = NULL ;HINSTANCE hDll; hDll = LoadLibrary(_T( "USER32.DLL" ));if (hDll) { ChangeWindowMessageFilter =(CHANGEWINDOWMESSAGEFILTER)GetProcAddress(hDll, "ChangeWindowMessageFilter" ); if (ChangeWindowMessageFilter) { ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD); ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD); ChangeWindowMessageFilter(WM_COPYGLOBALDATA, MSGFLT_ADD); } FreeLibrary(hDll); } |
※ 참고 사이트: code project
2. 임시 폴더에 한글이 들어있으면 문제 발생
이 문제는 정확한 원인을 파악하지는 못하고, 현상만 확인했다.
관리자 모드로 프로그램을 실행하면 임시 폴더에 한글이 있어도 별 문제가 없다.
그런데, 사용자 모드에서 실행하면 일부 프로그램이 제대로 동작하지 않는다.
웃긴 건 임시 폴더에서만 그런 현상이 발생한다는 것이다.
그래서 임시 폴더에 한글이 들어있으면 최대한 한글이 들어있지 않은 폴더를 알아서 찾도록 수정헀다.
정확한 순서는 기 지정된 폴더 → 윈도우 임시 폴더 → c:\windows\temp 순.
이 과정에서 적합한 폴더를 찾지 못하면 경고 메시지를 출력한다.
덧1. 2번 문제는 (1번과는 반대로) 사용자 모드에서만 발생한다. (즉, 이 두 문제는 동시에 발생하지 않음)
덧2. UAC를 끄면 1번, 2번 모두 발생하지 않는다. 하지만, 이걸 권장할 순 없다.
가장 빠른 iOS용 동영상 변환기 v8.3 업데이트 (90) | 2013.01.20 |
---|---|
뭔가 다소 이상한 iOS 비디오 재생기의 챕터 기능 (1) | 2012.12.13 |
아이폰5 갈아타기 완료! (9) | 2012.12.08 |
iOS용 동영상 변환기 v7.4d 업데이트 (29) | 2012.11.10 |
iOS용 동영상 변환기 v7.3 업데이트 (50) | 2012.09.18 |
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.