DllFormをVBアプリから閉じる

解決


Syake  2005-08-04 21:33:28  No: 91271

皆さんこんにちは

只今DllForm(Delphi)をVB6.0アプリから表示させていますが、あるタイミングでDllFormをVBアプリから終了(閉じる)しようとしています。
色々参考にさせて頂いて・・・

’-------------------------------------------------モジュール
Public dllFormHnd As Long 'DllFormのWindハンドル
’DllFormを表示させる:戻り値は表示したWindowのハンドル
Public Declare Function DllTestOpenFrm Lib "DllForm.dll" (ByVal intCode As Long) As Long
'IsWindowの関数呼び出し
Public Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long
'SendMessage関数の呼び出し
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                      (ByVal hwnd As Long, ByVal wMsg As Long, _
                      ByVal wParam As Long, lParam As Long) As Long
' システムコマンドを指定するメッセージ
Public Const WM_SYSCOMMAND = &H112
' ウィンドウをクローズするメッセージ
Public Const SC_CLOSE = &HF060

’-------------------------Formで実際の処理
’{DllFormの表示}
Private Sub Command2_Click()
    If IsWindow(dllFormHnd) = 0 Then  ’二重呼び出し防止
        dllFormHnd = DllTestOpenFrm(9)
    End If
End Sub

’{DllFormを閉じる}
Private Sub Command3_Click()
    Dim Ret As Long
    If IsWindow(dllFormHnd) <> 0 Then’DllFormは存在するか?
        MsgBox ("DllFormは表示してる")’Test(確認のため)
        Ret = SendMessage(dllFormHnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)
    Else
        MsgBox ("DllFormは表示してない")
    End If
End Sub

としましたが、DllFormは認識してるようですが何故か閉じません。
ちなみに、他を参考に
Private Sub Command4_Click()
    Dim Ret As Long
    ' 自ウィンドウにウィンドウクローズのメッセージを送信
    Ret = SendMessage(Me.hwnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)
End Sub
は、有効でした。
Dllを作成した言語で作成した別のアプリから同様の処理でSendMessageを発行すると閉じます。
DllFormを扱う上で、VB特有で何かあるのでしょうか?
記述自体は間違ってないと思うのですが・・・何か違うのかな?
よろしくお願いします。


Syake  2005-08-08 17:45:11  No: 91272

自己レス
何がなんだか、ようわからんです。
VB側で終了させるのはあきらめました。

取りあえず、取得したWindowHandleをDllに返してDll側で終了さるように
しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加