web-dev-qa-db-ja.com

C#コンソールアプリでコマンドライン引数を使用するにはどうすればよいですか?

URL短縮アプリを作成していますが、C#を使用してコンソールアプリも作成し、作成したWCFサービスにURLをプッシュします。

WCFアプリは、このURIのURLを短縮します。

http://example.com/shorten/http://exaple.com

だから私が欲しいのはそれだけです。

私のコンソールexeファイルはc:\devフォルダー内にあり、Windowsコマンドラインでこれを実行したいと思います。

c:\ dev> myapp -throw http://example.com

この方法で、私はそのサービスと話したいと思います。話の部分は問題ありません。しかし、問題は、コマンドラインでこの-throwを指定して応答を取得する方法です。その応答をコマンドラインに配置し、それをクリップボードにコピーするメソッドを提供します。ここで質問しすぎていませんか? :Sわかりません。

その情報を見つけることができる場所を教えていただけますか、それともこのサンプルコードを教えていただけますか?

ありがとう。

編集:次のコードを試しました。

    class Program {

    static void Main(string[] args) {

        if (args[0] == "-throw") {

            System.Windows.Forms.Clipboard.SetDataObject(args[1]);
            Console.WriteLine(args[1] + " has been added to clipboard !");
            Console.ReadLine();

        }

    }
}

そして、私は次のエラーを受け取りました。

C:\ Apps\ArgsTry\ArgsTry\bin\Debug> ArgsTry -throw man

未処理の例外:System.Threading.ThreadStateException:OLE呼び出しを行う前に、現在のスレッドをシングルスレッドアパートメント(STA)モードに設定する必要があります。Main関数にSTAThreadAttributeがマークされていることを確認してください。 System.Windows.Forms.Clipboard.SetDataObject(Object data、Boolean copy、In t32 restartTimes、Int32 tryDelay)at System.Windows.Forms.Clipboard.SetDataObject(Object data)at ArgsTry.Program.Main(String [] args) c:\ apps\ArgsTry\ArgsTry\Program.cs:14行目

C:\ Apps\ArgsTry\ArgsTry\bin\Debug>

9
tugberk

コンソールアプリケーションに引数を渡すのは簡単です。

using System;

public class CommandLine
{
   public static void Main(string[] args)
   {
       for(int i = 0; i < args.Length; i++)
       {
           if( args[i] == "-throw" )
           {
               // call http client args[i+1] for URL
           }
       }
   }
}

クリップボードについては、以下を参照してください。

http://msdn.Microsoft.com/en-us/library/system.windows.forms.clipboard.aspx

23
Blazes

以下の引数を参照してください。これを使用して、exeファイルの実行時に渡されたすべての値を読み取ることができます。

static void Main(string[] args) {
1
Peyton Crow