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

解決


汽車男  2005-07-26 04:41:34  No: 123709

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


  2005-07-26 05:48:29  No: 123710

VB6?.NET?


id_rsa+  2005-07-26 08:31:43  No: 123711

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


もげ  2005-07-26 17:27:29  No: 123712

ここの管理者である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 19:30:59  No: 123713

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

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


ガッ  2005-07-26 19:59:32  No: 123714

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


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

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






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