win 7の下のファイルのドラッグ&ドロップが無効な問題を解決します
1336 ワード
最近、テスト側はこのようなバグを提出しました:ファイル転送モジュールをテストする時、プログラムがwin 7の下でファイルのドラッグ&ドロップが失効する問題を発見しました.このような問題を見たばかりで、win 7のセキュリティレベルと関係があると推定されていますが、具体的にどのように処理するかはあまり分かりません.そこで、関連する疑問を持ってネットで調べて、関連する処理方法を見つけて、ここでみんなと分かち合います.
具体的には、現在のオペレータが管理者か一般ユーザーかによって異なり、管理者であればドラッグ&ドロップできます.通常のユーザーの場合、ドラッグアンドドロップは無効になります.では、具体的な深層の原因は何なのでしょうか.Win 7は従来のXPやWin 2003に比べて安全制御が厳しい.
セキュリティ権限の問題を解決するには、ChangeWindowMessageFilterを呼び出して0 x 0049とWM_をそれぞれ許可する必要があります.DROPFILESメッセージが入ってきて応答し、関連コードは以下の通りである.
具体的には、現在のオペレータが管理者か一般ユーザーかによって異なり、管理者であればドラッグ&ドロップできます.通常のユーザーの場合、ドラッグアンドドロップは無効になります.では、具体的な深層の原因は何なのでしょうか.Win 7は従来のXPやWin 2003に比べて安全制御が厳しい.
セキュリティ権限の問題を解決するには、ChangeWindowMessageFilterを呼び出して0 x 0049とWM_をそれぞれ許可する必要があります.DROPFILESメッセージが入ってきて応答し、関連コードは以下の通りである.
BOOL CPcmtwndApp::ChangeWndMessageFilter( UINT uMessage, BOOL bAllow )
{
typedef BOOL (WINAPI* ChangeWindowMessageFilterFn)( UINT, DWORD );
HMODULE hUserMod = NULL;
BOOL bResult = FALSE;
hUserMod = LoadLibrary( "user32.dll" );
if ( hUserMod == NULL )
{
return FALSE;
}
ChangeWindowMessageFilterFn pfnChangeWindowMessageFilter = (ChangeWindowMessageFilterFn)GetProcAddress( hUserMod, "ChangeWindowMessageFilter" );
if ( pfnChangeWindowMessageFilter == NULL )
{
FreeLibrary( hUserMod );
return FALSE;
}
bResult = pfnChangeWindowMessageFilter( uMessage, bAllow?1:2 ); // 1-MSGFLT_ADD, 2-MSGFLT_REMOVE
FreeLibrary( hUserMod );
return bResult;
}
......
// , win7
ChangeWndMessageFilter( WM_DROPFILES, TRUE );
ChangeWndMessageFilter( 0x0049, TRUE ); // 0x0049 - WM_COPYGLOBALDATA
......