PDA

Показать полную графическую версию : Программа для запуска ехе


Cibersoft Prolex
09-05-2009, 11:37
DEL...

AlexTNT
09-05-2009, 13:50
Используйте функцию system(аргумент) [в заголовочном файле cstdlib]
аргумент-символьный массив или строка.
если аргумент - программа tmp.exe...

-и она находится в одном каталоге с программой, то
system("tmp");
-и находится в в одном каталоге с вашей программой
system("1папка\\2папка\\..\\tmp");
-и находится на совершено другом диске или каталоге
system("C:\\1папка\\2папка\\..\\tmp");

Обратите внимание! В функции используется две косые черты, в то время как в CMD - одна. Всё дело в том, что в с++ есть символьные литералы, которые состоят из нескольких символов('\n','\t','\\' и др.)
'\\'-после компиляции воспринимается системой как один - \.
Содержание аргументов в этой функции - команды в CMD(можно их узнать с помощью команды HELP).

AlexTNT
09-05-2009, 22:30
Вот пример:

#include<iostream>
#include<cstdlib>
using namespace std;
int main() {
//Аргумент функции - символьная строка
cout<<"1-вариант:";
system("tmp");
cout<<"2-вариант:";
system("papka1\\papka2\\tmp");
cout<<"3-вариант:";
system("C:\\Program Files\\tmp_folder\\tmp");
//Аргумент функции - символьный массив
char c[]={"tmp"};
system(c);
return 0;
}
С массивом привожу пример один раз, потому что принцип похож, как с символьной строкой(только написать надо заранее или получить ввод с клавиатуры или файла)

char c[100];
cout<<"Введите название файла:\n";//только с одной косой(при запущенной программе). Также можно ввести команду CMD
cin>>c;
system(c);

CXREF
10-05-2009, 06:39
Используйте функцию system(аргумент) [в заголовочном файле cstdlib] »Нет смысла писать программу которая использует cmd для своей работы. С тем же успехом работает батник в котором надо прописать всего-лишь имя вызываемой программы:

@echo off
tmp.exe
:end

Можно добавить чтение списка файлов запускаемых программ.

Если писать программу - то лучше использовать CreateProcess чтоб иметь хотя-бы контроль над приоритетом запускаемой программы, а так-же код врзврата по завершении программы. Ну и конечно чтение вывода запущенной программы.

DillerInc
11-05-2009, 12:23
Мне нужно, чтоб он сам искал эксишные файлы из определенной папки и запускал их »
...слишком много слов.Давно бы уже взяли да написали программу,которая бы показывала диалог выбора исполняемого файла через GetOpenFileName и после запускала его с помощью CreateProcess.

pva
12-05-2009, 07:16
а между тем, Cibersoft Prolex, подумай в сторону батника. Я пока что понял что ты хочешь скрыть выполняемые действия. Если честно, считаю подобное невежливым. Программа должна быть прозрачной для системного администратора.

Вот батник, который тебе нужен:

for /f "delims=" %%i in ('dir /b *.exe') do @call %%i

а вот код под виндой его запускающий:

ShellExecute(0, "open", "test.bat", 0, 0, SW_HIDE);

Cibersoft Prolex
12-05-2009, 16:09
pva

. Я пока что понял что ты хочешь скрыть выполняемые действия »
Нет, я имел ввиду, чтоб не было дополнительных диалоговых окон, а насчет диалога CMD, я не против.

for /f "delims=" %%i in ('dir /b *.exe') do @call %%i »
А где тут прописать название папки, из которой CMD должен искать и запускать эксишные файлы?

pva
13-05-2009, 06:37
варианта 2:

@rem 1:
@rem рабочая папка программ - та, из которой они запускаются
pushd
cd c:\windows\temp && for /f "delims=" %%i in ('dir /b *.exe') do @call %%i
popd

@rem 2:
@rem рабочая папка - та, с которой запущен батник
for /f "delims=" %%i in ('dir /b c:\windows\temp\*.exe') do @call %%i




© OSzone.net 2001-2012