Ga naar inhoud

[Delphi 6] Computernaam ?


Aanbevolen berichten

[quote:b4d3d7c5c7="whmeeske"]Binnen een Delphi programma zou ik graag de computernaam presenteren. Weet iemand hoe ik binnen Delphi de computernaam kan vaststellen?[/quote:b4d3d7c5c7] Van alle ranzige code op Google vond ik deze er het beste uit zien. Klein beetje aangepast... [code:1:b4d3d7c5c7] function GetThisComputerName: string; var size : DWORD; namereg : TRegistry; begin //trying the API Result := ''; size := 0; GetComputerName(nil, size); if size > 0 then begin SetLength(Result, size - 1); //size includes terminating #0 GetComputerName(PChar(Result), size); end //trying the registry else begin namereg := TRegistry.Create; try namereg.RootKey := HKEY_LOCAL_MACHINE; namereg.OpenKey('\system\CurrentControlSet\Control\ComputerName\ComputerName',False); Result := namereg.ReadString('ComputerName'); finally namereg.Free; end; end; if Result = '' then begin Result := 'unknown'; end; end; [/code:1:b4d3d7c5c7] Bron: [url=http://users.telenet.be/edockx/delphi/code.html]http://users.telenet.be/edockx/delphi/code.html[/url]
Link naar reactie
Ach meeske, Als je goed kijkt naar de code die er wat 'ingewikkeld' uitziet, zie je dat er wel 2 methoden worden gegeven. Dat betekent dus dat je waarschijnlijk met de helft toe kan. Bovendien is de code compleet. Wil je ter lering ende vermaeck eens de VB6 code geven, zodat we allemaal de vergelijking kunnen maken? Vergeet dan niet de regels met Sub en End Sub mee te nemen. Ik ben benieuwd of je dan nog steeds 1 of 2 regels nodig hebt. Ga de uitdaging aan! Groet, Maarten.
Link naar reactie
Hier in Delphi is het dus net zo 'eenvoudig', kwestie van onderstaande regel uit je register te lezen.[code:1:0bdbe1efb2]\system\CurrentControlSet\Control\ComputerName\ComputerName[/code:1:0bdbe1efb2]Maar om die actie uit te voeren moet je dus ff wat dingen doen. SwissDelphiCenter zegt er trouwens iets anders over : [code:1:0bdbe1efb2]function GetComputerName: string; var buffer: array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char; Size: Cardinal; begin Size := MAX_COMPUTERNAME_LENGTH + 1; Windows.GetComputerName(@buffer, Size); Result := StrPas(buffer); end;[/code:1:0bdbe1efb2][code:1:0bdbe1efb2]procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetComputerName); end;[/code:1:0bdbe1efb2][code:1:0bdbe1efb2]function SetComputerName(AComputerName: string): Boolean; var ComputerName: array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char; Size: Cardinal; begin StrPCopy(ComputerName, AComputerName); Result := Windows.SetComputerName(ComputerName); end;[/code:1:0bdbe1efb2][code:1:0bdbe1efb2]procedure TForm1.Button2Click(Sender: TObject); begin if SetComputerName('NewComputerName') then ShowMessage('Computer Name Reset Setting will be used at next startup.') else ShowMessage('Computer Name Not Reset'); end;[/code:1:0bdbe1efb2]
Link naar reactie
[quote:925686ea70="MaartenW"]Wil je ter lering ende vermaeck eens de VB6 code geven, zodat we allemaal de vergelijking kunnen maken? Vergeet dan niet de regels met Sub en End Sub mee te nemen. Ik ben benieuwd of je dan nog steeds 1 of 2 regels nodig hebt.[/quote:925686ea70] De VB-functie Environ("COMPUTERNAME") (of %COMPUTERNAME%) geeft direct een string terug.
Link naar reactie
Die die op zijn beurt waarschijnlijk weer uit het register leest of aan Windows vraagt, alleen jij ziet de code niet, je kan hier ook een function van maken, dan hoef je ook alleen MyString := GetComputerName; te gebruiken. [color=blue:b0e54ea248][edit][/color:b0e54ea248]Ik zie dat dat is wat ik eerder al gepost had hehe.[color=blue:b0e54ea248][/edit][/color:b0e54ea248]
Link naar reactie
[quote:90ab18138d="whmeeske"][quote:90ab18138d="MaartenW"]Wil je ter lering ende vermaeck eens de VB6 code geven, zodat we allemaal de vergelijking kunnen maken? Vergeet dan niet de regels met Sub en End Sub mee te nemen. Ik ben benieuwd of je dan nog steeds 1 of 2 regels nodig hebt.[/quote:90ab18138d] De VB-functie Environ("COMPUTERNAME") (of %COMPUTERNAME%) geeft direct een string terug.[/quote:90ab18138d] Deze geeft geen resultaat terug onder Windows 95, 98, ME, (NT) en lager! En bovendien is deze methode niet betrouwbaar. Minder code wil niet altijd zeggen dat het beter is. [code:1:90ab18138d] C:\> C:\>SET ALLUSERSPROFILE=C:\Documents and Settings\All Users APPDATA=C:\Documents and Settings\H4xX0r\Application Data CommonProgramFiles=C:\Program Files\Common Files COMPUTERNAME=PC-001 ComSpec=C:\WINNT\system32\cmd.exe HOMEDRIVE=C: HOMEPATH=\ JAVA_HOME=C:\Program Files\Java\jdk1.5.0\ LOGONSERVER=\\PC-001 NUMBER_OF_PROCESSORS=4 OS=Windows_NT Os2LibPath=C:\WINNT\system32\os2\dll; Path=C:\WINNT\system32;C:\WINNT; PATHEXT=.COM;.EXE;.BAT;.CMD PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 9, GenuineIntel PROCESSOR_LEVEL=15 PROCESSOR_REVISION=0209 ProgramFiles=C:\Program Files PROMPT=$P$G SystemDrive=C: SystemRoot=C:\WINNT TEMP=C:\DOCUME~1\H4xX0r\LOCALS~1\Temp TMP=C:\DOCUME~1\H4xX0r\LOCALS~1\Temp USERDOMAIN=PC-001 USERNAME=H4xX0r USERPROFILE=C:\Documents and Settings\H4xX0r windir=C:\WINNT C:\>SET COMPUTERNAME=fake_name C:\>Applicatie.exe [/code:1:90ab18138d] En je Applicatie.exe laat vrolijk [color=blue:90ab18138d]fake_name[/color:90ab18138d] als computernaam zien. Overigens is dit het equivalent van Delphi: [code:1:90ab18138d] SysUtils.GetEnvironmentVariable('COMPUTERNAME'); [/code:1:90ab18138d] [URL=http://qc.borland.com/wc/qcmain.aspx?d=4319]GetEnvironmentVariable fails for missing variables on Windows Server 2003[/url] [url=http://kennethhunt.com/archives/000933.html]Environment variables Windows 2000/XP[/url]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...