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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2012, 09:17   #1
qwerty55
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 60
По умолчанию Как открыть папку по нажатию на кнопку

На форме находится кнопка, как открыть папку, которая находится рядом с самим ехе-шником? Нужно учесть что файл может быть запущен с разных компьютеров, следовательно путь меняется.
Я делал так:
Код:
ShellExecute(Form1.Handle,'explorer /select' , PChar(Application.ExeName + '\Data\') , nil, nil, SW_SHOW);
но это не работает
qwerty55 вне форума Ответить с цитированием
Старый 27.04.2012, 09:22   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,532
По умолчанию

extractfilepath(application.exename )+'Data'
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.04.2012, 09:27   #3
qwerty55
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 60
По умолчанию

Код:
ShellExecute(Form1.Handle,'explorer /select' , PChar(ExtractFilePath(Application.ExeName + 'Data')) , nil, nil, SW_SHOW);
вот так делаю, и не открывает. Где то в инете видел с помощью WinExec открытие делалось, но не могу найти теперь, может как-нибудь с помощью него?
qwerty55 вне форума Ответить с цитированием
Старый 27.04.2012, 09:42   #4
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

OpenDialog вам должен помочь
Dozent вне форума Ответить с цитированием
Старый 27.04.2012, 09:42   #5
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

ShellExecute - функция, и всегда возвращает какое-то определенное целое число, по которому можно судить, что конкретно мешает выполнению открытия. Подробнее можно почитать, например,здесь.
Может поможет...
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 27.04.2012, 09:48   #6
qwerty55
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 60
По умолчанию

как-то так?
Код:
OpenDialog1.Execute;
if OpenDialog1.Execute then
ShellExecute(Application.Handle, 'explorer /select' , 
PChar(ExtractFilePath(OpenDialog1.FileName)) , nil, nil, SW_SHOW);
Цитата:
Сообщение от tsar_ Посмотреть сообщение
ShellExecute - функция, и всегда возвращает какое-то определенное целое число, по которому можно судить, что конкретно мешает выполнению открытия. Подробнее можно почитать, например,здесь.
Может поможет...
там та же самая строка написана, что я писал выше:

Чтобы открыть папку, используйте один из следующих вызывов: ShellExecute(handle,nil,путь_для_па пки,nil,nil,SW_SHOWNORMAL);
или
ShellExecute(handle,'open',путь_для _папки,nil,nil,SW_SHOWNORMAL);

Последний раз редактировалось artemavd; 27.04.2012 в 10:48.
qwerty55 вне форума Ответить с цитированием
Старый 27.04.2012, 10:10   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,532
По умолчанию

Цитата:
Сообщение от qwerty55 Посмотреть сообщение
Код:
ShellExecute(Form1.Handle,'explorer /select' , PChar(ExtractFilePath(Application.ExeName + 'Data')) , nil, nil, SW_SHOW);
вот так делаю, и не открывает. Где то в инете видел с помощью WinExec открытие делалось, но не могу найти теперь, может как-нибудь с помощью него?
PChar(ExtractFilePath(Application.E xeName + 'Data'))
это СТРОКА ПАРАМЕТРОВ запуска программы explorer

теперь читаем это и это

explorer здесь ожидает увидеть множество параметров разделенных пробелами. T.e. если в пути есть пробел то все последующее воспринимается как следующий параметр. И в качестве пути только то что до пробела.

Код:
QuotedStr( ExtractfilePath(application.exename) +'Data')
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.04.2012, 10:15   #8
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Цитата:
там та же самая строка написана, что я писал выше:
Я видел, что там написано. Еще раз повторю: посмотрите, какое число возвращает ShellExecute. Ссылку я привел в первую очередь для того, чтоб вы увидели список возможных значений этой функции.
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 27.04.2012, 10:46   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

О Господии...какие проблемы-то я не пойму??? Открыть папку, которая лежит рядом с экзешником, во время работы самой программы. Там всего одна строка кода:
Код:
uses
 ShellAPI;
...
procedure TForm1.sBitBtn1Click(Sender: TObject);
begin
 ShellExecute(Handle,'open',PWideChar(ExtractFilePath(Application.ExeName) + 'papka'),nil,nil,SW_SHOWNORMAL);
end;
Код рабочий! Проверил только что. Внимательно смотреть на второй параметр кое кому!

qwerty55 , видимо мое предупреждение, оставленное тебе в одной из твоих тем, не подействовало на тебя??? Последнее предупреждение: или начинаешь думать и вникать или я буду безжалостно грохать твои темы все!
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.04.2012, 10:56   #10
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Да простит меня модер за оффтоп, хочу сказать
Просто народ тупой пошёл, только готовоё ждёт чтобы скопипастить думать ваше не хотят, да и вопросы правильно задавать не умеют...
Dozent вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как открыть ПАПКУ в OpenDialog? TaurusBrown Компоненты Delphi 8 31.10.2010 18:41
Как по нажатию на батон открыть папку SeRhy Общие вопросы Delphi 2 02.12.2009 20:00
Как по нажатию на Button открыть документ, выбранный в OpenDialog Stranger333 Общие вопросы Delphi 4 12.11.2009 14:27
Как закрыть MDIChild форму по нажатию на кнопку AndreyF Общие вопросы Delphi 4 11.07.2009 16:26
Как через дельфи открыть папку в проводнике? t3ns0r Общие вопросы Delphi 6 28.03.2009 21:32