Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Открыть текстовый файл в Блокноте


Автор: Vovanuch 7.3.2006, 14:14
Здравствуйте. Подскажите пожалуйста, как решить такую проблему:
Есть текстовый файл (путь "C:\1.txt" к примеру). Так вот как его из проекта открыть в Блокноте? Или в Ворде, без разницы. Музыкальный файл "С:\mus.mp3" в winAmp'е, думаю, аналогично, но как?

Автор: _hunter 7.3.2006, 15:00
notepad.exe "C:\1.txt"

Автор: bas 7.3.2006, 15:08
ShellExecute - Вам в помощь.
Добавлено @ 15:09
Цитата

ShellExecute(Handle,NULL,"notepad",(FN).c_str(),St.c_str(),SW_NORMAL);

Автор: Vovanuch 7.3.2006, 17:01
_hunter, Вашу мысль я совсем не понял smile
bas, спасибо, вроде работает.
Вот код:
AnsiString Fn="1.reg";
AnsiString Dirr="C:\\";
ShellExecute(Application->Handle,NULL,Fn.c_str(),NULL,Dirr.c_str(), 0);

Тут другой вопрос возник. Как запустить reg-файл без первоначального вопроса
"Вы действительно хотите добавить информацию в реестр?"

Автор: _hunter 7.3.2006, 17:25
никак. сам добавляй

Автор: codelord 8.3.2006, 19:32
Цитата(Vovanuch @ 7.3.2006, 13:01 Найти цитируемый пост)
Тут другой вопрос возник. Как запустить reg-файл без первоначального вопроса

c эмулируй нажатие клавиши [VK_RETURN] smile Щютка
на самом деле решение вопроса без вопросов будет таким:
Код

ShellExecute(Handle,NULL,"REGEDIT","/S C:\\1.reg",NULL,SW_RESTORE);

Автор: Code Magister 4.8.2006, 22:46
Код
system("notepad lol.txt");
 
                            smile 

Автор: Deft 10.5.2009, 05:18
а какой параметр надо дописать чтобы приложение запускалось в развернутом виде, на весь экран всмысле?
делаю так:
Код

 AnsiString P=ListBox1->Items->Strings[ListBox1->ItemIndex];
 ShellExecute(Handle,"open","EXCEL",P.c_str(),NULL,SW_RESTORE);

эксель открывается но маленьким окошком на четверть экрана...

Автор: 586 10.5.2009, 05:51
Код
ShellExecute(Handle,"open","EXCEL", "",NULL,SW_MAXIMIZE);

Автор: Deft 12.5.2009, 06:48
Еще такой вопрос:
как быть если в пути есть пробелы?
В частности если у меня P="F:\Пассаж.перевозки\Исходное\1 четверг\автобусы коммерческие\35к.xls"
то после выполнения кода, приоткрыти в экселе мне сначала выдает что файл "F:\Пассаж.перевозки\Исходное\1.xlsx" не найдет, следом "четверг\автобусы.xlsx" не найден, а потом и "коммерческие\35к.xls" не найден....

Автор: AntonChik 12.5.2009, 07:50
по два слэша пробовал писать?

Автор: Deft 12.5.2009, 08:30
как я буду по два слеша писать если пути у меня не в ручную задаются и их около 700?
причем без пробелов открывается все нормально...
а посимвольно все пути перебирать на наличие пробелов помоему тупо...

Автор: 586 12.5.2009, 11:46
Цитата(Deft @  12.5.2009,  09:30 Найти цитируемый пост)
как я буду по два слеша писать если пути у меня не в ручную задаются и их около 700?

В C/C++ компиляторах обратный слэш является специальным символом, который служит для ввода специальных символов - например:
'\n' - переход на новую строку
'\t' - символ табуляции
'\x0a' - символ с кодом 0x0a (тоже самое, что и '\n')
И для того, чтобы написать в строку обратный слэш, нужно написать два слэша - '\\'.

strlen("\\") == 1
strlen("/") == 1

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

По поводу пробелов - имя файла должно идти одним параметром, а из-за пробела получается несколько параметров. Чтобы получить один параметр, нужно имя файла сделать в кавычках.
ShellExecute(Handle,"open","EXCEL", "\"F:\\Пассаж.перевозки\\Исходное\\1 четверг\\автобусы коммерческие\\35к.xls\"",NULL,SW_MAXIMIZE);

Автор: artsb 12.5.2009, 11:59
Цитата(Deft @  12.5.2009,  08:30 Найти цитируемый пост)
если пути у меня не в ручную задаются

тогда с путями должно быть всё нормально, а вот по поводу количества параметров 586 тебе уже написал. Т.е.
Код

ShellExecute(Handle,"open","EXCEL", ("\"" + asPath +  "\"").c_str(), NULL,SW_MAXIMIZE);

где asPath переменная типа AnsiString, содержащая путь к файлу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)