ファイル名を指定して関連付けされたアプリを立ち上げるのにShellExecuteのAPIを見よう見まねで使っていますが、これには「デバイスコテキスト」にアクティブなFORMを指定する必要があるようです。 そのため現在は各FORMにellExecuteのプロシージャを貼り付けていますが、これを標準モジュールに一括してスマートにしたいのですが方法がわかりませんので教えてください。
VB6?.NET?
ShellExecute(GetActiveWindow(), "Open", "Calc.exe", "c:\windows\", "", SW_SHOW)
ここの管理者である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
皆様、ありがとうございました。 お教えいただいたサンプルコード、ご紹介のサンプルコードを見ていて次のような解決策を考え、成功しました。
1.標準モジュールに一つだけ「Public Sub KanrenKidou()」を置く。 同時にPublic Hnadler, Public KidouFile を宣言。
2.他のフォームから呼ぶ時に Handler=Me.hWnd:KidouFile="D:\・・・・" : KanrenKidou
とすることにより大いに簡素化できました。 ありがとうございました。 稚拙な質問に暖かくお付き合いいただき感謝しています。
> 1.標準モジュールに一つだけ「Public Sub KanrenKidou()」を置く。
> 同時にPublic Hnadler, Public KidouFile を宣言。
>2.他のフォームから呼ぶ時に
> Handler=Me.hWnd:KidouFile="D:\・・・・" : KanrenKidou
…なんでKanrenKidou()の引数にしないのでしょうか…?気になります。
ツイート | ![]() |