tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル起動時に引数を渡す方法
記事No7214
投稿日: 2008/03/19(Wed) 11:31
投稿者メグミ
いつもお世話になっております

WindowsXP VB2005 環境です

あるソフトからプログラムを起動する際、起動引数を渡しているソフトがあり、
VB2005でその起動引数を取得したいのですがどうすれば可能なのでしょうか?。
VB2005で作成したプログラムは発行から「SOFT.application」という名前で
作成しています。
ソフトよりSOFT.applicationを起動するとプログラムの起動に失敗しましたと
エラーになってしまいます

Sub Mainは下記のようにしています

Public Class MENU
Shared Sub Main(ByVal CmdArgs() As String)

        Dim s As String

        For Each s In CmdArgs
            Console.WriteLine(s)
            MsgBox(CmdArgs)
        Next
End Sub
End Class

[ツリー表示へ]
タイトルRe: 起動時に引数を渡す方法
記事No7215
投稿日: 2008/03/19(Wed) 11:51
投稿者Hongliang
もうちょっと整理して書いてください。
A.exe という何らかのアプリケーションと B.exe という VB2005 で作成したアプリケーションがある。
A.exe は B.exe を起動させる。その際 A.exe は任意のコマンドライン引数を渡してくる。
ということで良いんでしょうか?

[ツリー表示へ]
タイトルRe^2: 起動時に引数を渡す方法
記事No7217
投稿日: 2008/03/19(Wed) 13:22
投稿者メグミ
 ご返答ありがとうございます。 

>もうちょっと整理して書いてください。
>A.exe という何らかのアプリケーションと B.exe という VB2005 で作成したアプリケーシ>>ョンがある。
>A.exe は B.exe を起動させる。その際 A.exe は任意のコマンドライン引数を渡してくる。
>ということで良いんでしょうか?

 内容は上記の通りです。コマンドライン引数はSub mainで受け取れると見たのですが
エラーとなってしまいます。

[ツリー表示へ]
タイトルRe: 起動時に引数を渡す方法
記事No7218
投稿日: 2008/03/19(Wed) 13:30
投稿者魔界の仮面弁士
> VB2005で作成したプログラムは発行から「SOFT.application」という名前で
> 作成しています。
SOFT.application は、ただの XML ファイルです。
アプリの実体(*.exe または *.exe.deploy)は別にありますよね?

> ソフトよりSOFT.applicationを起動するとプログラムの起動に失敗しましたと
> エラーになってしまいます
どのように起動していますか?
ローカルなら、ショートカット(*.appref-ms)から起動する事になるでしょうし、
Web なら、http://server/foo/SOFT.application へのクエリ文字列として渡す事になるでしょう。

[ツリー表示へ]
タイトルRe^2: 起動時に引数を渡す方法
記事No7220
投稿日: 2008/03/19(Wed) 14:34
投稿者メグミ
> > VB2005で作成したプログラムは発行から「SOFT.application」という名前で
> > 作成しています。
> SOFT.application は、ただの XML ファイルです。
> アプリの実体(*.exe または *.exe.deploy)は別にありますよね?
>
> > ソフトよりSOFT.applicationを起動するとプログラムの起動に失敗しましたと
> > エラーになってしまいます
> どのように起動していますか?
> ローカルなら、ショートカット(*.appref-ms)から起動する事になるでしょうし、
> Web なら、http://server/foo/SOFT.application へのクエリ文字列として渡す事になるでしょう。

 いつもお世話になっています。

 発行ウィザードの、UNCパスまたはファイル共有からインストールで発行したフォルダ
には、*.exeファイルや*.exe.deployファイルは無いのですが、発行フォルダ\SOFT_1_0_0_3
フォルダ以下にはSOFT.exe.deployやSOFT.exe.config.deployがあります。
SOFT_1_0_0_3フォルダ以下のファイルを実行(クリック)しても動作しないのでSOFT.applicationを実行していました。
元々発行ウィザードは使っていなかったのですが、WindowsXP上でネットワーク越でexeファイルを実行すると、セキュリティの警告でエラーになってしまった為発行ウィザードを利用
していました。

[ツリー表示へ]
タイトルRe^3: 起動時に引数を渡す方法
記事No7221
投稿日: 2008/03/19(Wed) 14:56
投稿者魔界の仮面弁士
> SOFT_1_0_0_3フォルダ以下のファイルを実行(クリック)しても動作しないのでSOFT.applicationを実行していました。

\SOFT.application は、\SOFT_1_0_0_3.application と同一のコピーです。
このいずれかを呼び出すと、dfshim.dll の ShOpenVerbApplication API 経由で
アプリのバージョンチェックと、exeの起動が行われます。

実際の exe は、\SOFT_1_0_0_3\SOFT.exe.deploy からローカルのユーザ別フォルダ、
たとえば C:\Documents and Settings\Foo\Local Settings\Apps\…… に配置され、
それが呼び出されるといった仕組み仕組みです。

# この辺りの動作は、発行時に、Web からのみ起動可能なタイプにしたのか、
# ローカルからでも起動できるタイプにしたのか、また、バージョンチェックを
# 行うのか、オフラインでも実行できるのかといった設定によって変化します。

[ツリー表示へ]
タイトルRe^4: 起動時に引数を渡す方法
記事No7246
投稿日: 2008/03/24(Mon) 12:17
投稿者メグミ
> \SOFT.application は、\SOFT_1_0_0_3.application と同一のコピーです。
> このいずれかを呼び出すと、dfshim.dll の ShOpenVerbApplication API 経由で
> アプリのバージョンチェックと、exeの起動が行われます。
>
> 実際の exe は、\SOFT_1_0_0_3\SOFT.exe.deploy からローカルのユーザ別フォルダ、
> たとえば C:\Documents and Settings\Foo\Local Settings\Apps\…… に配置され、
> それが呼び出されるといった仕組み仕組みです。
>
> # この辺りの動作は、発行時に、Web からのみ起動可能なタイプにしたのか、
> # ローカルからでも起動できるタイプにしたのか、また、バージョンチェックを
> # 行うのか、オフラインでも実行できるのかといった設定によって変化します。

 いつもお世話になっています。

 発行設定ですが
 UNCパスまたはファイル共有からインストールで発行(WEBサイトを使用しない)
 アプリケーションはオンラインでのみ使用できる
 にしています

 発行オプションの"deploy"ファイル拡張子を使用しないにすると\SOFT_1_0_0_3\以下に
exeファイルが作成されました。\SOFT_1_0_0_3\soft.exeファイルを直接クリックすると
セキュリティの警告が表示されメニューより何か実行するとエラーになってしまいます。

 発行時のセキュリティ(タブでの)設定で、ClickOnceセキュリティを有効にするにしていると、デバッグ時(コマンドライン引数で)エラーになるので、ClickOnceセキュリティを無効
にしていたのですが発行を行うとClickOnceセキュリティが有効に戻ってしまいます。
 これはどこか設定が誤っているのでしょうか?

[ツリー表示へ]
タイトルRe^5: 起動時に引数を渡す方法
記事No7247
投稿日: 2008/03/24(Mon) 14:43
投稿者魔界の仮面弁士
> exeファイルが作成されました。\SOFT_1_0_0_3\soft.exeファイルを直接クリックすると
> セキュリティの警告が表示されメニューより何か実行するとエラーになってしまいます。

ネットワーク上にあるファイルと、ローカル HDD 上にあるファイルとでは、
.NET の「コード アクセス セキュリティ」により、異なるアクセス権で動作します。

それらの EXE 等が、ローカル上にコピーされた状態になっているかを確認してください。
(ClickOnce 発行による配置では、先述したユーザ別フォルダにコピーされる仕様です)

> にしていたのですが発行を行うとClickOnceセキュリティが有効に戻ってしまいます。

(インストーラ形式での配布や、EXE コピーによる配布ではなく) ClickOnce による
「発行」を使う場合、その部分信頼/完全信頼の設定が必要になってきます。

[ツリー表示へ]
タイトルRe: 起動時に引数を渡す方法
記事No7219
投稿日: 2008/03/19(Wed) 13:40
投稿者ダンボ
まず、Sub Main()から実行開始する設定になっているでしょうか?
http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?mode=allread&no=7183&page=0

それがOKなら、いきなり結合試験するのではなく呼ばれるB.exe のほうの単体試験を
ちゃんとしないと(笑)

コマンド引数をシミュレートしてB.exe をデバッグする仕掛けは
「プロジェクト」→「プロパティ」→「デバッグ」でできます。

[ツリー表示へ]
タイトルRe^2: 起動時に引数を渡す方法
記事No7222
投稿日: 2008/03/19(Wed) 15:04
投稿者メグミ
> まず、Sub Main()から実行開始する設定になっているでしょうか?
> http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?mode=allread&no=7183&page=0
>
> それがOKなら、いきなり結合試験するのではなく呼ばれるB.exe のほうの単体試験を
> ちゃんとしないと(笑)
>
> コマンド引数をシミュレートしてB.exe をデバッグする仕掛けは
> 「プロジェクト」→「プロパティ」→「デバッグ」でできます。

 ご返答ありがとうございます。

 「プロジェクト」→「プロパティ」→「デバッグ」でデバッグを行ったところ

現在のプロジェクト設定は、プロジェクトが特定のセキュリティのアクセス許可でデバッグされることを指示しています。このモードでは、コマンドライン引数は実行可能ファイルに渡されません。デバッグを続行しますか?

 というエラーになってしまいました。これはどこかおかしいのでしょうか?

[ツリー表示へ]