アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB.NET2003でフォームを表示していて
そこにあるボタンを押すとその下のウィンドウを
常に最前面に表示するようにしたいのでAPIを使って下のように
書いてみたのですががうまく動いてくれません。
恐れ入りますが訂正箇所などを教えていただければ幸いです。

Dim win1 As Integer
Dim win2 As Integer
Dim win3 As Integer

win1 = GetTopWindow(Me.Handle.ToInt32)
win2 = GetParent(win1)
win3 = GetNextWindow(win2, 2)
SetWindowPos(win3, -1, 100, 100, 100, 100, &H40)

宜しくお願い致します

A 回答 (3件)

gomachans1さんのコードを実行すると何かエラーがないのに、うまく動きませんでした。


いちいち行デバッグしたら、正しいHandleを取得できないことに気づきました。
コードを修正するつもりですが、うまくできませんでした。

>>一つ前ウィンドウをTopMost=True
そのウィドウはVB.2003のMDIサブウィドウですか?

この回答への補足

わざわざ試して頂いてありがとうございます。
設定したいウィンドウはMDIウィンドウではなく
インターネットエクスプローラーや開いたフォルダや市販のソフトなど
なんでも設定したいです。
IntegerをIntPtrに変えたり色々試しているのですが、
最前面に真っ白な■が表示されて消えなくなってしまったりと
全く違うハンドルやID?でAPIを実行してしまっているようです。
お助けいただきたいです。

補足日時:2008/06/13 16:54
    • good
    • 0

それなら、力にならないとおもいます。


すみませんでした。
    • good
    • 0

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

補足日時:2008/06/12 19:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!