Как использовать аргументы командной строки в моем консольном приложении C #? - PullRequest
7 голосов
/ 18 апреля 2011

Я пишу приложение для сокращения URL, и я хотел бы также создать консольное приложение с C # для передачи URL-адресов в службу WCF, которую я также создал.

Приложение WCF сократит URL-адрес для этого URI;

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

, поэтому я хочу именно это.

Мой файл консоли exe будетсидеть внутри папки c:\dev и в командной строке Windows, я хотел бы сделать это;

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

сэтот метод я хотел бы поговорить с этим сервисом.в разговорной части нет проблем.Но проблема в том, как я могу указать эту вещь -throw в командной строке, получить ответ, поместить этот ответ в командную строку и предоставить метод для его копирования в буфер обмена.,Я спрашиваю слишком много здесь?: СИ не знаю.

Не могли бы вы указать мне, где я могу найти информацию об этом, или вы можете дать мне пример кода этого?

Спасибо.

РЕДАКТИРОВАТЬ: Я попробовал следующий код;

    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 -throwman

Необработанное Исключение: System.Threading.ThreadStateException: Текущий поток должен быть переведен в однопотоковый режим (STA), прежде чем будут выполняться вызовы OLE.Убедитесь, что ваша функция Main помечена атрибутом STAThreadAttribute.в System.Windows.Forms.Clipboard.SetDataObject (данные объекта, логическое копирование, в ret32Times, Int32 retryDelay) в System.Windows.Forms.Clipboard.SetDataObject (данные объекта) в ArgsTry.Program.Main (String [] args)в c: \ apps \ ArgsTry \ ArgsTry \ Program.cs: строка 14

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

Ответы [ 2 ]

21 голосов
/ 18 апреля 2011

Передача аргументов в консольное приложение очень проста:

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

1 голос
/ 18 апреля 2011

См. Аргументы ниже, вы можете использовать его для чтения всех значений, переданных при запуске exe-файла.

static void Main(string[] args) {
...