[リストへもどる]
一括表示

投稿時間:2003/11/19(Wed) 23:58
投稿者名:ぺそ
Eメール:
URL :
タイトル:
親フォームのように設定したい
Form1から起動する、または既に起動している外部アプリを
Form1の親フォームのように前に表示する方法を探しています。
SetWindowPosでは他のアプリよりも前に出てしまうので
SetParentを使用してみましたが、外部アプリの中に表示されてしまいました。
なにかよい方法ありませんか?

投稿時間:2003/11/22(Sat) 01:43
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re: 親フォームのように設定したい
MSDNでは、以下の記述がありますが、SetWindowLong 関数でそれなりに動くようです。
You must not call SetWindowLong with the GWL_HWNDPARENT index to change the parent
of a child window. Instead, use the SetParent function.

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_HWNDPARENT = (-8)
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub Command1_Click()
    Dim lngReturnValue As Long
    Dim lngHwnd As Long

    lngHwnd = FindWindow(vbNullString, "無題 - メモ帳")
    lngReturnValue = SetWindowLong(Me.hwnd, GWL_HWNDPARENT, lngHwnd)

End Sub

マイクロソフトで使うなといっているので、使う場合は十分に検証をしてください。