Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск EXEшника, exeшник в той же папке 
:(
    Опции темы
sOckets
Дата 27.8.2006, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


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

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



Мне нужно запустить EXEшник , что лежит в папке с исполняемым файлом....куда копать ? уже замучасля...
вот что пробовал
Код

// WORK_BUFFER у меня "file.exe"
// file.exe присутсвует в папке...в чём трабла...хз
        error("начало");
        GetCurrentDirectory(sizeof(WORK_BUFFER)-1, WORK_BUFFER);
        error(WORK_BUFFER);
        strcpy(WORK_BUFFER,strstr(cmd,"+")+1);
        error(WORK_BUFFER);
        for (i = 0; i <= sizeof(WORK_BUFFER)-1; i++) if (WORK_BUFFER[i]=='\\') WORK_BUFFER[i]='/';
        error(WORK_BUFFER);        
        check =    WinExec(WORK_BUFFER,NULL);
        if (check > 31)
        {
            error("процесс успешно запущен...");
        } else {
            error("не могу запустить процесс...");
        }



--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
Rickert
Дата 27.8.2006, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Копай в сторону ShellExecute()


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
BUGOR
Дата 27.8.2006, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



или CreateProcess


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
sOckets
Дата 27.8.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


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

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



дайте примерчик smile

Добавлено @ 12:47 
И CreateProcess и ShellExecute пробовал....ничё не пашет..дело в том что я имя файл получаю с помошью GetCurretDirectory а там одинарные слешы , а в CreateProcess и ShellExecute нужны двойные...в общем кто может , примерчик покажите...


--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
Damarus
Дата 27.8.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



Цитата(ilovewinsocks @  27.8.2006,  04:30 Найти цитируемый пост)
Мне нужно запустить EXEшник , что лежит в папке с исполняемым файлом....куда копать ?

 smile  smile  smile 
Код

WinExec("file.exe", SW_SHOWNORMAL);

 MSDN надо читать smile 

Цитата(ilovewinsocks @  27.8.2006,  13:46 Найти цитируемый пост)
И CreateProcess и ShellExecute пробовал....ничё не пашет..дело в том что я имя файл получаю с помошью GetCurretDirectory а там одинарные слешы , а в CreateProcess и ShellExecute нужны двойные...

Где это написано smile 
PM MAIL ICQ Jabber   Вверх
sOckets
Дата 27.8.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


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

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



Код

CreateProcess(NULL, "\"C:\\Program Files\\MyApp.exe\" -L -S", ...)


про ShellExecute что-то не нашёл...=\ 
ну что кто примерчик даст ?


--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
Damarus
Дата 27.8.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



Цитата(ilovewinsocks @  27.8.2006,  14:31 Найти цитируемый пост)
про ShellExecute что-то не нашёл...=\ ну что кто примерчик даст ?

Код

ShellExecute(NULL, "open", "\"C:\\Program Files\\MyApp.exe\"", "-L -S", NULL, SW_SHOWNORMAL);


Но про запуск из той же папки я выше написал.

PM MAIL ICQ Jabber   Вверх
sOckets
Дата 27.8.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


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

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



не пашет =\


--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
sOckets
Дата 27.8.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


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

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



Народ...ну дайте мне 100% рабочий сорц =\


--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
_hunter
Дата 28.8.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



Цитата(ilovewinsocks @  27.8.2006,  15:57 Найти цитируемый пост)
Народ...ну дайте мне 100% рабочий сорц =\

это тебе в раздел "работа" нужно постить...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
VectorMan
Дата 29.8.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antihero
*


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

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



вроде робит  smile 

Код


bool ExecFromAppDirectory(const char* exefile)
{
  int c;
  STARTUPINFO si;
  PROCESS_INFORMATION pi;
  char buf [MAX_PATH];

  ZeroMemory(buf, MAX_PATH);
  
  c = GetModuleFileName(NULL, buf, MAX_PATH);
  
  strncpy(strrchr(buf, '\\') + 1, exefile, MAX_PATH - c - 1);
    
  ZeroMemory(&si, sizeof(si));
  si.cb = sizeof(si);

  if(CreateProcess(buf, NULL, NULL, NULL, FALSE,
      NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi))
  {
    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);
    return true;
  }
  else
    return false;

}




PM   Вверх
Damarus
Дата 30.8.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



VectorMan, это изобретение велосипеда.

ilovewinsocks, чем тебе WinExec не нравится. MSDN:
Цитата

WinExec

..................

lpCmdLine 
[in] Pointer to a null-terminated character string that contains the command line (file name plus optional parameters) for the application to be executed. If the name of the executable file in the lpCmdLine parameter does not contain a directory path, the system searches for the executable file in this sequence:

  • The directory from which the application loaded.
  • The current directory. 
  • The Windows system directory. The GetSystemDirectory function retrieves the path of this directory.
  • The Windows directory. The GetWindowsDirectory function retrieves the path of this directory.
  • The directories listed in the PATH environment variable.



Или CreateProcess:
Цитата

CreateProcess

..................

lpCommandLine 
[in, out] Pointer to a null-terminated string that specifies the command line to execute. The maximum length of this string is 32K characters.
   Windows 2000:  The maximum length of this string is MAX_PATH characters.

The Unicode version of this function, CreateProcessW, will fail if this parameter is a const string.

The lpCommandLine parameter can be NULL. In that case, the function uses the string pointed to by lpApplicationName as the command line.

If both lpApplicationName and lpCommandLine are non-NULL, the null-terminated string pointed to by lpApplicationName specifies the module to execute, and the null-terminated string pointed to by lpCommandLine specifies the command line. The new process can use GetCommandLine to retrieve the entire command line. Console processes written in C can use the argc and argv arguments to parse the command line. Because argv[0] is the module name, C programmers generally repeat the module name as the first token in the command line.

If lpApplicationName is NULL, the first white-space – delimited token of the command line specifies the module name. If you are using a long file name that contains a space, use quoted strings to indicate where the file name ends and the arguments begin (see the explanation for the lpApplicationName parameter). If the file name does not contain an extension, .exe is appended. Therefore, if the file name extension is .com, this parameter must include the .com extension. If the file name ends in a period (.) with no extension, or if the file name contains a path, .exe is not appended. If the file name does not contain a directory path, the system searches for the executable file in the following sequence:

  • The directory from which the application loaded.
  • The current directory for the parent process. 
  • The 32-bit Windows system directory. Use the GetSystemDirectory function to get the path of this directory.
  • The 16-bit Windows system directory. There is no function that obtains the path of this directory, but it is searched. The name of this directory is System. 
  • The Windows directory. Use the GetWindowsDirectory function to get the path of this directory. 
  • The directories that are listed in the PATH environment variable.


PM MAIL ICQ Jabber   Вверх
chozen
Дата 30.8.2006, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Народ, вы что???

Если экзешник находится в той же папке, что и процесс, инициировавший запуск, не надо указывать никакаго пути...

ИМХО:
WinExec - слишком глупо...
ShellExecute - самое то
CreateProcess - половина параметров не нужно для обыденных случаев
PM MAIL   Вверх
sOckets
Дата 1.9.2006, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


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

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



chozen  smile 


--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
MoZy
Дата 1.9.2006, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 smile  spawnl(0,"любой.exe",NULL);
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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