anoniem Geplaatst: 25 maart 2005 Delen Geplaatst: 25 maart 2005 Binnen een Delphi programma zou ik graag de computernaam presenteren. Weet iemand hoe ik binnen Delphi de computernaam kan vaststellen? Quote Link naar reactie
anoniem Geplaatst: 26 maart 2005 Auteur Delen Geplaatst: 26 maart 2005 [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] Quote Link naar reactie
anoniem Geplaatst: 27 maart 2005 Auteur Delen Geplaatst: 27 maart 2005 OK, bedankt voor de reactie. T'is wel een hoop ingewikkelde code om iets simpels als een computernaam te bepalen. Ik doe ook wel eens iets met VB6, dan heb je aan 1 of 2 simpele regels code genoeg. Quote Link naar reactie
anoniem Geplaatst: 1 april 2005 Auteur Delen Geplaatst: 1 april 2005 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. Quote Link naar reactie
anoniem Geplaatst: 1 april 2005 Auteur Delen Geplaatst: 1 april 2005 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] Quote Link naar reactie
anoniem Geplaatst: 2 april 2005 Auteur Delen Geplaatst: 2 april 2005 [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. Quote Link naar reactie
anoniem Geplaatst: 2 april 2005 Auteur Delen Geplaatst: 2 april 2005 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] Quote Link naar reactie
anoniem Geplaatst: 3 april 2005 Auteur Delen Geplaatst: 3 april 2005 [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] Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen