запуск файла

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Dryg
незнакомец
Сообщения: 8
Зарегистрирован: 21.05.2010 00:23:47

запуск файла

Сообщение Dryg »

у меня 64 bit windows я пытаюсь запустить файл вот так

Код: Выделить всё

  ShellExecute(Application.mainform.Handle, Pchar('open'), Pchar('имя файла'), nil, Pchar('путь до файла'),SW_SHOWNORMAL);  


но у меня ругается на SW_SHOWNORMAL

Код: Выделить всё

unit1.pas(33,155) Error: Identifier not found "SW_SHOWNORMAL"


не пойму че не так!
Последний раз редактировалось Dryg 24.05.2010 12:09:38, всего редактировалось 1 раз.
Аватара пользователя
Light13
постоялец
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Сообщение Light13 »

Код: Выделить всё

uses
  windows;


или

Код: Выделить всё

  ShellExecute(Application.mainform.Handle, Pchar('open'), Pchar('имя файла'), nil, Pchar('путь до файла'), 1); 
Dryg
незнакомец
Сообщения: 8
Зарегистрирован: 21.05.2010 00:23:47

Сообщение Dryg »

Спасибо все ок!! но странно при нажатии на кнопку ничего не происходит!! я просто в delphi работал там все запускается а тут нет !
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Возможно путь к файлу указан в UTF8?
Dryg
незнакомец
Сообщения: 8
Зарегистрирован: 21.05.2010 00:23:47

Сообщение Dryg »

Brainenjii писал(а):Возможно путь к файлу указан в UTF8?


я пишу вот так

Код: Выделить всё

  ShellExecute(Handle, Pchar('open'),nil, nil,Pchar('C:\'),SW_SHOWNORMAL);
открывается диск C:\ но если путь указать до файла например вот так

Код: Выделить всё

C:\KAV\WinWorkstation\russian\setup.exe
все равно открывается диск C:\
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Смотрим документацию по ShellExecute -- официальную тут или неофициальную, например тут. Там указан список параметров.
1. Wnd - родительское окно, у вас это Application.mainform.Handle, порядок.
2. Operation - выполняемая операция, 'open', порядок.
3. FileName - имя файла для открытия, у вас почему-то nil.
4. Parameters - параметры командной строки, nil, нормально.
5. Directory - директория по умолчанию, почему то "C:\KAV\WinWorkstation\russian\setup.exe"
6. ShowCmd - режим отображения, SW_SHOWNORMAL, порядок.

Итого: как минимум нужно поменять 3 и 5 параметр местами. А чтобы запускаемые программы работали нормально, лучше указать FileName = "C:\KAV\WinWorkstation\russian\setup.exe" и Directory = "C:\KAV\WinWorkstation\russian\".

P.S.
Dryg писал(а):в delphi работал там все запускается а тут нет !

До чего ж люди порой любят валить свои косяки на ни в чём не повинные инструменты :)
В Delphi ваш код тоже открывает только диск, я пробовал.
mcmraak
незнакомец
Сообщения: 2
Зарегистрирован: 04.09.2010 15:53:19

Сообщение mcmraak »

Вот так работает:
ShellExecute(Application.mainform.Handle, Pchar('open'), Pchar('filename.exe), nil, Pchar('directory'), 1);

Но если вдруг в адресе есть папки на русском, то внешнее приложение не запускается :(
Поможите! Подскажите! Проблема в кодировке? Как решить?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

uses ... LCLProc ...
Pchar(Utf8ToSys('filename.exe')),
Pchar(Utf8ToSys('directory'))
mcmraak
незнакомец
Сообщения: 2
Зарегистрирован: 04.09.2010 15:53:19

Сообщение mcmraak »

Odyssey писал(а):uses ... LCLProc ...
Pchar(Utf8ToSys('filename.exe')),
Pchar(Utf8ToSys('directory'))


УРА!!! Работает!!! Одисей, Вам мои всяческие благодарности!!! Спасибо!!! Два часа сидел гуглил... :D :D :D
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

mcmraak писал(а):Два часа сидел гуглил... :D :D :D

А можно было бы просто поискать на этом форуме!
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

Странно, но у меня модуль FileUtil потребовал для Utf8ToSys, а не LCLProc.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Её давно, еще с 0.9.28.2, туда перенесли.
Ответить