Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Открытие папки с помощью кнопки (http://forum.oszone.net/showthread.php?t=224675)

NickDang 07-01-2012 19:38 1830388

Открытие папки с помощью кнопки
 
Как открыть папку с помощью кнопки buton1 например. Папка находиться C:\Documents and Settings\Admin\Рабочий стол\Новая папка.

ferget 07-01-2012 20:41 1830425

что значит "открыть папку"

Beyound 07-01-2012 21:11 1830444

ээххххх

NickDang 07-01-2012 21:27 1830457

Тоесть при нажатии кнопки выскакивало окно windows explorer а с направлением C:\Documents and Settings\Admin\Рабочий стол\Новая папка

opel431 08-01-2012 02:27 1830697

А чем функция SelectDirectory не устраивает?

Beyound 08-01-2012 07:49 1830728

SelectDirectory эт диалоговое окно если верить описанию. Шел же "по нажатию на кнопку откроет в эксплорере папку которую ему задаст программист т.е. его C:\Documents and Settings\Admin\Рабочий стол\Новая папка"

NickDang 08-01-2012 11:45 1830795

Beyound, Можете написать, как правильно вводить где и что?

LilLoco 08-01-2012 12:35 1830810

NickDang, так :
Код:

procedure TForm1.btn1Click(Sender: TObject);
begin
  ShellExecute(Self.Handle,'explore','C:\Documents and Settings\Admin\Рабочий стол\Новая папка',nil,nil,SW_SHOWNORMAL);
end;

в uses добавить
Код:

ShellApi

Drongo 08-01-2012 15:19 1830902

А если у меня система не на С:, учётка не Admin, система не локазирована на русский и Vista или Windows7 ?

Жёсткая привязка в данном случае - не правильный подход.

Любезный 08-01-2012 16:52 1830959

ИМХО, каков вопрос - таков ответ.

А то, что задано постом выше - это уже второй вопрос. Хотя сказано правильно.

NickDang 08-01-2012 17:27 1830991

LilLoco, Спасибо! то что надо)
---
Любезный, извини, в delphi я новичок )

Drongo 08-01-2012 17:55 1831037

Но это не правильно в любом случае, уж лучше тогда определять программно учётку пользователя и\или рабочий стол. Для скриптов 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. Проверяйте перед открытием наличие папки "Новая папка", иначе если её не будет...

Любезный 08-01-2012 23:59 1831273

Цитата:

Цитата Drongo
При запуске читаем ветку реестра »

Ээээ! Так делать не надо.
http://www.transl-gunsmoker.ru/2008/...l-folders.html

Drongo 09-01-2012 00:57 1831309

Любезный, Да-да-да, вспомнил, читал когда-то, спасибо за напоминание. :yes: В любом случае узнавать местоположение учётки, программно проще и надёжнее чем жёстко прописывать путь без проверки даже существования папки.

Beyound 09-01-2012 15:11 1831662

Drongo, эм. вот так как ты советуешь делать точно ненадо. надо решать поставленную задачу а не придумывать себе работу. я согласен с тобой что "а если не локализована, а если все перемещено и т.д." но такой задачи нет. а то так можно начать - а если все в досе, а если надо рисовать свое окно а не експлорера, а если винда 95 и все вообще плохо.

Iska 09-01-2012 15:53 1831721

Beyound, надо сразу учиться делать правильно, чтобы не было потом мучительно больно.

Drongo 09-01-2012 17:55 1831831

Цитата:

Цитата Beyound
надо решать поставленную задачу а не придумывать себе работу »

Из-за таких криворуких программистов, потом у юзеров головная боль и плевки в монитор с упоминанием разработчика приложения. :biggrin:

P.S. Я своё мнение высказал, дальше как хотите, лень-матушка или ограниченность ума позволяет делать так как хочеЦЦа.


Время: 08:39.

Время: 08:39.
© OSzone.net 2001-