Вообще, винда предоставляет возможность расширения некоторых стандартных диалогов с помощью шаблонов и hook-процедуры. Например, для OpenFileDialog'а пишется к примеру, такой rc-скрипт с шаблоном
 
myres.rc

Code:

OFT DIALOG -1, 1, 304, 62

STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS

CAPTION ""

FONT 8, "MS Sans Serif"

{

CONTROL "Select Options", 100, "button", BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 69, 4, 224, 52

CONTROL "CheckBox1", 101, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 84, 19, 60, 12

CONTROL "CheckBox2", 102, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 84, 38, 60, 12

}

 
потом он компилится
 

brcc32.exe myres.rc

 

  

добавьте ShellAPI в USES

Code:

ShellExecute(handle, nil,

'rundll32.exe',

'shell32.dll,SHHelpShortcuts_RunDLL AddPrinter', '', SW_SHOWNORMAL);

 

 Этот код показывает диалоговое окно стандартных свойств файла, как в проводнике Windows

 

Code:

{ This code shows the standard file properties dialog like in Windows Explorer }

 

uses

shellapi;

 

// Thanks to Peter Below (TeamB) for this code

procedure PropertiesDialog(FileName: string);

var

sei: TShellExecuteInfo;

begin

FillChar(sei, SizeOf(sei), 0);

sei.cbSize := SizeOf(sei);

sei.lpFile := PChar(FileName);

sei.lpVerb := 'properties';

sei.fMask := SEE_MASK_INVOKEIDLIST;

ShellExecuteEx(@sei);

end;

 

 

procedure TForm1.Button1Click(Sender: TObject);

begin

if Opendialog1.Execute then

PropertiesDialog(Opendialog1.FileName);

end;

 

Code:

WinExec('rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2',SW_SHOWNORMAL);

 

Этот код отображает приложение/файл "открыть с помощью" диалоговое окно Ввод полного пути и имени файла в качестве параметра приведет к открытию

диалогового окна с отображением строки "выберите программу, которую вы хотите использовать, чтобы открыть файл "Имя файла"".

 

 

Code:

uses

Shellapi;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ShellExecute(Handle, 'open', 'control', 'date/time', nil, SW_SHOW);

end;

 

 

Code:

procedure TForm1.Button1Click(Sender: TObject);

var

Ic: TIcon;

begin

Ic := TIcon.Create;

Ic.Handle := LoadIcon(0, IDI_APPLICATION);

Form1.Canvas.Draw(1, 1, Ic);

Ic.Handle := LoadIcon(0, IDI_ASTERISK);

Form1.Canvas.Draw(32, 1, Ic);

Ic.Handle := LoadIcon(0, IDI_EXCLAMATION);

Form1.Canvas.Draw(64, 1, Ic);

Ic.Handle := LoadIcon(0, IDI_QUESTION);

Form1.Canvas.Draw(1, 32, Ic);

Ic.Handle := LoadIcon(0, IDI_HAND);

Form1.Canvas.Draw(32, 32, Ic);

Ic.Handle := LoadIcon(0, IDI_WINLOGO);

Form1.Canvas.Draw(64, 32, Ic);

Ic.Destroy;

end;

 

 

Code:

uses

registry, shellapi;

 

function Launch_CreateShortCut_Dialog(Directory: string): Boolean;

var

reg: TRegistry;

cmd: string;

begin

Result := False;

reg    := TRegistry.Create;

try

   reg.Rootkey := HKEY_CLASSES_ROOT;

   if reg.OpenKeyReadOnly('.LNK\ShellNew') then

   begin

     cmd    := reg.ReadString('Command');

     cmd    := StringReplace(cmd, '%1', Directory, []);

     Result := True;

     WinExec(PChar(cmd), SW_SHOWNORMAL);

   end

finally

   reg.Free;

end;

end;

 

{Example}

 

procedure TForm1.Button1Click(Sender: TObject);

begin

Launch_CreateShortCut_Dialog('c:\temp');

end;

 

 

Как именно с ними работать чтобы на с: открыть файл?

 

Похоже я понял что тебя смущает: OpenFileDialog и SaveFileDialog - ничего сами по себе не открывают и не сохраняют. Они нужны только для выбора имени файла. Ставишь их на форму. Там куча свойств и опций - типа исходны каталог, показыать скрытые файлы или нет и т.п. Впрочем по началу можно их вообще не указывать. Тебе надо знать только 1 метод - execute - открыть диалог:

"Выбрать компьютер" - это диалог, предоставляемый сетевыми службами (NTLANMAN.DLL) для Windows для отображения серверов и компьютеров.

 

Code:

uses

CommCtrl;

 

// Example: Hide the "Create New Folder" Button.

 

procedure TForm1.OpenPictureDialog1Show(Sender: TObject);

const

TB_BTN_NEWFOLDER  = 40962;

var

  hWndToolbar, wnd: HWND;

  tbInfo: TTBButtonInfoA;

begin

   tbInfo.cbSize := SizeOf(TTBButtonInfo);

   tbInfo.dwMask := TBIF_STATE;

   tbinfo.fsState := TBSTATE_HIDDEN or TBSTATE_INDETERMINATE;

 

   hWndToolbar := FindWindowEx(GetParent((Sender as TOpenPictureDialog).Handle), 0,

     'ToolbarWindow32', nil);

   SendMessage(hWndToolbar, TB_SETBUTTONINFO, TB_BTN_NEWFOLDER  ,LParam(@tbinfo));

end;