zoukankan      html  css  js  c++  java
  • 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;
            }
        }
  • 相关阅读:
    软件测试培训第9天
    软件培训第8天
    软件测试培训第7天
    软件测试培训第5天
    软件测试培训第6天
    软件测试培训第4天
    软件测试培训第3天
    MySQL复杂用法
    MySQL的基本语法
    VM虚拟机上安装Redhat
  • 原文地址:https://www.cnblogs.com/pugna/p/3790877.html
Copyright © 2011-2022 走看看