首页  编辑  

运行对话框

Tags: /超级猛料/VCL/Common.Dialog.通用对话框和控件/   Date Created:

SHRunDialog(hwnd,0,0,title,prompt,chkNoRunMRU);

function SHRunDialog(h:hwnd;szFilename:pchar;rev:dword;iconIndex:integer):longint;stdcall;external 'shell32.dll' index 61;

{ This code uses the undocumented RunFileDlg function to show the "run" dialog }

// 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(FindWindow('Shell_TrayWnd', nil), nil, nil, nil, RFF_NOBROWSE, True);

end;