Duat |
Отправлено: 12 Февраля, 2020 - 20:50:33
|
Наблюдатель
Покинул форум
Сообщений всего: 39
Дата рег-ции: Окт. 2018
Репутация: 0
|
Невозможно отредактировать первое сообщение.
Как я могу заменить выделенное красным текстом на папку с игрой, где будет находиться собранный exe-файл?
ShellExecute(0, "open", "cmd.exe", "/c E:/Microvirt/MEmu/memuc.exe start -n MEmu_"+format(a)+"", "", 0);
На одном компе, путь будет следующий: E:/Microvirt/MEmu/
На другом: D:/Microvirt/MEmu/
На третьем: D:/MEmu/
И т.д.
Пробовал засунуть сюда pathfolder, но не срабатывает, командная строка не реагирует на данную команду |
|
|
Zireael |
Отправлено: 13 Февраля, 2020 - 01:35:37
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: E:/Microvirt/MEmu/
Не тот слеш, должен быть обратный \.
Цитата: Пробовал засунуть сюда pathfolder, но не срабатывает
Всё работает, если правильно использовать команды.
Цитата: Как я могу заменить выделенное красным текстом
CODE:string path="E:\Microvirt\MEmu\memuc.exe";
string s="/c "+path+" start -n MEmu_";
messagebox(s);
Цитата: пользователь указывал путь к своей папке с игрой?
Диалог открыть файл (Отобразить)CODE:external(INT, "wsprintf", "wsprintfA", "User32.dll" );
external(INT, "GetOpenFileName", "GetOpenFileNameA", "Comdlg32.dll");
// всё что выше в начало скрипта
string path;
if(open_file(#path)) // вызов функции, которая откроет диалог и запишет путь в переменную
{
// нужные действия
messagebox(path);
}
else messagebox("Ничего не выбрано");
function open_file(string #path_to_file)
{
char path[256]= {0} // сюда сохранится путь
char OFNA[88], Filter[100], InitialDir[256], Title[256];
initialarray(#OFNA[0], 0);
wsprintf(address(#Filter[0]), "Exe Files%c*.EXE%c%c", 0, 0, 0); // тип файлов
strcpy(#InitialDir[0], "C:\"); // начальный каталог
strcpy(#Title[0], "Открыть файл"); // заголовок диалога
writeaddress(sizearray(OFNA), address(#OFNA[0]));
writeaddress(address(#Filter[0]), address(#OFNA[12]));
writeaddress(address(#path[0]), address(#OFNA[28]));
writeaddress(sizearray(path), address(#OFNA[32]));
writeaddress(address(#InitialDir[0]), address(#OFNA[44]));
writeaddress(address(#Title[0]), address(#OFNA[48]));
if(GetOpenFileName(address(#OFNA[0])))
{
//messagebox(format(#path[0])); // путь к выбранному файлу
if(regexsearch(1, #path_to_file, format(#path[0]), ".+\\"))return 1;
}
return 0;
} |
|
|
Duat |
Отправлено: 13 Февраля, 2020 - 01:39:24
|
Наблюдатель
Покинул форум
Сообщений всего: 39
Дата рег-ции: Окт. 2018
Репутация: 0
|
Спасибо.
А почему Кибор матерится на:
ShellExecute(0, "open", "cmd.exe", "/c E:\Microvirt\MEmuHyperv\MEmuManage.exe list vms >> list.txt", "", 0);
ShellExecute(0, "open", "cmd.exe", "Find /c "MEmu" E:\kibor\list.txt >> E:\kibor\count.txt", "", 0);
Файл list.txt создается, а на подсчет количества строк Кибор ругается. Хотя команда подсчета в командной строке выполняется(
Смысл в том, что хочу подсчитать количество строк, содержащих слово MEmu, не отображая на экран монитора, что файл открывается.
С выбором папки все супер!!! Спасибо огромное)(Отредактировано автором: 13 Февраля, 2020 - 01:50:35) |
|
|
Zireael |
Отправлено: 13 Февраля, 2020 - 02:20:16
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: а на подсчет количества строк Кибор ругается.
Если нужно использовать символ кавычек, то formatic(34).
CODE:external(INT, "ShellExecute", "ShellExecuteA", "Shell32.dll");
string s="/c "+formatic(34)+"E:\Microvirt\MEmuHyperv\MEmuManage.exe"+formatic(34)+" list vms >> list.txt";
messagebox(s);
ShellExecute(0, "open", "cmd.exe", s, "", 0);
Цитата: подсчитать количество строк, содержащих слово MEmu
Узнать сколько в файле слов (Отобразить)CODE:int count=0;
if(find_word(pathfolder()+"list.txt", "MEmu", #count) != -1) // вызов функции
{
messagebox("Количество слов MEmu: "+format(count));
}
else messagebox("Файл не найден или не доступен");
function find_word(string path, string word, int #count_word)
{
char text[999999]; string s[999];
if(fopen(path, "rb")) // открыть файл для чтения
{
int count_symbol=freadb(#text[0], sizearray(text))-1; fclose(); // прочитать файл в массив
count_word=regexsearch(sizearray(s), #s[0], format(#text[0], count_symbol), word); // найти все слова MEmu
return 1;
}
return -1;
} |
|
|
|