![]() |
Domain / Arbeitsgruppen Auswahl-Dialog
Liste der Anhänge anzeigen (Anzahl: 1)
Gibt es auch so einen hübschen Dialog zum auswählen einer Domain, wie den "Computer auswählen"-Dialog im Anhang?
Delphi-Quellcode:
function FindComputer(hWnd: THandle; Prompt: String; csidl: word; var Computer: String): boolean;
const BIF_NEWDIALOGSTYLE = $0040; BIF_USENEWUI = BIF_NEWDIALOGSTYLE or BIF_EDITBOX; BIF_BROWSEINCLUDEURLS = $0080; BIF_UAHINT = $0100; BIF_NONEWFOLDERBUTTON = $0200; BIF_NOTRANSLATETARGETS = $0400; BIF_SHAREABLE = $8000; BFFM_IUNKNOWN = 5; BFFM_SETOKTEXT = WM_USER + 105; // Unicode only BFFM_SETEXPANDED = WM_USER + 106; // Unicode only var bi : TBrowseInfo; ca : array[0..MAX_PATH] of char; pidl, pidlSelected: PItemIDList; m : IMalloc; begin if Failed(SHGetSpecialFolderLocation(hWnd, CSIDL_NETWORK, pidl)) then begin result := False; exit; end; try FillChar(bi, SizeOf(bi), 0); with bi do begin hwndOwner := hWnd; pidlRoot := pidl; pszDisplayName := ca; lpszTitle := PChar(Prompt); ulFlags := BIF_BROWSEFORCOMPUTER; end; pidlSelected := SHBrowseForFolder(bi); Result := Assigned(pidlSelected); if Result then Computer := '\\' + string(ca); finally if Succeeded(SHGetMalloc(m)) then m.Free(pidl); end; end; |
Re: Domain / Arbeitsgruppen Auswahl-Dialog
Man könnte doch einfach, den Ok-Button nur für die Domains verfügbar machen?
Delphi-Quellcode:
function BrowseCallbackProc(hwnd : THandle; uMsg, lParam, lpData: Cardinal) : Integer; stdcall;
var s : String; pidlSelected: PItemIDList; begin if uMsg = BFFM_SELCHANGED then begin SendMEssage(hwnd, BFFM_ENABLEOK, 0, 1); end; end; ... bi.lpfn := @BrowseCallbackProc; |
Re: Domain / Arbeitsgruppen Auswahl-Dialog
Hallo,
vor allem anderen würde ich das Flag BIF_DONTGOBELOWDOMAINS verwenden. Freundliche Grüße |
Re: Domain / Arbeitsgruppen Auswahl-Dialog
Den Wert der Konstanten BIF_DONTGOBELOWDOMAINS kann ich leider nicht finden. Es muss aber auch unter Windows 2000 funktionieren!
Das "s" war zu viel:
Delphi-Quellcode:
Funtioniert. Nur wie kann ich Windows dazu bringen, den Dialog richtig zu beschriften? Rufe ich die Funktion mit CSIDL_NETWORK auf, setht im Fenstertitel "Computer suchen". Und das passt ja nicht.
BIF_DONTGOBELOWDOMAIN = $0002;
|
Re: Domain / Arbeitsgruppen Auswahl-Dialog
Hallo Michael,
sorry für das extra S - ich hatte gerade eins übrig. Ich kann mit meiner Funktion FindComputer(), auch wenn CSIDL_NETWORK als Einstieg verwendet wird, einen eigenen Titel mit SHBrowseForFolder() ausgeben. Zumindest unter XP scheint da kein Zusammenhang zu sein. Freundliche Grüße |
Re: Domain / Arbeitsgruppen Auswahl-Dialog
Selber setzten wollte ich ihn nicht. Meine Texte sind zwar auf Englisch aber wenn ich jetzt noch die Systemdialoge selber beschrifte dann stimmt das ja auf anderen System nicht mehr. Zum Beispiel auf einem Französischen: Programm auf englisch, Systemdialoge auf Französisch und der eine Dialog ist dann auf Deutsch beschriftet. :mrgreen: Bei mir steht da jetzt erstmal "Ordner suchen":
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// Procedure : FindDomain // Comment : function FindDomain(hWnd: THandle; Prompt: String; var Domain: String): boolean; const BIF_NEWDIALOGSTYLE = $0040; BIF_USENEWUI = BIF_NEWDIALOGSTYLE or BIF_EDITBOX; BIF_BROWSEINCLUDEURLS = $0080; BIF_UAHINT = $0100; BIF_NONEWFOLDERBUTTON = $0200; BIF_NOTRANSLATETARGETS = $0400; BIF_SHAREABLE = $8000; BFFM_IUNKNOWN = 5; BFFM_SETOKTEXT = WM_USER + 105; // Unicode only BFFM_SETEXPANDED = WM_USER + 106; // Unicode only var bi : TBrowseInfo; ca : array[0..MAX_PATH] of char; pidl, pidlSelected: PItemIDList; m : IMalloc; begin if Failed(SHGetSpecialFolderLocation(hWnd, CSIDL_NETWORK, pidl)) then begin result := False; exit; end; try FillChar(bi, SizeOf(bi), 0); with bi do begin hwndOwner := hWnd; pidlRoot := pidl; pszDisplayName := ca; lpszTitle := PChar(Prompt); ulFlags := BIF_DONTGOBELOWDOMAIN; end; pidlSelected := SHBrowseForFolder(bi); Result := Assigned(pidlSelected); if Result then Domain := string(ca); finally if Succeeded(SHGetMalloc(m)) then m.Free(pidl); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz