![]() |
Re: versteckte freigaben finden
Moin MacBones,
Rückgabewert ist das, was die Funktion zurückgibt ;-) Probier's mal so (auszugsweise):
Delphi-Quellcode:
var
dwResult : DWORD; dwResult := NetShareEnum('MACBONES',.....); if dwResult <> NERR_SUCCESS then begin ShowMessage(SysErrorMessage(dwResult)); end; |
Re: versteckte freigaben finden
Danke, habs probiert und dann schreibt er:
"Für das Unicode-Zeichen ist kein zugeordnetes Zeichen in der Mehrbytecodepage vorhanden" Muss ich da was konvertieren ('MACBONES') oder was soll das heißen ? |
Re: versteckte freigaben finden
Hab schon vieles versucht, aber ich weiß echt nicht weiter, kommt und sagt es mir, was ich da machen muss. Mich verwirrt das alles zuviel mit dem Unicode zeug.
|
Re: versteckte freigaben finden
Moin MacBones,
da ich so Dein Problem nicht reproduzieren kann, könnte es vielleicht helfen, wenn Du einmal genau schreibst, wie Du das Aufrufst, und wie die Deklarationen aussehen. |
Re: versteckte freigaben finden
Hab da halt die JEDI runtergeladen und eingebunden, hab ich hier irgendwo bei im Forum gefunden, als ich die Suche verwendet hab.
Also die auferufene Function lautet:
Delphi-Quellcode:
Der aufruf lautet wie folgt:
function NetShareEnum(servername: LPTSTR; level: DWORD; var butptr: Pointer;
prefmaxlen: DWORD; var entriesread: DWORD; var totalentries: DWORD; resume_handle: PDWORD): Integer; stdcall; external 'netapi32.dll';
Delphi-Quellcode:
Das wars im Prinzip.
procedure TForm1.Button1Click(Sender: TObject);
var shareBuffer: PSHARE_INFO_502; s2: TShareInfo502Array; dwRead, dwEntries: Cardinal; i: Integer; server: LPTSTR; begin listbox1.Clear; server:= nil; NetShareEnum(server, 502, Pointer(shareBuffer), DWORD(-1), dwRead, dwEntries, nil); s2 := TShareInfo502Array(shareBuffer); for i := 0 to dwRead - 1 do begin listbox1.Items.Add(s2[i].shi502_netname); end; end; |
Re: versteckte freigaben finden
Moin MacBones,
deklariere doch einmal die Variable Server als WideString und übergebe dass dann so @Server[1]. Das geht natürlich nur, wenn die Variable nicht leer ist. Den Sonderfall müsstest Du dann getrennt betrachten, oder mit PWideChar arbeiten. Im letzteren Falle könntest Du das so machen:
Delphi-Quellcode:
Das dürfte auch die flexiblere Variante sein, da Du auch einen Leerstring erfolgreich als eigenen Rechner einsetzen kannst.
var
pwcServer : PWideChar; sServer : string; // Soll hier nur als Beispiel für einen "normalen" string stehen dwLen : DWORD; begin sServer := 'MacBones'; dwLen := (length(sServer)+1) shl 2; // +1 für das abschliessende #00#00, mal 2 für 2 Byte je Zeichen GetMem(pwcServer,dwLen); // Platz reservieren try StringToWideChar(sServer,pwcServer,dwLen); if NetShareEnum(pwcServer,.....) <> NERR_SUCCESS then exit; try finally NetApiBufferFree(....); end; finally FreeMem(pwcServer,dwLen); // Platz wieder freigeben end; |
Re: versteckte freigaben finden
ok das funktioniert... aber nur wenn ich entweder meinen eigen PC reinschreibe oder gar keinen also ''. Nach wie vor zeigt der Code also nur meine eigenen freigaben an und nicht die meines 2. Rechners 'Pentium_III', oder kann Delphi mit solchen Netzwerknamen nichts anfangen ?
|
Re: versteckte freigaben finden
Moin MacBones,
wenn Du den Rechner so nennen kannst, sollte auch die API da mitspielen, es wäre in jedem Falle kein Delphi-Problem. Bekommst du, z.B., das Laufwerk C: als Exploreransicht angezeigt, wenn Du unter Start\Ausführen mal \\Pentium_III\C$ eingibst? |
Re: versteckte freigaben finden
verdammt, nein das geht nicht, da kommt son dialog wo man sich anmelden muss. wie kann ich das mit Delphi umgehen?
|
Re: versteckte freigaben finden
Moin MacBones,
wenn Du einen Account hast, mit dem Du auf den anderen Rechner zugreifen darfst, und der administrative Rechte auf dem anderen Rechner hat, solltest Du hier mal nach ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 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