Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Программа для запуска ехе (http://forum.oszone.net/showthread.php?t=139684)

Cibersoft Prolex 09-05-2009 11:37 1114243

Программа для запуска ехе
 
DEL...

AlexTNT 09-05-2009 13:50 1114327

Используйте функцию 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 1114607

Вот пример:
Код:

#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 1114741

Цитата:

Цитата AlexTNT
Используйте функцию system(аргумент) [в заголовочном файле cstdlib] »

Нет смысла писать программу которая использует cmd для своей работы. С тем же успехом работает батник в котором надо прописать всего-лишь имя вызываемой программы:
PHP код:

@echo off
tmp
.exe
:end 

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

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

DillerInc 11-05-2009 12:23 1115370

Цитата:

Цитата Cibersoft Prolex
Мне нужно, чтоб он сам искал эксишные файлы из определенной папки и запускал их »

...слишком много слов.Давно бы уже взяли да написали программу,которая бы показывала диалог выбора исполняемого файла через GetOpenFileName и после запускала его с помощью CreateProcess.

pva 12-05-2009 07:16 1115976

а между тем, 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 1116475

pva

Цитата:

Цитата pva
. Я пока что понял что ты хочешь скрыть выполняемые действия »

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

Цитата:

Цитата pva
for /f "delims=" %%i in ('dir /b *.exe') do @call %%i »

А где тут прописать название папки, из которой CMD должен искать и запускать эксишные файлы?

pva 13-05-2009 06:37 1117020

варианта 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



Время: 15:24.

Время: 15:24.
© OSzone.net 2001-