Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как запросить данные из консольного приложения, не используя консоль 
:(
    Опции темы
dimafeng
Дата 19.12.2006, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 12.3.2006

Репутация: нет
Всего: нет



Сабж
PM MAIL   Вверх
DarkDragon
Дата 19.12.2006, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: нет
Всего: 8



Не трогай console

PM MAIL   Вверх
Дрон
Дата 19.12.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



DarkDragon, не флейми... но сабж действительно не понятен smile

Это сообщение отредактировал(а) Дрон - 19.12.2006, 18:27


--------------------
Да. Именно так.
PM   Вверх
Yama
Дата 19.12.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 2.8.2006

Репутация: 2
Всего: 2



Цитата(dimafeng @ 19.12.2006,  17:49)
Сабж

Какие данные?? что имнно тебе надо???? каким образом передаются и т.п. - опиши, какая задача перед тобой стоит?
--------------------
Если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший в форточку дятел разрушил бы всю нашу цивилизацию.
PM MAIL   Вверх
juravel
Дата 19.12.2006, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 18.12.2006

Репутация: нет
Всего: нет



Не  понятно!
 smile 

Это сообщение отредактировал(а) juravel - 19.12.2006, 21:51
PM MAIL   Вверх
ivashkanet
Дата 20.12.2006, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Дрон @  19.12.2006,  17:27 Найти цитируемый пост)
но сабж действительно не понятен

ну сабж-то понять можно:
Запустить из нашей проги другую консольную и получить от нее ответ. 
Все это должно проходить в бэкграунде.

Но вот как это сделать  smile

Можно вывести результаты работы в файл 
exe.exe > 1.txt
можно на принтер 
exe.exe > prn // могу наврать, но такая возможность есть smile

А вот можно ли в наш собственный stream  smile 
Вот это было бы решение.

P.S. Вроде эту тему я уже обсуждал в VB.Ne, но мы там ни к чему не пришли. Надо поискать тему smile

PM MAIL WWW ICQ   Вверх
Дрон
Дата 20.12.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



Цитата(ivashkanet @  20.12.2006,  00:23 Найти цитируемый пост)
А вот можно ли в наш собственный stream

ivashkanet, если это именно то, что хочет автор, то можно, причём очень и очень просто smile

Код
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.UseShellExecute = false;
            startInfo.RedirectStandardOutput = true;
            startInfo.FileName = @"ipconfig.exe";
            Process prc = Process.Start(startInfo);
            prc.WaitForExit();
            string result = prc.StandardOutput.ReadToEnd();


Классы из System.Diagnostics

Метод WaitForExit ожидает завершения работы процесса, если же нужно делать асинхронный вызов, то можно подписаться на событие Exited класса Process, или в .NET 2.0 появился метод BeginOutputReadLine, используемый совместно с событием OutputDataRecieved.

PS: Справедливости ради символ > в командной строке именно этим и занимается -- перенаправляет поток вывода.



Это сообщение отредактировал(а) Дрон - 20.12.2006, 12:20


--------------------
Да. Именно так.
PM   Вверх
dimafeng
Дата 20.12.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 12.3.2006

Репутация: нет
Всего: нет



Спасибо за ответы, но я имел в виду другое...
Консольное приложение выполняет некоторые операции, мне надо запросить у пользователя некоторые данные, например как в delphi через inputbox, подобного в c#  я не нашел...

Надеюсь, теперь я правильно выразил вопрос...
Зарание спасибо...
PM MAIL   Вверх
Naum
Дата 20.12.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Я могу ошибаться, но InputBox это уже все-таки - WinForms. В C#,  а точнее в .NET подобных диалоговых окон тоже хватает.

А чем не нравятся методы Console.ReadLine() или Console.Read().


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Дрон
Дата 20.12.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



Цитата(dimafeng @  20.12.2006,  14:36 Найти цитируемый пост)
Консольное приложение выполняет некоторые операции, мне надо запросить у пользователя некоторые данные, например как в delphi через inputbox, подобного в c#  я не нашел...

Эхм... Странно.
Что делает inputbox в Дельфи я не знаю.

Если это консольное приложение, то надо использовать Console.ReadLine. Но как-то это странно соотносится с пожелаением "не используя консоль"...

Поясни, пожалуйста, зачем тебе это и как это должно выглядеть.






--------------------
Да. Именно так.
PM   Вверх
ivashkanet
Дата 20.12.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Дрон @  20.12.2006,  11:16 Найти цитируемый пост)
ivashkanet, если это именно то, что хочет автор, то можно, причём очень и очень просто

Действительно просто smile Держи брямс
Цитата(dimafeng @  20.12.2006,  13:36 Найти цитируемый пост)
Надеюсь, теперь я правильно выразил вопрос...

Неа, еще хуже стало  smile 

По порядку:
1) Твое приложение консольное или гуевое (с формочками)?
2) "Как запросить данные из консольного приложения". 
Консольное приложение твое или нет?
3) "не используя консоль" 
Что значит не используя консоль? Не выводя окошко консоли на экран?
4) "выполняет некоторые операции" 
Все приложения выполняют операции


P.S. Почему все надо вытягивать клещами  smile 



PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 20.12.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Рискну предположить, что в ходе выполнения консольного приложения (обычная консоль на экране) нужно вывести отдельное окошко с просьбой что-то ввести и т.п. Если так, то всё что нужно - это поставить над Main атрибут [STAThread] и можно спокойно добавлять в проект обычные формы, показывать их с пом. ShowDialog, и так далее. В них хоть input, хоть чёрта с рогами накидать можно  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Naum
Дата 20.12.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(mr.DUDA @  20.12.2006,  16:42 Найти цитируемый пост)
поставить над Main атрибут [STAThread] 

А если не поставить этот атрибут. Что будет?



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
mr.DUDA
Дата 20.12.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Naum @  20.12.2006,  15:15 Найти цитируемый пост)
А если не поставить этот атрибут. Что будет?

Некоторые контролы работать не будут.


--------------------
user posted image
PM MAIL WWW   Вверх
DarkDragon
Дата 20.12.2006, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: нет
Всего: 8



Цитата(dimafeng @  20.12.2006,  14:36 Найти цитируемый пост)
Консольное приложение выполняет некоторые операции, мне надо запросить у пользователя некоторые данные, например как в delphi через inputbox, подобного в c#  я не нашел...

Раскажу по потробней о способах описанных выше:

Ругаемся с Console:
Код

  // Если нужна просто получить имя пользователя и пароль
       Console.Write ("Your Name: ");
       string name = Console.ReadLine();
       Console.Write ("Your Password: ");
       string password = Console.ReadLine();

  // Если нужно ввести правильное имя и пароль:
            string name = null;
            string passw = null;
            do
            {
                Console.Write("Your Name: ");
                name = Console.ReadLine();
                if (name != "Энштеин") Console.WriteLine("Не обманывай!!!\nТебя не так зовут!");
            } while (name != "Энштеин");
            do
            {
                Console.Write("Your Password: ");
                passw = Console.ReadLine();
                if (passw != "Ядерная физика") Console.WriteLine("Вы склерозом не страдаете?");
            } while (passw != "Ядерная физика");


Ругаемся с Forms(ну что то типа input):
Для начала нужно в проект (Console Application) вставить(по полной программе smile) новую форму. Таким образом VS сама добавит в References библиотеки System.Windows.Forms и System.Drawing(не совсем библиотеки, точнее ссылки на них). Далее доводишь form'у до обличия похожего на inputbox(я думаю в VS 2005, не будет не каких проблем с подгоном формы до InputBox'a). Ну кинь на форму textbox и label, button(можно две штуки, 'Ok' и 'Cancel') и форма готова. Далее:
Код

    [STAThread()]
    static void Main()
    {
        InputBox ib = new InputBox(); // InputBox - так зовут новую форму.
        ib.ShowDialog();
        string name = ib.namebox.Text; // namebox - так зовут свежеиспеченный textBox1
        // Обрабатываешь name
    }


К стате в библиотеке (VisualBasic, для .NET) можно найти готовую ф-цию InputBox, возвращающую string введеного значения. Тока не надо реггаться, это я так по отношению к Delphi. smile
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0795 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.