unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ This code uses the undocumented RunFileDlg function to show the "run" dialog }
{ Dieser Code verwendet die undokumentierte RunFileDlg Funktion, um den Ausführen Dialog anzuzeigen }
// For Win NT
procedure RunFileDlgW(OwnerWnd: HWND; Icon: HICON; lpstrDirectory: PWideChar;
lpstrTitle: PWideChar; lpstrDescription: PWideChar; Flags: Longint);
stdcall;
external '
Shell32.dll'
Index 61;
// For Win 9x (Win NT to show standard captions )
procedure RunFileDlg(OwnerWnd: HWND; Icon: HICON; lpstrDirectory: PChar;
lpstrTitle: PChar; lpstrDescription: PChar; Flags: Longint);
stdcall;
external '
Shell32.dll'
Index 61;
const
RFF_NOBROWSE = 1;
//Removes the browse button.
RFF_NODEFAULT = 2;
// No default item selected.
RFF_CALCDIRECTORY = 4;
// Calculates the working directory from the file name.
RFF_NOLABEL = 8;
// Removes the edit box label.
RFF_NOSEPARATEMEM = 14;
// Removes the Separate Memory Space check box (Windows NT only)
function ShowRunFileDialg(OwnerWnd: HWND; InitialDir, Title, Description: PChar;
flags: Integer; StandardCaptions: Boolean): Boolean;
var
HideBrowseButton: Boolean;
TitleWideChar, InitialDirWideChar, DescriptionWideChar: PWideChar;
Size: Integer;
begin
if (Win32Platform = VER_PLATFORM_WIN32_NT)
and not StandardCaptions
then
begin
Size := SizeOf(WideChar) * MAX_PATH;
InitialDirWideChar :=
nil;
TitleWideChar :=
nil;
DescriptionWideChar :=
nil;
GetMem(InitialDirWideChar, Size);
GetMem(TitleWideChar, Size);
GetMem(DescriptionWideChar, Size);
StringToWideChar(InitialDir, InitialDirWideChar, MAX_PATH);
StringToWideChar(Title, TitleWideChar, MAX_PATH);
StringToWideChar(Description, DescriptionWideChar, MAX_PATH);
try
RunFileDlgW(OwnerWnd, 0, InitialDirWideChar, TitleWideChar, DescriptionWideChar, Flags);
finally
FreeMem(InitialDirWideChar);
FreeMem(TitleWideChar);
FreeMem(DescriptionWideChar);
end;
end else
RunFileDlg(OwnerWnd, 0, PChar(InitialDir), PChar(Title), PChar(Description), Flags);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowRunFileDialg(Self.Handle,
nil,
nil,
nil, 0, True);
end;
end.