AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Computer arbeitsgruppen übergreifend suchen mit Win-Dialog
Thema durchsuchen
Ansicht
Themen-Optionen

Computer arbeitsgruppen übergreifend suchen mit Win-Dialog

Ein Thema von Luckie · begonnen am 26. Apr 2005 · letzter Beitrag vom 28. Apr 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Luckie
Luckie

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

Computer arbeitsgruppen übergreifend suchen mit Win-Dialog

  Alt 26. Apr 2005, 13:11
Kennt jemand einen Windows-Dialog, mit dem amn arbeitsgruppenübergreifen Rechner im Netzwerk suchen kann?

Zur Zeit benutze ich folgenden Windows-Dialog aus der ntlanman.dll, um Computer im Netzwerk zu suchen:
Delphi-Quellcode:
type
  TServerBrowseDialogA0 = function(hwnd: HWND; pchBuffer: pointer;
    cchBufSize: DWord): bool; stdcall;

//...;

LANMAN_DLL := GetModuleHandle('NTLANMAN.DLL');
  if LANMAN_DLL = 0 then
    LANMAN_DLL := LoadLibrary('NTLANMAN.DLL');
  if LANMAN_DLL <> 0 then
  begin
    @ServerBrowseDialogA0 := GetProcAddress(LANMAN_DLL,
      ServerBrowseDialogA0_name);
    if @ServerBrowseDialogA0 = nil then
      halt;
  end;

//...;

ServerBrowseDialogA0(hDlg, @buffer, MAX_PATH);
Leider sucht der nur in der eigenen Arbeitsgruppe. Es müsste doch eigentlich auch einen Dialog geben, um arbeitsgruppenübergreifend zu suchen.

Mit diesem geht es wohl:
Delphi-Quellcode:
const
  FOCUSDLG_DOMAINS_ONLY = 1;
  FOCUSDLG_SERVERS_ONLY = 2;
  FOCUSDLG_SERVERS_DOMAINS = 3;
  FOCUSDLG_BROWSE_LOGON_DOMAIN = $00010000;
  FOCUSDLG_BROWSE_WKSTA_DOMAIN = $00020000;
  FOCUSDLG_BROWSE_OTHER_DOMAINS = $00040000;
  FOCUSDLG_BROWSE_TRUSTING_DOMAINS = $00080000;
  FOCUSDLG_BROWSE_WORKGROUP_DOMAINS = $00100000;
  FOCUSDLG_BROWSE_ALL_DOMAINS = FOCUSDLG_BROWSE_LOGON_DOMAIN or
    FOCUSDLG_BROWSE_WKSTA_DOMAIN or FOCUSDLG_BROWSE_OTHER_DOMAINS or
    FOCUSDLG_BROWSE_TRUSTING_DOMAINS or FOCUSDLG_BROWSE_WORKGROUP_DOMAINS;


function SystemFocusDialog(hwndOwner: HWND; dwSelectionFlag: UINT;
  wszName: PWideChar; dwBufSize: DWORD; var bOKPressed: Boolean;
  wszHelpFile: PWideChar; dwContextHelpId: DWORD): DWORD; stdcall;
  external 'ntlanman.dllName 'I_SystemFocusDialog';

function ComputerBrowser(hWndParent: HWND; wCompName: PWideChar;
  dwBufLen: DWORD): Boolean;
var
  dwError: DWORD;
begin
  Result := False;
  dwError := SystemFocusDialog(hWndParent, FOCUSDLG_SERVERS_DOMAINS {or
    FOCUSDLG_BROWSE_ALL_DOMAINS}
,
    wCompName, dwBufLen, Result, nil, 0);
  if dwError <> NO_ERROR then Exit;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  wCompName: array [0..MAX_COMPUTERNAME_LENGTH + 1] of WideChar;
begin
  if ComputerBrowser(Handle, wCompName, MAX_COMPUTERNAME_LENGTH + 1) then
    ShowMessage(wCompName)
  else
    ShowMessage('no computer selected');
end;
Nur steht dann überall was von einer Domäne, was natürlcih etwas verwirrt, da man ja eigentlich einen Computer auswählen soll.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

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

Re: Computer arbeitsgruppen übergreifend suchen mit Win-Dial

  Alt 26. Apr 2005, 19:26
Ich benutze den Standarddialog der Shell mit SHBrowseForFolder().

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Computer arbeitsgruppen übergreifend suchen mit Win-Dial

  Alt 26. Apr 2005, 21:24
Zitat von marabu:
Ich benutze den Standarddialog der Shell mit SHBrowseForFolder().
Um Computer im Netzwerk zu suchen? Bist du sicher, dass du verstanden hast, was ich will?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

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

Re: Computer arbeitsgruppen übergreifend suchen mit Win-Dial

  Alt 26. Apr 2005, 21:40
Warum zweifelst Du an der Auffassungsgabe vom marabu?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Computer arbeitsgruppen übergreifend suchen mit Win-Dial

  Alt 27. Apr 2005, 14:37
Zitat von marabu:
Warum zweifelst Du an der Auffassungsgabe vom marabu?
Warum sprichst du von dir selber in der Drittenpersoneinzahl?

Warum ich daran zweifele? Weil ich den angesprochenen Dialog nur zum Auswählen von Ordnern kenne. Eventuell zeigst du mir mal, wie du ihn so einsetzt, dass er nur Computer im lokalen Netzwerk arbeitsgruppenübergreifend anzeigt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

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

Re: Computer arbeitsgruppen übergreifend suchen mit Win-Dial

  Alt 27. Apr 2005, 18:31
Zitat von Luckie:
Warum sprichst du von dir selber in der Drittenpersoneinzahl?
Tue ich das wirklich?

Zitat von Luckie:
Eventuell zeigst du mir mal, wie du ihn so einsetzt, dass er nur Computer im lokalen Netzwerk arbeitsgruppenübergreifend anzeigt.
SHBrowseForFolder() listet Folder und Virtuelle Folder aus dem Shell-Namespace. Computer und Drucker sind virtuelle Folder. Achte auf BIF_BROWSEFORCOMPUTER im angehängten Code. Beim Aufruf der Funktion kannst du bestimmen, was der RootFolder sein soll. Näheres im PSDK.

FindComputer('Such dir einen Vogel aus:', CSIDL_NETWORK, sMachine); Grüße vom marabu.
Angehängte Dateien
Dateityp: pas findcomputer_182.pas (941 Bytes, 58x aufgerufen)
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: Computer arbeitsgruppen übergreifend suchen mit Win-Dial

  Alt 27. Apr 2005, 18:36
Luckie hat auf seiner Homepage selbst eine SHBrowseForFolder-Lösung. Ich glaube, die hat er auch ganz allein entworfen, . Der Dialog ist nützlich, wenn du dir die Netzwerkumgebung anzeigen lassen willst. Aber Suchen (so wie ich das verstehe: Rechnername eintippen -> Enter -> Computer wird gesucht) kannst du damit nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Computer arbeitsgruppen übergreifend suchen mit Win-Dial

  Alt 27. Apr 2005, 21:15
Nein nein, das passt schon. Danke marabu, das war es was ich brauchte. Habe nur nicht gewusst, dass der BrowsForFolder Dialog das auch kann.

Achm, was mir da noch einfällt: Klappt das jetzt auch arbeitsgruppenübergreifend?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

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

Re: Computer arbeitsgruppen übergreifend suchen mit Win-Dial

  Alt 28. Apr 2005, 07:28
Zitat von Luckie:
Klappt das jetzt auch arbeitsgruppenübergreifend?
Das Fenster stellt einen Browser zur Verfügung. Wenn du CSIDL_NETWORK für den root folder nimmst, dann kannst du in jede Arbeitsgruppe rein navigieren.

Dialog-basiertes Suchen im Sinne von MathiasSimmack geht einfacher:

Delphi-Quellcode:
function SHFindComputer(pidlRoot: PItemIDList; pidlSaveFile: PItemIDList): boolean;
  stdcall; external 'Shell32.dllindex 91;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Computer arbeitsgruppen übergreifend suchen mit Win-Dial

  Alt 28. Apr 2005, 11:02
"Computer auswählen" trifft es wohl besser, was ich will.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 17:58 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