Открытие папки с помощью кнопки
Как открыть папку с помощью кнопки buton1 например. Папка находиться C:\Documents and Settings\Admin\Рабочий стол\Новая папка.
|
что значит "открыть папку"
|
Тоесть при нажатии кнопки выскакивало окно windows explorer а с направлением C:\Documents and Settings\Admin\Рабочий стол\Новая папка
|
А чем функция SelectDirectory не устраивает?
|
SelectDirectory эт диалоговое окно если верить описанию. Шел же "по нажатию на кнопку откроет в эксплорере папку которую ему задаст программист т.е. его C:\Documents and Settings\Admin\Рабочий стол\Новая папка"
|
Beyound, Можете написать, как правильно вводить где и что?
|
NickDang, так :
Код:
procedure TForm1.btn1Click(Sender: TObject);
begin
ShellExecute(Self.Handle,'explore','C:\Documents and Settings\Admin\Рабочий стол\Новая папка',nil,nil,SW_SHOWNORMAL);
end;
в uses добавить
|
А если у меня система не на С:, учётка не Admin, система не локазирована на русский и Vista или Windows7 ?
Жёсткая привязка в данном случае - не правильный подход.
|
ИМХО, каков вопрос - таков ответ.
А то, что задано постом выше - это уже второй вопрос. Хотя сказано правильно.
|
LilLoco, Спасибо! то что надо)
---
Любезный, извини, в delphi я новичок )
|
Но это не правильно в любом случае, уж лучше тогда определять программно учётку пользователя и\или рабочий стол. Для скриптов AVZ писали определение рабочего стола через реестр, код нашёл в инете, принцип такой же. При запуске читаем ветку реестра
Код:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
ключ Desktop. Получаете истинное значение ключа, сохраняете его в переменную и используете как угодно
Код:
...
...
uses Registry;
...
function GetDesktopDir:String;
var reg:TRegistry;
begin
Result:='';
reg:=TRegistry.Create(KEY_READ);
try
reg.RootKey:=HKEY_CURRENT_USER;
if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',False) then
Result:=reg.ReadString('Desktop');
reg.CloseKey;
finally
reg.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(GetDesktopDir);
end;
...
Ещё нашёл такой, но с делфи знаком поверхностно, так что если что - не обессудьте. :)
Код:
uses
SHFolder;
var
path: array [0 .. MAX_PATH] of char;
begin
SUCCEEDED(SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, 0, 0, @path[0]));
end;
P.S. Проверяйте перед открытием наличие папки "Новая папка", иначе если её не будет...
|
Любезный, Да-да-да, вспомнил, читал когда-то, спасибо за напоминание. :yes: В любом случае узнавать местоположение учётки, программно проще и надёжнее чем жёстко прописывать путь без проверки даже существования папки.
|
Drongo, эм. вот так как ты советуешь делать точно ненадо. надо решать поставленную задачу а не придумывать себе работу. я согласен с тобой что "а если не локализована, а если все перемещено и т.д." но такой задачи нет. а то так можно начать - а если все в досе, а если надо рисовать свое окно а не експлорера, а если винда 95 и все вообще плохо.
|
Beyound, надо сразу учиться делать правильно, чтобы не было потом мучительно больно.
|
Цитата:
Цитата Beyound
надо решать поставленную задачу а не придумывать себе работу »
|
Из-за таких криворуких программистов, потом у юзеров головная боль и плевки в монитор с упоминанием разработчика приложения. :biggrin:
P.S. Я своё мнение высказал, дальше как хотите, лень-матушка или ограниченность ума позволяет делать так как хочеЦЦа.
|
Время: 08:39.
© OSzone.net 2001-