- ベストアンサー
VB.NET2003でウィンドウを最前面に表示する方法
- VB.NET2003でフォーム内のボタンを押すと、その下のウィンドウを常に最前面に表示する方法について教えてください。
- 提供いただいたコードでは目的の動作が得られない場合があるようです。正しい動作を実現するためには、以下の訂正箇所が必要です。
- Dim win1 As Integer, win2 As Integer, win3 As Integerとしてウィンドウの情報を一時的に格納する変数を宣言します。GetTopWindow関数を使用してMe.Handle.ToInt32によって取得したウィンドウのハンドルをwin1に代入します。GetParent関数を使用してwin1の親ウィンドウのハンドルをwin2に代入します。さらに、GetNextWindow関数を使用してwin2の次のウィンドウのハンドルをwin3に代入します。そして、SetWindowPos関数を使用してwin3の位置を指定します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
gomachans1さんのコードを実行すると何かエラーがないのに、うまく動きませんでした。 いちいち行デバッグしたら、正しいHandleを取得できないことに気づきました。 コードを修正するつもりですが、うまくできませんでした。 >>一つ前ウィンドウをTopMost=True そのウィドウはVB.2003のMDIサブウィドウですか?
その他の回答 (2)
- kikujack
- ベストアンサー率47% (17/36)
それなら、力にならないとおもいます。 すみませんでした。
- kikujack
- ベストアンサー率47% (17/36)
GetTopWindow GetParent GetNextWindow SetWindowPos この四つのAPI関数をちゃんと宣言しますか?
補足
ご回答をありがとうございます。 APIの宣言ですが、下のように行っております。 間違いなどありましたらご指摘頂けると幸いです。 Declare Function SetWindowPos Lib "user32.dll" _ (ByVal hWnd As Integer, ByVal hWndInertAfter As Integer, _ ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, _ ByVal cy As Integer, ByVal uFlags As Integer) As Integer Declare Function GetTopWindow Lib "user32.dll" _ (ByVal hWnd As Integer) As Integer Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" _ (ByVal hwnd As Integer, ByVal wFlag As Integer) As Integer Declare Function GetParent Lib "user32.dll" _ (ByVal hWnd As Integer) As Integer
補足
わざわざ試して頂いてありがとうございます。 設定したいウィンドウはMDIウィンドウではなく インターネットエクスプローラーや開いたフォルダや市販のソフトなど なんでも設定したいです。 IntegerをIntPtrに変えたり色々試しているのですが、 最前面に真っ白な■が表示されて消えなくなってしまったりと 全く違うハンドルやID?でAPIを実行してしまっているようです。 お助けいただきたいです。