|
こんにちは、小原です。
> > よ〜く見ていると、ウィンドウが一番後ろから手前へ来るような感じになってい
> > ます。
>
> んじゃ、やっぱりSetForegroundWindow()では表に出ないということのようで
> …。いったいどうしたことか?。何か常駐ソフトとかマウスユーティリティとか
> 入れてるようでしたら、一度終了させて様子を見てみて欲しいです。
// どこかからかパクってきたソースです。
// マシン固有なら解決にはなりませんが、どのOSでも以前の SetForegroundWindow
() と
// 同じような動きにしたい場合、以下の関数で対応できるかもしれません。
void CXxx::Xxx( HWND hwnd )
{
DWORD dwTarget_id, dwActive_id;
dwTarget_id = ::GetWindowThreadProcessId( hwnd, NULL );
if( dwTarget_id == 0 ) {
return;
}
dwActive_id = ::GetWindowThreadProcessId( ::GetForegroundWindow(), NULL );
if( dwActive_id == 0 ) {
return;
}
if( ::AttachThreadInput( dwTarget_id, dwActive_id, TRUE ) == FALSE ) {
return;
}
if( ::SetForegroundWindow( hwnd ) == FALSE ) {
return;
}
::AttachThreadInput( dwTarget_id, dwActive_id, FALSE );
}
|
|