Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Командная строка 
:(
    Опции темы
Berkut
Дата 15.2.2005, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть два приложения, первое запускает второе и передает ему некоторые параметры (командная строка). Второе приложение MFC. Подскажите как "вытащить" эти параметры и с ними работать?
PM MAIL   Вверх
NiJazz
Дата 15.2.2005, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


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

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



GetCommandLine попробуй.
PM MAIL   Вверх
IEZ
Дата 16.2.2005, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот смотри. К примеру ты передаешь коммандную строку (вернее запускаешь вторую программу)
c:\\Folder\\Proga.exe -help и хочешь обработать ее в программе.
Для этого вставь в свою программу строку, для получения самой коммандной строки.
Код

LPSTR lpCmdLine;
lpCmdLine=::GetCommandLine();

Теперь в переменной lpCmdLine храниться строка: c:\\Folder\\Proga.exe -help.
Для выделения -help и выполнения каких либо действия делаем следующее:
передаем lpCmdLine в ниже указанную функцию.
Код

VOID GetCmdFromCmdLIne(LPSTR lpCmdLine)
{
CHAR *p;

  p=lpCmdLine;
 while(*p)
{
 if(*p=='-')
 {
  p++;
  if(*p=='-help')
   //Вывожу окно хеллпа
  if(*p=='-work')
   //Выполняю какие-либо действия
 }
 p++;
}
}

Ну вот и все. Надеюсь помог. smile


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 16.2.2005, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



А может все же так? MFC все-таки smile
Код

VOID GetCmdFromCmdLIne(CString CmdLine)
{
 if(CmdLine=="-help")
 {
  //Вывожу окно хеллпа
 }
 if(CmdLine=="-work")
 {
  //Выполняю какие-либо действия
 }
}



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
IEZ
Дата 16.2.2005, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bel_nikita @ 16.2.2005, 00:56)
VOID GetCmdFromCmdLIne(CString CmdLine)
{
if(CmdLine=="-help")
{
  //Вывожу окно хеллпа
}
if(CmdLine=="-work")
{
  //Выполняю какие-либо действия
}
}

А ты попробуй прогони через дебаг.
Удивишься, хоть и мфс. smile


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 16.2.2005, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



А чему удивляться то?


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
IEZ
Дата 16.2.2005, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По твоему примеру переделал код:
Код

int iReturn=0;
CString CmdLine;
CmdLine=::GetCommandLine();
if(CmdLine=="-help")
{
iReturn=1;
}
if(CmdLine=="-work")
{
iReturn=2;
}

На выходе iReturn=0; smile
Добавлено @ 01:26
В CmdLine после
Код

CmdLine=::GetCommandLine();

Лежит
Цитата
c:\\Folder\\Proga.exe -help

а не -help.

Добавлено @ 01:27
Соответствено прежде чем сравнивать, нужно разодрать строку. smile


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 16.2.2005, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Разодрать... не разодрать... Я вообще, про другое хотел сказать.
Но раз уж пошло, то уже все сделано до нас smile
Код

VOID GetCmdFromCmdLIne(CString CmdLine)
{
if(CmdLine.Find("-help") != -1 )
{
 //Вывожу окно хеллпа
}
if(CmdLine.Find("-work") != -1)
{
 //Выполняю какие-либо действия
}
}


З.Ы.:
Цитата
По твоему примеру переделал код
А по твоему примеру, тот который первый, вообще компилить не будет smile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
IEZ
Дата 16.2.2005, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Во теперь другое дело.
Код

CString CmdLine;
CmdLine=::GetCommandLine();
if(CmdLine.Find("-help") != -1)
{
 //Вывожу окно хеллпа
}
if(CmdLine.Find("-work") != -1)
{
 //Выполняю какие-либо действия
}

Теперь его можно отдавать человеку в пользование.
Цитата(bel_nikita @ 16.2.2005, 01:40)
А по твоему примеру, тот который первый, вообще компилить не будет

Тот то вариант для АПИ и на редкость из рабочей проги взят. smile

Это сообщение отредактировал(а) IEZ - 16.2.2005, 01:47


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
NiJazz
Дата 16.2.2005, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


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

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



Смотри CommandLineToArgvW.
PM MAIL   Вверх
Berkut
Дата 16.2.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем большое спасибо, теперь разобрался smile
PM MAIL   Вверх
NiJazz
Дата 16.2.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


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

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



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


Эксперт
****


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

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



Цитата
Тот то вариант для АПИ и на редкость из рабочей проги взят

Цитата
if(*p=='-help')

а, если не секрет, как это работает?


--------------------
qqq
PM WWW   Вверх
En_t_end
Дата 16.2.2005, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



'-help'
Это вообще по-моему ошибка, ' ' - приминимо только к одиночным символам, а к группе символов, коими являются "-help" вообще не катит. Дык чего все правила синтаксиса нафиг ? smile

Это сообщение отредактировал(а) En_t_end - 16.2.2005, 18:14
PM MAIL ICQ Skype GTalk Jabber   Вверх
IEZ
Дата 16.2.2005, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(maxim1000 @ 16.2.2005, 18:08)
а, если не секрет, как это работает?

Как часы. smile



--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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