netzerkname von pc ermitteln
-
moin leute
ich versuche ein kleines programm in c++ zu schreiben welches mir unter anderem den namen eines pc ansagen soll.ich habs leider nur in delphi.
kann mir jemand helfen?
Source://ermitteln und anzeigen systeminformationen
procedure TForm2.FormActivate(Sender: TObject);
var u: array[0..20] of Char; sz:DWord;
begin
//eingeloggten user ermitteln
sz:=SizeOf(u);
GetUserName(u,sz); UserName := u;
//netzwerkname pc ermitteln
GetComputerName(u,sz); PCName := u;
//alles anzeigen
MsgEdit.EditLabel.Caption := UserName + '@' + PCName;
//Netzwerkpfad setzen
KlassName := 'Klasse1c';
nwPath := 's:\Halbzeit\' + KlassName + '\_PUBLIC_\';
//da s: nicht installiert ist, lieber einen relativen Pfad
//vom Projektverzeichnis nach _public_ anlegen
//pcname als dateinamen anhängen mit erweiterung '.html'
end;danke
-
Im WinAPI-Forum gab's darüber gerade n Thread. Guck da mal!
SOnst nutz mal einfach die Suchfunktion. Da findest du sicher was. Wie man Label und Co benutz steht in den FAQs!
-
wie man labels und co benutzt weis ich. ich weis nur net wie ich den oben gezeigten quelltext in c++ schreibe.
hast du einen vorschlag?
-
Hast du denn wenigstens mal versucht, den Code zu analysieren und herauszufinden, welches der entscheidende Teil sein könnte?
Wobei 'Analyse' noch übertrieben ist, schliesslich springt es einen ja fast an.Na, und wenn du den entsprechenden Teil identifiziert hast dann sind zuallererst die BCB-Hilfe und die Suchfunktion des Forums dein Freund.
-
Hallo PomBär,
ich möchte mich nicht mit fremden Federn schmücken weil ich glaube ich habe diese Lösung in den FAQs gefunden als ich vor dem gleichen Problem stand. Da steht schon recht viel drin.Evi48
// Bestimmen des Rechnernamen des lokalen Rechners AnsiString __fastcall TLANUDP::getLocalHostName(void) { TRegistry* Reg; AnsiString s; Reg = new TRegistry(); Reg->RootKey = HKEY_LOCAL_MACHINE; Reg->OpenKey("\\SYSTEM\\ControlSet001\\Services\\Tcpip\\Parameters", false); s = Reg->ReadString("Hostname"); // get lokalen Host-Namen delete Reg; return (s); }
-
Hallo,
ich bin mir sicher, dass es die eleganteste Lösung ist, wenn man den Namen mit folgender Funktion ermittelt
BOOL GetComputerName( LPTSTR lpBuffer, // address of name buffer LPDWORD nSize // address of size of name buffer );
Gruß Skay
-
Präzise so ist es. Und ich bin mir fast sicher, darauf hat Jansen auch angespielt (o:
-junix
-
hallo
danke für die vielen antworten.
leider komm ich immer noch nicht zurecht.ich habe:
void __fastcall TForm1::Label1Click(TObject *Sender) { BOOL GetComputerName( LPTSTR lpBuffer, // address of name buffer LPDWORD nSize // address of size of name buffer ); }
geschrieben, aber nichts ist passiert.
sollte:
.... address of name buffer LPDWORD nSize // address of size of name buffer );
eine bedeutung haben dann kann ich es leider nicht lesen bzw. darstellen.
habt ihr ne idee wie es doch noch hinbekomme?
-
Hallo,
könnte es sein, dass Du mit C++ keine Erfahrungen hast? Vielleicht solltest Du erstmal die Grundlagen lernen, trotzdem das Beispiel, um im Formular zwei Edit- Felder mit Nutzer- und Rechnername zu füllenSchöne Grüsse aus Berlin
Volker
void __fastcall TForm1::Button1Click(TObject *Sender) { char szUserName[256]; DWORD BuffSize = 255; // BuffSize beim Input maximale Anzahl von Stellen // BuffSize beim Output die tatsächliche Anzahl von Stellen // im Fehlerfall gibt die Funktion 0 zurück if(!GetUserName(szUserName, &BuffSize)) { ShowMessage("Fehler bei GetUserName"); Edit1->Text = "Fehler beim GetUserName"; } else Edit1->Text = szUserName; char szComputerName[MAX_COMPUTERNAME_LENGTH + 1]; BuffSize = MAX_COMPUTERNAME_LENGTH; if(!GetComputerName(szComputerName,&BuffSize)) { ShowMessage("Fehler bei GetComputerName"); Edit2->Text = "Fehler bei GetComputerName"; } else Edit2->Text = szComputerName; return; }