Kakeishi_Misa
@Kakeishi_Misa

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【C#】プロジェクトに追加したVBscriptに引数を渡せない

解決したいこと

プロジェクトに追加したVBscriptを呼び出したい

例)
ファイルの中身を修正するVbscriptがあります。
普段はこのVBScriptファイルに対して、
修正したいファイルをマウスでドラッグ&ドロップして利用しています。

今回、C#のプロジェクトから上記と同じ機能を実現したいです。
下記のサイトを参考に作成したのですが、
ファイルの中身が変更されません。
https://teratail.com/questions/376279

どのように修正すれば良いでしょうか。

追記
指摘を受け、「WorkingDirectory 」にカレントディレクトリを指定。
「var arguments = string.Format("{0} {1}", "//Nologo Rename.vbs", "対象ファイル");」で
VBSにファイルを渡すことに成功。

        Process scriptProc = new Process();
        scriptProc.StartInfo.FileName = "cscript.exe";
        scriptProc.StartInfo.WorkingDirectory = System.Environment.CurrentDirectory;
        var arguments = string.Format("{0} {1}", "//Nologo Rename.vbs", "対象ファイル");
        scriptProc.StartInfo.Arguments = arguments;
        scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; // 非表示で実行したい場合
        scriptProc.Start();

        scriptProc.Close();

キャプチャ.PNG

0

1Answer

Comments

  1. @Kakeishi_Misa

    Questioner

    コメントありがとうございます!!

    コードを修正して想定した動きをするコードが書けました!!


    1点追加質問なのですが、
    exeだけを配布して他の人でも使えるようにしたいです。

    そこで、
    WorkingDirectoryの参照を組み込んだvbsファイルにするには
    どのようにすれば良いのでしょうか。

    現在は、
    exeと同じディレクトリにvbsファイルを置いて実行していますが、
    プロジェクトに追加したvbsを参照してほしいです。。。
  2. 調べた感じ、メモリ中のvbsを実行するのは無理ではなさそうですが、かなりトリッキーな手法を使わないとだめで相当面倒くさそうなので、多分やめたほうがいいと思います。
    ・ファイルのプロパティで、ビルド時に出力ディレクトリにコピーする
    ・exeのリソースに埋め込み、実行する時にテンポラリファイルに書き出して実行する
    ・vbsがそれほど複雑ではないなら、vbsの処理をC#で実装し直す
    辺りが、現実的な手段だと思います。
  3. @Kakeishi_Misa

    Questioner

    ありがとうございます。
    確認してみます。。。

Your answer might help someone💌