他のフォームからの関連付けファイルの実行方法

解決


汽車男  2005-07-25 19:41:34  No: 123709  IP: [192.*.*.*]

ファイル名を指定して関連付けされたアプリを立ち上げるのにShellExecuteのAPIを見よう見まねで使っていますが、これには「デバイスコテキスト」にアクティブなFORMを指定する必要があるようです。  そのため現在は各FORMにellExecuteのプロシージャを貼り付けていますが、これを標準モジュールに一括してスマートにしたいのですが方法がわかりませんので教えてください。

編集 削除
 2005-07-25 20:48:29  No: 123710  IP: [192.*.*.*]

VB6?.NET?

編集 削除
id_rsa+  2005-07-25 23:31:43  No: 123711  IP: [192.*.*.*]

ShellExecute(GetActiveWindow(), "Open", "Calc.exe", "c:\windows\", "", SW_SHOW)

編集 削除
もげ  2005-07-26 08:27:29  No: 123712  IP: [192.*.*.*]

ここの管理者であるMADIA殿が提供している
http://madia.world.coocan.jp/vb/API/ShellExecute.htm
のまんまですけど、
'標準モジュール
Public Declare Function ShellExecute  Lib "SHELL32"  Alias "ShellExecuteA" (ByVal hWnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&) As Long

Public Const SW_SHOW = 5 'ウインドウをアクティブにする

'ここからはフォーム内の処理です
Private Sub Command1_Click()
    Dim Ret As Long
      Ret = ShellExecute(Me.hWnd, "Open", "Calc.exe", "c:\windows\", "", SW_SHOW)
End Sub

編集 削除
汽車男  2005-07-26 10:30:59  No: 123713  IP: [192.*.*.*]

皆様、ありがとうございました。  お教えいただいたサンプルコード、ご紹介のサンプルコードを見ていて次のような解決策を考え、成功しました。

1.標準モジュールに一つだけ「Public Sub KanrenKidou()」を置く。  同時にPublic Hnadler, Public KidouFile を宣言。
2.他のフォームから呼ぶ時に  Handler=Me.hWnd:KidouFile="D:\・・・・" : KanrenKidou
とすることにより大いに簡素化できました。  ありがとうございました。  稚拙な質問に暖かくお付き合いいただき感謝しています。

編集 削除
ガッ  2005-07-26 10:59:32  No: 123714  IP: [192.*.*.*]

> 1.標準モジュールに一つだけ「Public Sub KanrenKidou()」を置く。
>     同時にPublic Hnadler, Public KidouFile を宣言。
>2.他のフォームから呼ぶ時に
>    Handler=Me.hWnd:KidouFile="D:\・・・・" : KanrenKidou
…なんでKanrenKidou()の引数にしないのでしょうか…?気になります。

編集 削除