過去に作ったソフトがVistaで動かない
・プロセス間通信がうまくいかないらしい。
セキュリティレベルの違うアプリケーション間では高いレベルのアプリケーションへSendMessage/PostMessageできないらしい。
| typedef BOOL (WINAPI *CHANGEWINDOWMESSAGEFILTER)(UINT message, DWORD dwFlag); CHANGEWINDOWMESSAGEFILTER ChangeWindowMessageFilter = NULL; HINSTANCE hDll; DWORD WM_COPYDATA2 = RegisterWindowMessage(“WM_COPYDATA2”); hDll = LoadLibrary(“USER32.DLL”); if (hDll){ ChangeWindowMessageFilter=(CHANGEWINDOWMESSAGEFILTER)GetProcAddress(hDll,”ChangeWindowMessageFilter”); if (ChangeWindowMessageFilter) { ChangeWindowMessageFilter(WM_COPYDATA,MSGFLT_ADD/*1*/); } FreeLibrary(hDll); } |
これでSendMessage(WM_COPYDATA2,MSG,WP,LP)が通るらしい。
韓国サイトに、WM_COPYDATAがこれで使えるってあちこちに同じソースがはりつけてあったが、噂によると、WM_USERS以降のメッセージでしか利用できないという話。
ここで問題発生。 RegisterWindowMessageを異なる権限で実行するとUniqなIDが返ってこないことが判明!


Comments