Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2011, 19:24   #1
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию Научите юзать ShellExecute

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

пишу так:
ShellExecute(0,'Open','C:\Game.exe. lnk',nil, nil, SW_RESTORE); - критует
причем не проект, а сама игра!

чем ярлыки файлов игр
отличаются от
ярлыков файлов программ или папок
и как их открывать?
пыжок

Последний раз редактировалось maloun; 22.06.2011 в 19:59.
maloun вне форума Ответить с цитированием
Старый 22.06.2011, 20:14   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
чем ярлыки файлов игр
Тем, что они как и другие серьезные проги используют ресурсы в своих папках, а вы их запускает фиг знает откуда.

Цитата:
и как их открывать?
Обязательно указывать правильную рабучую папку.
p51x вне форума Ответить с цитированием
Старый 22.06.2011, 20:20   #3
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Обязательно указывать правильную рабучую папку.
в качестве какого параметра мне её указывать ?

делаю так
ShellExecute(0,'open','WorldOfGoo.e xe','C:\Program Files\World of Goo\WorldOfGoo.exe','C:\Program Files\World of Goo',SW_RESTORE);
что-то явно не то...
пыжок

Последний раз редактировалось maloun; 22.06.2011 в 20:32.
maloun вне форума Ответить с цитированием
Старый 22.06.2011, 20:53   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Функция ShellExecute

Функция ShellExecute не только запускает программы, а открывает, редактирует или печатает файл, с учетом зарегестрированного типа, а также открывает указанную папку проводником. Возвращает Handle ссылку на открытое окно.
Используемый модуль ShellAPI. Его нужно не забыть указать в разделе Uses.
Описание: ShellExecute (hWnd: HWND; Operation: PChar; FileName: PChar; Parametrs: PChar; Directory: PChar; CmdShow: Integer): HINST;
где: hWnd – Handle родительского окна, в который будут передаваться сообщения запускаемого приложения. Можно указывать Handle-ссылку окна вашего приложения.
Operation – производимая операция. Open – открыть, print – напечатать, explore – открыть папку. По умолчанию open, если указать nil.
FileName – имя файла или документа, интернет ссылка, e-mail адрес.
Parametrs – параметры, передаваемые приложению в командной строке.
Directory – каталог по умолчанию.
CmdShow – стиль окна. Показывает, в каком состоянии будет отображаться окно при запуске. Подробно рассказано выше.

Вместо параметров Operation, Parametrs и Directory можно ставить nil. Они являются не обязательными параметрами для запуска.
В случае успешного запуска возвращает Handle окна, в случае неудачи возвращает код ошибки меньше или равное 32. Список возможных ошибок можно прочитать в справке по этой команде.

Пример использования команды ShellExecute в программе:
ShellExecute (Form1.Handle, nil, 'http://programming.dax.ru', nil, nil, SW_RESTORE); //запуск нашей странички
ShellExecute (Form1.Handle, nil, PChar (Application.ExeName), nil, nil, SW_RESTORE); //запуск второй копии этой программы
ShellExecute (Form1.Handle, nil, 'iexplore', 'http://programming.dax.ru', nil, SW_RESTORE); //запуск в отдельном окне
ShellExecute (Form1.Handle, nil, 'mailto:semen@krovatka.net?subject= delphi', nil, nil, SW_RESTORE); //написать мне письмо
ShellExecute (Form1.Handle, nil, 'c:\1.doc', nil, nil, SW_RESTORE); //открыть документ

Последний раз редактировалось Shouldercannon; 22.06.2011 в 20:55.
Shouldercannon вне форума Ответить с цитированием
Старый 22.06.2011, 21:04   #5
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Пример загрузки программы через ярлык
Цитата:
ShellExecute(0, nil, 'C:\Program Files\World of Goo\WorldOfGoo.lnk', nil, nil, SW_SHOWNORMAL);
Aliens_wolfs вне форума Ответить с цитированием
Старый 22.06.2011, 21:44   #6
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
Пример загрузки программы через ярлык
не знаю почему но когда я указал так
ShellExecute(0,'open','WorldOfGoo.e xe',nil,'C:\Program Files\World of Goo',SW_RESTORE);
всё заработало как мне нужно
пыжок
maloun вне форума Ответить с цитированием
Старый 22.06.2011, 21:46   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вам стоит узнать что такое текущая директория и её отношение к относительному пути.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.06.2011, 07:19   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
не знаю почему
Тогда перечитывате мой пост до позеленения
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли юзать OpenTK в С++ samouelson Visual C++ 1 05.06.2011 16:53
Как можно юзать WinAPI в C# ? Lemo Общие вопросы .NET 6 16.07.2010 11:35
BinToHex из Classes. Как юзать и скормить ей большой String Alex Cones Общие вопросы Delphi 5 05.11.2009 17:18
Маршрутизация.Как юзать локальные ресурсы? Zerone Свободное общение 10 06.10.2009 19:27
как юзать библиотеку time в с++ ? Познающий Общие вопросы C/C++ 1 11.06.2009 17:22