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

 今晩は,質問させていただきます.どうぞよろしくお願いいたします.

 環境:VB2008 + VistaとXP でございます。
今開いているフォルダのパス一覧を取得いたしたく、検索いたしましたところ
http://oshiete.goo.ne.jp/qa/4475756.html
にご紹介して下さっておりましたため、同じようにコーディングさせていただきました。
>Shell32.dllとShDocVw.dllを参照設定して
>  Dim sh As New Shell32.Shell
>  Dim objWins As SHDocVw.IShellWindows = sh.Windows
>  For Each oWeb As SHDocVw.InternetExplorer In objWinds
>    Debug.Print(oWeb.LocationName & " " & oWeb.FullName)
>  Next

 Windows7上ではうまく動作いたしますが、何故かVistaとXPではエラーが出てまいります。

・Vistaの場合:デバッグ中(緑の再生ボタン)はうまく、エクスプローラで開いている
          フォルダのパスが取れます。
         しかし、ビルドいたしましたExeファイルから実行いたしますと、
         添付図のようなエラーメッセージが出てまいります。

・XPの場合: デバッグ中・ビルド後ともにエラーになります。

 Vista(可能でございましたらXPも)でうまく機能させるため、何かよいコーディング方法など
ございませんでしょうか?
 まったく別の方法でも結構でございます。(XPは半分諦めかけでございますが。。。)

 もし何か良さそうな方法などございましたら、是非ヒントをいただければと思います。
もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。

「【VB.NET】開いているフォルダのパス」の質問画像

A 回答 (1件)

COMを参照設定しているので 出来上がったEXEのみではなく interop.ShDocVw.dllとinterop.Shell32.dllもEXEと同じフォルダーに無いといけないのかも …




Setupプロジェクトを作ってインストールしましょう
出来上がったEXEとinteropのDLL2つを含むようにします

Setupプロジェクトを新規に作成します
ソリューションにインストール対象のプロジェクトを追加します
Setupプロジェクトのアプリケーションフォルダーを選択します
プロジェクト > 追加 > プロジェクト出力
プロジェクト名で 作成したアプリを選択
リスト項目で『プライマリ出力』を選択
OKをクリック

これで
ieframe.dll interop.ShdocVw.dll interop.Shell32.dll Shell32.dll 作成したアプリ
が右ペインに追加されます

ieframe.dllとShell32.dllはインストールには不要なようですので
おのおの選択して プロパティウィンドウの 『Exclude』をTrueに変更してセットアップから排除します

この状態で セットアッププロジェクトをビルドして
setup.exe と セットアッププロジェクト名.msi の2本を使ってインストールしてみましょう
    • good
    • 0
この回答へのお礼

 redfox63様

 どうもありがとうございます!
ご活躍拝見いたしておりますm(_ _)m

>Setupプロジェクトを作ってインストールしましょう
調べてまいりましたが、私が持っておりますExpress Editionでは
できない機能のようでございますね^^;
有償版を今から購入してまいります。よい機会でございます^^

 まだインストーラを作成したことがございませんゆえ、
作ってみるのが楽しみでございます^^
 この度はご親切にアドバイスいただき誠にありがとうございました!!!

お礼日時:2010/12/25 03:55

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