首页 > 代码库 > win7下万能跨进程PostMessage/SendMessage

win7下万能跨进程PostMessage/SendMessage

typedef BOOL (WINAPI *_ChangeWindowMessageFilter)( UINT , DWORD); BOOL AllowMeesageForWin7(UINT uMessageID, BOOL bAllow)//注册Win7全局消息 {     BOOL bResult = FALSE;     HMODULE hUserMod = NULL;     hUserMod = LoadLibrary( _T("user32.dll") );     if( NULL == hUserMod )     {         return FALSE;     }        do    {        _ChangeWindowMessageFilter pChangeWindowMessageFilter = (_ChangeWindowMessageFilter)GetProcAddress( hUserMod, "ChangeWindowMessageFilter" );         if( NULL == pChangeWindowMessageFilter )         {             AfxMessageBox(_T("create windowmessage filter failed"));                     break;        }             bResult = pChangeWindowMessageFilter( uMessageID, bAllow ? 1 : 2 );//MSGFLT_ADD: 1, MSGFLT_REMOVE: 2     }while (0);    if( NULL != hUserMod )     {         FreeLibrary( hUserMod );     }     return bResult; }BOOL IsVistaOrLater(){    OSVERSIONINFO osvi;    ZeroMemory(&osvi, sizeof(OSVERSIONINFO));    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);    GetVersionEx(&osvi);    if( osvi.dwMajorVersion >= 6 )        return TRUE;    return FALSE;}

简单使用:

    if (IsVistaOrLater())    {        if ( !AllowMeesageForWin7(0xAAA,TRUE) || !AllowMeesageForWin7(0xBBB,TRUE) )        {            MessageBox("注册消息失败.","发生错误!",0);            return FALSE;        }    }