IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Запуск файла из делфи, какая функщия это делает???
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


мне надо чтоб моя прога в определённое время запускала файл с локального диска, подкажите как это сделать....
я пытаюсь юзать апи функцию ShellExecut

ShellExecute(HANDLE, 0, '"C:\Program Files\Winamp\winamp.exe"',
'"D:\Music\KoЯn\Untouchables\korn-thoughless.mp3"',nil,0);

но мне нужна возможность выбора открываемого файла
ShellExecute(HANDLE, 0, '"C:\Program Files\Winamp\winamp.exe"',
OpenDialog1.FileName,nil,0);

а FileName недопустимо в данном случае.....

может есть другая возможность запуска внешнего файла, если да то какая???


--------------------
когда в руках молоток, все кажутся гвоздями
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






ShellExecute или WinExec ...
http://forum.pascal.net.ru/index.php?showt...indpost&p=37611
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


мне нужна возможность выбора открываемого файла с помощью OpenDialog


--------------------
когда в руках молоток, все кажутся гвоздями
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата($ad!st @ 10.05.05 13:31)
а FileName недопустимо в данном случае.....


Цитата($ad!st @ 10.05.05 14:47)
мне нужна возможность выбора открываемого файла с помощью OpenDialog

Не пора ли выбрать что-то одно... Эти 2 условия друг другу просто противоречат...

Почему недопустимо использование FileName? Это же просто строка, что ее нельзя передать в ShellExecute?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


Цитата
Почему недопустимо использование FileName? Это же просто строка, что ее нельзя передать в ShellExecute?

нельзя, вот что оно мне пишет:

[Error] runner.pas(49): Incompatible types: 'String' and 'PChar'

такаяже фигня с WinExec.....

Сообщение отредактировано: $ad!st -


--------------------
когда в руках молоток, все кажутся гвоздями
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ну, так переведи String в PChar:
Pchar(s) ... и передавай в процедуру
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


УРААААААА!!!!!!!работает, только не так как надо...но всёравно спасибо


--------------------
когда в руках молоток, все кажутся гвоздями
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Николай

Репутация: -  0  +


Запарился уже с этим ShellExecute... в общем проблемма в следущем... на форме есть кнопа которая отвечает за открытие документа в ворде(путь до документа в переменной) есть ещё опенДиалог который никакого отношения к этой всей фигне отношения не имеет НО ShellExecute начинает возвращать значение 2(что меньше 32 и говорит об ошибке если я правильно понимаю) как только я хотябы раз воспользуюс опен диалогом... а до этого всё ОК... Гуру подскажите в чём могут быть грабли?
вот кусок проги:

procedure TADDKandidateForm.SB2Click(Sender: TObject);
begin
if OD.Execute then
begin
FilePath:=OD.FileName;
FileName:=ExtractFileName(FilePath);
FilePathEdit.Text:=FileName;
end;
end;

procedure TADDKandidateForm.OpenButtonClick(Sender: TObject);
var h:HWND;
begin
ShellExecute(h,PChar('open'),PChar(ResumeImage),nil,PChar('ResumeFolder\'),SW_ShowNormal);
end;


переменная ResumeImage:string; если что...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
в чём могут быть грабли?
Скорее всего - в том, что пользование OpenDialog-ом изменяет текущую папку, и все относительные пути, естественно, оказываются неправильными, что подтверждает и Code = 2 (ERROR_FILE_NOT_FOUND) ...

Как вариант - используй пятым параметром ShellExecute не относительный, а абсолютный путь (ExtractFileDir(ParamStr(0)) вернет тебе папку, в которой находится EXE-файл твоего приложения, от него и надо перейти в папку \ResumeFolder)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Николай

Репутация: -  0  +


volvo
Сенькью вери матч... как раз в этом прикол и был... просто добавил
SetCurrentDir(ExtractFileDir(Application.ExeName));

перед вызовом ShellExecute
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 8:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name