local paylaşımda klasör seçme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
local paylaşımda klasör seçme
Merhaba arkadaşlar localde paylaştığım klasör üzerinde işlem yaptırmalıyım bunun içinde bir dialogbox açıp paylaşıma açtığım klasörlerden işlem yapacağım paylaşılmış klasörü seçtirmem lazım ancak local paylaşımı listeleyip klasör seçtirme işlemi yapamadım bu konuda önerileriniz nedir ?
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: local paylaşımda klasör seçme
Klasör seçimi için aşağıdaki kod işini görecektir.
Kod: Tümünü seç
uses ..., Shlobj, Activex; // eklemeyi unutma.
function SelectFolderDialog(Caption: string; var strFolder: string): Boolean;
function BrowseProc(hwnd: HWnd; uMsg: integer; lParam, lpData: lParam): Integer; stdcall;
var Dir: array[0..MAX_PATH] of char;
begin
case uMsg of
BFFM_INITIALIZED:
begin
SendMessage(hwnd, BFFM_SETSTATUSTEXT,0, lpData);
SendMessage(hwnd, BFFM_SETSELECTION, 1, lpData);
end;
BFFM_SELCHANGED:
if(SHGetPathFromIDList(PItemIDList(lParam), Dir)) then
SendMessage(hwnd, BFFM_SETSTATUSTEXT,0, integer(@Dir[0]));
end;
Result := 0;
end;
var BrowseInfo: TBrowseInfo;
ItemIDList: PItemIDList;
DisplayName: array[0..MAX_PATH] of Char;
begin
Result := False;
FillChar(BrowseInfo, SizeOf(BrowseInfo), #0);
with BrowseInfo do begin
hwndOwner := Application.Handle;
pszDisplayName := @DisplayName[0];
lpszTitle := PChar(Caption);
ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE or BIF_STATUSTEXT;
lpfn := @BrowseProc;
lparam:= Integer(PChar(strFolder));
end;
ItemIDList := SHBrowseForFolder(BrowseInfo);
if Assigned(ItemIDList) then
begin
if SHGetPathFromIDList(ItemIDList, DisplayName) then
begin
strFolder := DisplayName;
Result := True;
end;
CoTaskMemFree(ItemIDList);
end;
end;
// örnek kullanım
procedure TForm1.Button1Click(Sender: TObject);
var Folder: string;
begin
Folder := 'C:\Users\kullanici\desktop'; // varsayılan klasör
if SelectFolderDialog('Bir klasör seçin', Folder) then
begin
Edit1.Text := Folder;
end;
end;