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

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

turbolover 16-05-2016 18:12 2635198

Открытие папки, "AppData" не зная букву диска
 
Как открыть папку, "AppData" в (Windows7) не-зная букву диска, и не зная имя пользователя.
Скажем так- определить системный диск и имя пользователя переменной, и направить на открытие папки: "AppData".
Стандартный пример скрипта.
Код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellApi;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Self.Handle,'explore','C:\Users\GhostRider\AppData',nil,nil,SW_SHOWNORMAL);
end;

end.

Поправте скрипт если можно.

NickM 16-05-2016 18:44 2635208

turbolover, может так? http://www.oszone.net/3673

turbolover 16-05-2016 19:11 2635217

NickM!
Пример батника интегрированного в Delphi.
Код:

program Project1;

uses
  Windows, SysUtils;

var
  BatchFile: TextFile;
  BatchFileName: string;
{$R *.res}

begin
BatchFileName := ExtractFilePath(ParamStr(0)) + 'Test.bat';
AssignFile(BatchFile, BatchFileName);
Rewrite(BatchFile);
WriteLn(BatchFile,'Start Explorer "%Systemdrive%\Users\%Username%\AppData" & Del %0');
CloseFile(BatchFile);
WinExec('Test.bat',1)
end.


Iska 17-05-2016 06:13 2635307

Цитата:

Цитата turbolover
"%Systemdrive%\Users\%Username%\AppData" »

Вообще-то имелось в виду, например:
Код:

%AppData%\..
Особенно надежды, что путь к профилю пользователя всегда содержит папку именно с именем этого пользователя :).

А совсем правильно будет использовать Known Folders (Windows).

P.S. И да — никакие «батники» для открытия окна Проводника не нужны в принципе.

opel431 17-05-2016 23:45 2635537

Код:

uses ShlObj;

// получить путь к специальным папкам
function GetSpecialFolderPath(folder: integer): string;
const
  SHGFP_TYPE_CURRENT = 0;
var
  path: array [0 .. MAX_PATH] of char;
begin
  if SUCCEEDED(SHGetFolderPath(0, folder, 0, SHGFP_TYPE_CURRENT, @path[0])) then
    Result := path
  else
    Result := '';
end;

procedure TForm2.btn1Click(Sender: TObject);
begin
  lbl1.Caption := GetSpecialFolderPath(CSIDL_APPDATA);
end;



Время: 17:57.

Время: 17:57.
© OSzone.net 2001-