본문 바로가기
IT-개발,DB

[개발/MFC] Vista 이상에서 ActiveX로 타 프로세스로 데이터 공유하기

by SB리치퍼슨 2011. 7. 17.

[개발/MFC] Vista 이상에서 ActiveX로 타 프로세스로 데이터 공유하기
쌈꼬쪼려 소백촌닭
매니페스트 적용은 당엲 requredAdministrator로 한다.

ActiveX에서 SendMessage(otherhandle, WM_COPYDATA, ..., ...);
Vista(비스타) 이상에서 낮은 권한의 프로세스에서 높은 권한의 프로세스로
WM_COPYDATA 메세지를 보내지 못한다. 따라서 높은 권한의 프로세스에서
권한 문제를 해결해주어야 한다.

typedef BOOL (WINAPI *CHANGEWINDOWMESSAGEFILTER)(UINT message, DWORD dwFlag);

 

CHANGEWINDOWMESSAGEFILTER ChangeWindowMessageFilter = NULL;
HINSTANCE hDll;

hDll = LoadLibrary("User32.dll");
if (hDll == NULL)
{
 MessageBox(NULL, "User32.dll 파일이 존재하지 않습니다.", "Error", MB_OK);
}

ChangeWindowMessageFilter = (CHANGEWINDOWMESSAGEFILTER)GetProcAddress(hDll, "ChangeWindowMessageFilter");
if (ChangeWindowMessageFilter == NULL)
{
 MessageBox(NULL, "ChangeWindowMessageFilter함수가 존재하지 않습니다.", "Error", MB_OK);
}
ChangeWindowMessageFilter(WM_COPYDATA, 1);
FreeLibrary(hDll);

높은 권한 프로세스 main에 추가해주면 된다고 한다.

아직 적용못해봤지만 해봐야겠다.

 

반응형

댓글