![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как открывать документы при помощи CreateProcess
jeka_t © (2005-09-07 13:33:00)Хочу открыть в Win98 документы Word, AutoCAD, Acrobat Reader с помощью процедуры CreateProcess...
Пишу:
function OpenDOC(const cmd: String): boolean; export;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
FillChar(StartInfo, SizeOf(StartInfo), #0);
with StartInfo do
begin
cb := SizeOf(cb);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := SW_SHOWNORMAL;
end;
Result := CreateProcess(nil, PChar( cmd ), nil, nil, false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo);
end;
Вызываю:
OpenDOC('"C:\AutoCAD\ACAD.EXE" "'+FileName+'"')
Он открывает его без проблем, но следущий файл, которого надо открыть, процедура сного запускает приложение AutoCAD...
И если файлов 10, то и запусков приложения тоже 10...
Как можно запустить одно приложение с более одним документом???
jeka_t (2005-09-08 12:26:00) [1]Спасибо, это лучший на данный момент метод... Не такой уж гипкий, но при желании можно достичь нужного результата...
Всем спасибо...:)))
alpet (2005-09-07 15:58:00) [2]Используй ShellExecute и не мучайся.
Германн (2005-09-07 14:49:00) [3]>Изучить параметры командной строки этого приложения.
2 jeka_t (07.09.05 14:24) [5]
... и потом не все приложения работают с параметрами запуска...
Ну уж, а если некие приложения и не работают так как тебе хочется, то тут все-равно облом. Нельзя заставить открыть в блокноте несколько документов.
Reindeer Moss Eater (2005-09-07 14:35:00) [4]Я думаю, что задача форумов - это иметь как можно большую аудиторию.
Digitman (2005-09-07 14:34:00) [5]
> jeka_t (07.09.05 14:24) [5]
а их и знать не надо.
достаточно знать приложение по умолчанию.
инф-ция же о приложении по умолчанию и ком.строке для открытия им указанного документа находится в реестре
ты же не удивляешься, что по щелчку мышью на иконке txt-файла всегда стартует, скажем, Notepad а не WordPad ?
спрашивается, откуда система узнала, какой процесс стартовать и какие параметры в ком.строке ему передать ?
ответ : из реестра эта инф-ция взята системой
то же самое и ты можешь проделать программно у себя в приложении
jeka_t (2005-09-07 14:33:00) [6]Я думаю задача форумов не потыкать, а помогать или же у Вас другое мнение по этому поводу?
Reindeer Moss Eater (2005-09-07 14:28:00) [7]Но приложений очень много и знать все приложения, которые работают с документами(pdf, max, plt, dwg, dwf, cdr) невозможно... и потом не все приложения работают с параметрами запуска...
Отсюда вывод - не задавай бессмысленных вопросов, подобных заданному тобой в этой ветке (jeka_t (07.09.05 13:33)).
jeka_t (2005-09-07 14:24:00) [8]Но приложений очень много и знать все приложения, которые работают с документами(pdf, max, plt, dwg, dwf, cdr) невозможно... и потом не все приложения работают с параметрами запуска...
Reindeer Moss Eater (2005-09-07 14:17:00) [9]>Как можно запустить одно приложение с более одним документом???
Изучить параметры командной строки этого приложения.
Reindeer Moss Eater (2005-09-07 14:14:00) [10]но следущий файл, которого надо открыть, процедура сного запускает приложение AutoCAD...
А по твоему CreateProcess не должна каждый раз создавать новый процесс?
А должна только когда?
jeka_t (2005-09-07 14:05:00) [11]Спасибо...
Этот способ работает, но он медленнее чем CreateProcess...
Хотелось бы использовать именно эту процедуру...
isasa (2005-09-07 13:51:00) [12]
var
app : OleVariant;
........
app:=CreateOleObject('объект');
//например
app.OpenDocument(......... //индивидуально для каждого объекта
..........