アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6.0で小さなアプリケーションを作っています。
同じフォルダ内にあるhtaファイルをVBから開きたいのですが、うまくいかずに悩んでしまっています。
具体的には、VBのフォームにボタンを作り、それを押すとhtaアプリが別ウィンドウで起動するという形です。
この方法について何かご存知でしたらアドバイス宜しくお願いします。

A 回答 (3件)

環境により実行ファイルが違う場所にあるかもしれないのですが、以下私の環境(Win2K,VB6.0SP6)での記述です。



Private Sub Command1_Click()
Call Shell("mshta.exe C:\*.hta", vbNormalFocus)
End Sub

と記載すれば実行できました。
(もちろんですが「*.hta」というファイルを「C:\」に作ってある状態です)

Shell関数は例えば
Dim Ret As Long
などで宣言した変数を使用して
Ret = Shell(***,vbNormalFocus)
(***はファイル名など)などでも使えます。

Shell関数についてはヘルプなどで見るとわかるかと思いますよ。

ちなみに、空白があるフォルダ名(My Documentsなど)を使用する場合などはこの方法だとエラー(実行されない)になる場合があります。
その際は

Dim MyFile As String

MyFile = Chr(34) & "C:\Documents and Settings\Administrator\My Documents\***.hta" & Chr(34)
Call Shell("mshta.exe " & MyFile,vbNormalFocus)

と前後にChr(34)を使用すると使えるようになります。
("mshta.exe "のexeのあとに必ず空白を一つ入れてください)

他にもAPIを使用した方法などありますが、一つの方法として書いておきます。
    • good
    • 0
この回答へのお礼

Shell関数をいろいろな書き方で試してもなかなかうまくいかずに悩んでいたのですが、おかげでスッキリ解決できました。APIの使い方も興味あるのでもっと勉強してみようと思います。早々に回答いただきありがとうございました。

お礼日時:2005/02/28 12:13

おっと、リロードしたら書き込みありましたね^^;



参考URLの張り忘れしたので、追記です。
http://www.vbvbvb.com/jp/gtips/0951/gShellExecut …

参考URL:http://www.vbvbvb.com/jp/gtips/0951/gShellExecut …
    • good
    • 0

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


Const DEF_HTA_FILE As String = "c:\Test.hta"

Sub Test1()
  '関連づいたアプリケーションで立ち上げる
  Call ShellExecute(0, "open", DEF_HTA_FILE, vbNullString, Environ("windir"), 1)
End Sub

Sub Test2()
  'アプリケーションを指定して立ち上げる
  Call Shell("mshta.exe " & DEF_HTA_FILE)
End Sub
    • good
    • 0
この回答へのお礼

関連付けアプリで立ち上げる方法もあるのですね。
とても勉強になります。
早々にご回答いただきありがとうございました。
教えていただいたリンクも参考にさせていただきます。

お礼日時:2005/02/28 12:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています