AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Domain / Arbeitsgruppen Auswahl-Dialog

Domain / Arbeitsgruppen Auswahl-Dialog

Ein Thema von Luckie · begonnen am 24. Jun 2007 · letzter Beitrag vom 24. Jun 2007
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Domain / Arbeitsgruppen Auswahl-Dialog

  Alt 24. Jun 2007, 04:00
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;
Miniaturansicht angehängter Grafiken
computersuchen_725.jpg  
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

Re: Domain / Arbeitsgruppen Auswahl-Dialog

  Alt 24. Jun 2007, 10:25
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;
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Domain / Arbeitsgruppen Auswahl-Dialog

  Alt 24. Jun 2007, 10:33
Hallo,

vor allem anderen würde ich das Flag BIF_DONTGOBELOWDOMAINS verwenden.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Domain / Arbeitsgruppen Auswahl-Dialog

  Alt 24. Jun 2007, 13:41
Den Wert der Konstanten BIF_DONTGOBELOWDOMAINS kann ich leider nicht finden. Es muss aber auch unter Windows 2000 funktionieren!

Das "s" war zu viel:
BIF_DONTGOBELOWDOMAIN = $0002; 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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Domain / Arbeitsgruppen Auswahl-Dialog

  Alt 24. Jun 2007, 14:57
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Domain / Arbeitsgruppen Auswahl-Dialog

  Alt 24. Jun 2007, 23:07
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. 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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz