2014-04-03 51 views

回答

1

那麼,你應該嘗試動態調用它,因爲你需要LoadLibraryGetProcAddress


使用範例

if (/*IsVista()*/) 
{ 
    typedef BOOL (WINAPI *ChangeMessageFilter)(UINT message, DWORD dwFlag); 
    #define MSGFLT_ADD 1 
    #define MSGFLT_REMOVE 2 
    BOOL res = FALSE; 
    HMODULE user32 = LoadLibrary(L"User32.dll"); 
    if (user32 != NULL) 
    { 
     ChangeMessageFilter filter = (ChangeMessageFilter)::GetProcAddress(user32, "ChangeWindowMessageFilter"); 
     if (filter != NULL) 
     { 
      res = filter(/*your value*/, MSGFLT_ADD); 
     } 
     ::FreeLibrary(user32); 
    } 
} 

另一件事,你應該更好地運用ChangeWindowMessageFilterEx,因爲它是能夠接受的只有一個窗口,並不是所有的項目信息。

+0

這個效果很好。 – user3494350

+0

「ChangeWindowMessageFilter」有什麼問題? – user3494350

+0

['ChangeWindowMessageFilter()'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms632675.aspx)(Vista +)將更改應用於整個進程。 ['ChangeWindowMessageFilterEx()'](http://msdn.microsoft.com/en-us/library/windows/desktop/dd388202.aspx)(Win7 +)改爲將改變應用於特定的窗口。 –

相關問題