
No.3ベストアンサー
- 回答日時:
コマンドインタープリタ(XPならCMD.EXE)に引数を渡す方法で可能だと思います。
Dim psi As New System.Diagnostics.ProcessStartInfo()
'ComSpecのパスを取得する
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
psi.Arguments = "/c " & """*:\***"" -* *** -* ""***"""
returnValue = System.Diagnostics.Process.Start(psi)
私も同じように悩んで、この方法で解決しました。
この回答への補足
ご回答ありがとうございます。
起動できそうなんですが、起動するアプリケーションのパス(*:\***)にスペースが入ると起動できなくなり
ドライブルートに***を置くとComspecが構文エラーを吐き出します。
この際なので言ってしまうと、ffmpegを起動しようとしています。
実際に起動されるパスは以下のような形式です。
"{ソフトのインストールディレクトリ}\cores\ffmpeg" -y -i "入力ファイル名" -vcodec *** "出力先"
携帯動画変換君あたりのソースでも見れると参考になるのですが・・・
No.5
- 回答日時:
すいません、No.4の中の
str ="""""C:\Program Files\WinRAR\WinRAR.exe"" X ""C:\a.rar3"" ""C:\"""""
は、正しくは
str ="""""C:\Program Files\WinRAR\WinRAR.exe"" X ""C:\a.rar"" ""C:\"""""
でした。(a.rar3->a.rar)
Wizard_Zero様、sknbsknb2様
結局、正規表現を使って自力で起動することにしました。
ご回答ありがとうございました。
おそらく次回の質問あたりでソフトが完成すると思います。
その時も、ご回答お願いします。
No.4
- 回答日時:
No.3の補足についてお答えします。
"C:\Program Files\WinRAR\WinRAR.exe" X "C:\a.rar" "C:\"
という文字列をCMD.EXEに渡して、正常に解凍されることを確認しました。
ここで注意すべきは、
(1)パスは必ずダブルクォーテーションで囲う。
(2)CMD.EXEに渡すときは、さらに文字列全体をダブルクォーテーションで囲う。
ということです。
具体的に書くと以下のようになります。
Dim returnValue As New System.Diagnostics.Process
Dim psi As New System.Diagnostics.ProcessStartInfo()
Dim str As String
'ComSpecのパスを取得する
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
str ="""""C:\Program Files\WinRAR\WinRAR.exe"" X ""C:\a.rar3"" ""C:\"""""
psi.Arguments = "/c " & str
returnValue = System.Diagnostics.Process.Start(psi)
文字列の中にダブルクォーテーションが含まれると非常にわかりにくくなるので、このあたりに注意しながらやってみてください。
No.2
- 回答日時:
昨日のコードに付け加える形であればこうですね。
Dim procNew As New System.Diagnostics.Process
Dim stInfo As New System.Diagnostics.ProcessStartInfo("hogehoge.exe")
'stInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Hidden
stInfo.Arguments = """*:\***"" -* *** -* ""***""" '追加部分
procNew.StartInfo = stInfo
procNew.Start()
'procNew.WaitForExit()
'Windows.Forms.MessageBox.Show(procNew.ExitCode.ToString) '終了コードを表示
この回答への補足
説明足らずだったみたいです。
*:\***は実行形式ファイルで、拡張子を省略したものです。(hogehoge.exe)
以降の-* *** -* "***"が*:\***への引数です。
文字列処理で、実行ファイルと引数で切り離すのも考えたのですが
あり得ないほどコードが複雑になってしまったので断念しました。
No.1
- 回答日時:
こうですかね
Sub Main()
Dim WshShell As Object
Dim strCommand As String
Dim parm As String
WshShell = CreateObject("WScript.Shell")
strCommand = "*:\*** "
parm = "-* *** -* ""***"""
strCommand = strCommand & parm
'MsgBox(strCommand)
WshShell.run(strCommand)
End Sub
この回答への補足
Sub Main()というのは確かVB6のコードではなかったでしょうか?
あと、自分で好きに起動したいアプリケーションを起動するわけではないので(プロファイルによるユーザー指定)なので
この形式ではちょっとどうにもなりません。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) ソフトが異常終了します 1 2022/08/28 01:41
- その他(プログラミング・Web制作) pythonでDepixを起動 5 2022/12/18 08:04
- Yahoo!メール yahooメールの起動について 1 2023/01/29 15:01
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Windows 10 ctfmon.exe。スタック ベースのバッファーのオーバーランが検出されました。 1 2023/02/15 13:17
- Excel(エクセル) フォルダAから1つのファイルだけを、フォルダBへを移動するVBAについて 2 2022/07/25 11:45
- Mac OS 動画ファイルの画質比較アプリ (Mac) 1 2023/07/14 19:19
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- Excel(エクセル) セルの値を別ブックのセルの値と突合する 1 2023/01/26 15:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
Excel 相対パス
-
コマンドプロンプトのコピー関...
-
xcopyコマンドの進行状況を表示...
-
Eclipse
-
VBAとロングファイル名
-
ACCESSからEXCEL起動時、パス名...
-
ルミーズショッピングカート
-
アクセス 自身のデータベース...
-
ExcelのVBAで上書き保存を確...
-
エクセルでパスを含んだファイル名
-
VBAでパスを取得した後、分割し...
-
VBAでパワーシェルを実行したい...
-
visual studio 2010のワーニング
-
VBAで、VBのapp.pathと同じ機能...
-
EXCEL(VBA)で指定フォルダ内の...
-
Excel VBA
-
Windowsファイルパスの妥当性に...
-
fopenでのパス指定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
Excel 相対パス
-
実行ファイルのパスを取得したい
-
コマンドプロンプトのコピー関...
-
【VB.NET】App.configにファイ...
-
エクセルのマクロで特定フォル...
-
VBA★PDFをPDFアプリで印刷し...
-
ExcelVBAの使い方 ¥の使い方...
-
fopenでのパス指定
-
ExcelのVBAで上書き保存を確...
-
EXCEL(VBA)で指定フォルダ内の...
-
C#でのProcess.Startと変数path
-
【VBA】ExcelマクロでCSVファイ...
-
VBAでパワーシェルを実行したい...
-
A列に記載されているフォルダ...
-
初心者powershellのPS1ファイル...
-
Eclipse
-
VBAとロングファイル名
おすすめ情報