5

私は、Visual Basic 6 で書かれた小さなユーティリティ アプリを持っています。これは、最近 Windows 7 を使用しているクライアントから通知があり、動作が異なることを示してくれるまで、長年にわたって XP クライアントで問題なく実行されてきました。

私のVBアプリがダイアログを表示すると、ユーザーがタスクバーでクリックするまで非表示のままになります。

コードを変更したので、「.show vbModal」コマンドを使用するのではなく、非モーダルでフォームを表示するように変更し、BringWindowToFront や SetWindowPos などのさまざまな API 呼び出しを追加して最上位にし、フォームに .focus を呼び出しました。これらの追加の指示にもかかわらず、私が達成できる最良の結果は、ユーザーにクリックを促すフォームを点滅させることです。

何を試しても、ユーザーの介入なしに、ウィンドウを一番上に、フォーカスを合わせて表示することはできません。

ノート。これは ActiveX exe プロジェクトであり、COM を介して Win16 アプリによって呼び出されています。

他の誰かがこの動作に遭遇し、解決策を知っていますか?

提案/アドバイスをいただければ幸いです。

4

1 に答える 1

5

アプリケーションは (Windows に嘘をつくことなく) フォーカスを盗むことはできません。呼び出し元のアプリは、AllowSetForegroundWindow()(win16 で利用可能な場合) 実際に呼び出して、COM プロセスがフォーカスを奪ったり、SetForegroundWindow()自分自身を呼び出したりできるようにする必要があります。

SetForegroundWindow()フォーカスを設定する条件については、のヘルプを参照してください。

于 2012-05-31T11:11:18.283 に答える