[リストへもどる]
一括表示

投稿時間:2004/04/22(Thu) 14:07
投稿者名:ゆーみん
Eメール:
URL :
タイトル:
.msiファイルの実行(記述として)
いつもお世話になっております。

「Test.msi」というインストーラーを作成しました。
それを、ダブルクリック等して、通常は起動すると
思いますが、VBの記述としてこの「Test.msi」を
起動させたいのですが、できるのでしょうか?

保存場所:「C:\Temp\Test.msi」

当サイトの「実行形式(*.EXE)ファイルの実行」を
参考にしたのですが、そんな甘くないようで、
出来ませんでした。

Dim Ret As Long
Ret = Shell("C:\Temp\Test.msi") 
って、感じでは駄目ですよね。

どうにか方法はあるのでしょうか?
よろしくお願い致します。

投稿時間:2004/04/22(Thu) 14:44
投稿者名:kara
Eメール:
URL :
タイトル:
Re: .msiファイルの実行(記述として)
花ちゃん様にある
「関連付けされたファイルを起動」
http://www.bcap.co.jp/hanafusa/VBHLP/tap_kanren.htm

「Win32 API関数を使ったやり方」
を参考にしてはいかがですか?

投稿時間:2004/04/22(Thu) 17:22
投稿者名:ゆーみん
Eメール:
URL :
タイトル:
Re^2: .msiファイルの実行(記述として)
kara様、ご返答有難う御座います。

> 花ちゃん様にある
> 「関連付けされたファイルを起動」
の部分を参考にしてやってみました。
私のやりたかった事が出来そうで、助かりました。

それで、追加質問なのですが、
ret = ShellExecute(Me.hwnd, "Open", MyFile1, _
       vbNullString, vbNullString, SW_SHOWMAXIMIZED)
の部分を、私は「標準モジュール」に記述することにしました。
すると、「Me.」の部分で怒られます。
また、「Me.」の部分を取ると「変数が定義されていません」と
怒られます。

API関連は、ほとんど触ったことが無く、あまり変に弄ると
大変なことになるので、困っているのですが、
上記の記述を「標準モジュール」で使う場合には、どのように
記述すれば良いのでしょうか?

申し訳ありませんが、よろしくお願い致します。

投稿時間:2004/04/22(Thu) 21:07
投稿者名:黒影
Eメール:
URL :
タイトル:
Re^3: .msiファイルの実行(記述として)
> ret = ShellExecute(Me.hwnd, "Open", MyFile1, _
>        vbNullString, vbNullString, SW_SHOWMAXIMIZED)
> の部分を、私は「標準モジュール」に記述することにしました。
> すると、「Me.」の部分で怒られます。
> また、「Me.」の部分を取ると「変数が定義されていません」と
> 怒られます。

「Me.hwnd」を呼び出す「標準モジュール」に
引数で渡してあげれば良いんじゃないかな?
ダメでしたらごめんなさい。

投稿時間:2004/04/23(Fri) 10:00
投稿者名:kara
Eメール:
URL :
タイトル:
Re^4: .msiファイルの実行(記述として)
ShellExecuteの第一引数は
親になるウインドウのハンドルなので
親子関係を特に気にする必要がないとしたら
0&
でいいと思います

気にする必要があるのだとしたら
黒影さんがおっしゃっているように
Me.hWnd
を引数で渡してしまえばいいと思います

投稿時間:2004/04/23(Fri) 11:31
投稿者名:kara
Eメール:
URL :
タイトル:
Re^5: .msiファイルの実行(記述として)
ちょっと追加です

ShellExecuteの説明についてはこちらなどを参考にしてください
「マイクロソフト サポート技術情報 - 170918」
http://support.microsoft.com/default.aspx?scid=kb;ja;170918
他にもgoogleなどで検索すればいろいろな情報を得られます

関係ないですけど
No.8757の投稿が初投稿でした
花ちゃん様、皆様、どうぞよろしくお願いします
ってここに書いていいのだろうか・・・

投稿時間:2004/04/23(Fri) 13:41
投稿者名:ゆーみん
Eメール:
URL :
タイトル:
解決: .msiファイルの実行(記述として)
黒影様、kara様、ご返答有難う御座いました。
該当部分に「0&」を指定することで解決できました。

有難う御座いました。