Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск стороннего еХешника, с параметрами 
V
    Опции темы
jmp
Дата 2.1.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Понадобилось сделать чтоб чужой еХешник запустился с параметром прочтенным из другого файла,

ну прочесть из файла я предположим нашел как сделать, но как это подставить в параметр, да и как вобще запустить файл я незнаю..:(

пс: в перспективе желательно чтоб был вывбор с какой строки читать, (например строка 1 - такойто параметр, строка 2 другой.)
ну ладно, это не сейчас..

Это сообщение отредактировал(а) jmp - 7.1.2008, 06:31
PM MAIL   Вверх
archimed7592
Дата 2.1.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Цитата(jmp @  2.1.2008,  15:33 Найти цитируемый пост)
о как это подставить в параметр, да и как вобще запустить файл я незнаю..:(

std::system, CreateProcess


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
MAKCim
Дата 2.1.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


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

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



Код

static int execute(const char * arguments[], size_t count) {
    static char buffer[SIZE];
    unsigned int offset = 0, index = 0;
    int length;
    for (; count-- && (length = snprintf(buffer + offset, SIZE - offset, "%s", arguments[index])) < SIZE - offset; 
        offset += length + 1, buffer[length] = ' ');
    if (length >= SIZE - offset)
        return -1;
    return system(buffer);
}



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

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


Новичок



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

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



archimed7592
MAKCim
спасибо что отозвались, но я что то торопился, забыл написать что желательно использование iostream+fstream
 и много много коментов smile 
т.к. хочу всеже понять как это работает..
ПС: с printf нехотелось бы, вот запись в файл у меня примерно такая:
Код

ofstream txt("gx.txt");
txt <<"ABCD "<<x<<;
txt.close();

чтение вставку и запуск хотелось бы тоже в этом духе..
извините если что smile
PM MAIL   Вверх
JackYF
Дата 2.1.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(jmp @  2.1.2008,  19:35 Найти цитируемый пост)
т.к. хочу всеже понять как это работает..
ПС: с printf нехотелось бы, вот запись в файл у меня примерно такая:

причём тут printf к запуску .exe-файла?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 2.1.2008, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



jmp, с помощью fstream/iostream exe'шник запустить сложно. Сформулируй свой вопрос поточнее(либо тебе exe'шники запускать, либо тебе в файлы писать).


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
jmp
Дата 2.1.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(JackYF @  2.1.2008,  19:40 Найти цитируемый пост)
причём тут printf к запуску .exe-файла? 

извиняюсь, кажеться я имел ввиду Сишный стиль.

Цитата(archimed7592 @  2.1.2008,  19:43 Найти цитируемый пост)
с помощью fstream/iostream exe'шник запустить сложно

хм, жаль.. ну если будет использоваться windows.h это тоже ничего(хорошо)
хотя я слышал чтото об exec кажеться...может ошибаюсь..
 
Цитата(archimed7592 @  2.1.2008,  19:43 Найти цитируемый пост)
Сформулируй свой вопрос поточнее(либо тебе exe'шники запускать, либо тебе в файлы писать). 

запускать конечно с параметром из переменной,
а примерчик записи в файл я привел к тому что это вроде стиль с++ .. которого я и стараюсь придерживаться (printf это ведь из Си? smile )
PM MAIL   Вверх
archimed7592
Дата 2.1.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Цитата(jmp @  2.1.2008,  20:28 Найти цитируемый пост)
хотя я слышал чтото об exec кажеться...может ошибаюсь..

POSIX only.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
MAKCim
Дата 2.1.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


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

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



Цитата(archimed7592 @  2.1.2008,  20:35 Найти цитируемый пост)
POSIX only. 

вроде NT также имеет подсистему POSIX-окружения
это к вопросу о кроссплатформенности

Это сообщение отредактировал(а) MAKCim - 2.1.2008, 20:42


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

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


Новичок



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

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



archimed7592
MAKCim,
тссс..я незнаю чтоэто...
но насчет остального мне удалось более менее понятно объяснить? 
PM MAIL   Вверх
bsa
Дата 2.1.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



jmp, ну а в чем тогда проблема?
Код
#include <string>
#include <sstream>
#include <vector>
#include <cstdlib>
...
typedef std::vector<std::string> StringVector;
...
int execute(const std::string &prgName, const StringVector &args)
{
     std::stringstream ss;
     ss << prgName;
     for(StringVector::const_iterator i = args.begin(); i != args.end(); ++i)
         ss << ' ' << *i;
     return std::system( ss.str().c_str() );
}
...
int main()
{
    ...
    StringVector args;
    args.push_back("param1");
    args.push_back("param2");
    ...
    args.push_back("paramN");
    int result = execute("program.exe", args);
    ...
}

PM   Вверх
archimed7592
Дата 2.1.2008, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Цитата(jmp @  2.1.2008,  20:58 Найти цитируемый пост)
но насчет остального мне удалось более менее понятно объяснить?  

Угу, а нам? smile

Код

CreateProcess(
  _T("app.exe someparam") /* LPCTSTR lpApplicationName */,
  NULL /* LPTSTR lpCommandLine */,
  NULL /* LPSECURITY_ATTRIBUTES lpProcessAttributes */,
  NULL /* LPSECURITY_ATTRIBUTES lpThreadAttributes */,
  TRUE /* BOOL bInheritHandles */,
  0 /* DWORD dwCreationFlags */,
  NULL /* LPVOID lpEnvironment */,
  NULL /* LPCTSTR lpCurrentDirectory */,
  NULL /* LPSTARTUPINFO lpStartupInfo */,
  NULL /* LPPROCESS_INFORMATION lpProcessInformation */);

или
Код

std::system("app.exe someparam");



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
jmp
Дата 2.1.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



bsa
archimed7592
ребята, яже говорю, параметр читаеться из файла..
Цитата(jmp @  2.1.2008,  20:28 Найти цитируемый пост)
запускать конечно с параметром из переменной

это я неправильно выразился да? :((
PM MAIL   Вверх
archimed7592
Дата 2.1.2008, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Я вот не пойму: ты вместо "app.exe ..." не можешь подставить значение своей переменной? Ну выглядеть это будет примерно как 
Код

std::system(("app.exe " + param).c_str());



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bsa
Дата 2.1.2008, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



jmp, я же тебе не готовую программу показал, а кусок + пример использования. Кто тебе мешает загрузить в вектор args данные из файла? Тем более, что это делается очень просто:
Код
StringVector args(std::istream_iterator(file_stream), std::istream_iterator());

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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