Registry allgemeine Frage
-
- Beiträge: 9
- Registriert: Fr 19. Aug 2011, 08:08
- OS, Lazarus, FPC: Windows XP/7 (Lazarus 0.9.30 FPC 2.2.z)
- CPU-Target: 32/64Bit
Registry allgemeine Frage
Hallo,
wenn ich für ein Programm ein paar Daten in eine Konfigurationsdatei schreiben möchte kann ich ja mit "GetAppConfigDir(True)" den Dateinamen incl. Verzeichnis ermitteln. Jetzt zu meiner Frage wenn ich diese Daten aber in die Registry schreiben möchte gibt es da eine vergleichbare Funktion?
wenn ich für ein Programm ein paar Daten in eine Konfigurationsdatei schreiben möchte kann ich ja mit "GetAppConfigDir(True)" den Dateinamen incl. Verzeichnis ermitteln. Jetzt zu meiner Frage wenn ich diese Daten aber in die Registry schreiben möchte gibt es da eine vergleichbare Funktion?
ciao
Martin
Martin
Re: Registry allgemeine Frage
Besteht keine Notwendigkeit, da der Pfad in der Registry nicht durch den User variable ist.
Der Pfad HKEY_CURRENT_USER weist immer auf den aktuellen User.
Der Pfad HKEY_CURRENT_USER weist immer auf den aktuellen User.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Registry allgemeine Frage
Ich glaub er hat nur nach der benutzung der registry gefragt.
Dabei muss dir klar sein das es eine registry nur unter windows gibt.
Und es gibt eine unit registry, in der zugriffsfunktinen dazu enthalten sind. Man findet bestimmt auch sehr schnell ein delphi tutorial zu dem thema.
Dabei muss dir klar sein das es eine registry nur unter windows gibt.
Und es gibt eine unit registry, in der zugriffsfunktinen dazu enthalten sind. Man findet bestimmt auch sehr schnell ein delphi tutorial zu dem thema.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 9
- Registriert: Fr 19. Aug 2011, 08:08
- OS, Lazarus, FPC: Windows XP/7 (Lazarus 0.9.30 FPC 2.2.z)
- CPU-Target: 32/64Bit
Re: Registry allgemeine Frage
Hallo,
Hier:
http://www.delphi-treff.de/tutorials/vc ... speichert/" onclick="window.open(this.href);return false;
wird ja beschrieben welches Schlüssel (Verzeichnis) man nehmen soll. Aber was ich meine, für die INI-Variante liefert mir die Funktion "GetAppConfigDir(True)" das Verzeichnis gibt es für die Registry eine Funtion, die mir diesen Schnlüssen "HKEY_LOCAL_MACHINE\Software\<Firma>\<Produkt>\<Version>" natürlich mit den entsprechenden Werten liefert?
Hier:
http://www.delphi-treff.de/tutorials/vc ... speichert/" onclick="window.open(this.href);return false;
wird ja beschrieben welches Schlüssel (Verzeichnis) man nehmen soll. Aber was ich meine, für die INI-Variante liefert mir die Funktion "GetAppConfigDir(True)" das Verzeichnis gibt es für die Registry eine Funtion, die mir diesen Schnlüssen "HKEY_LOCAL_MACHINE\Software\<Firma>\<Produkt>\<Version>" natürlich mit den entsprechenden Werten liefert?
ciao
Martin
Martin
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Registry allgemeine Frage
ich glaub,
da musst du mit der unit regestry erst den schlussen
HKEY_LOCAL_MACHINE nehmen
Dann von ihm sein Child "Software" nehmen
Dann davon "<Firma>"
usw...
vom letzten kannst du dann die werte lesen.
Aber dazu gibt es auch Delphi tutorials geben...
da musst du mit der unit regestry erst den schlussen
HKEY_LOCAL_MACHINE nehmen
Dann von ihm sein Child "Software" nehmen
Dann davon "<Firma>"
usw...
vom letzten kannst du dann die werte lesen.
Aber dazu gibt es auch Delphi tutorials geben...
Code: Alles auswählen
Signatur := nil;
Re: Registry allgemeine Frage
Nein, den musst du dir selbst zusammensetzen.gibt es für die Registry eine Funtion, die mir diesen Schnlüssen "HKEY_LOCAL_MACHINE\Software\<Firma>\<Produkt>\<Version>" natürlich mit den entsprechenden Werten liefert?
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Registry allgemeine Frage
Die für Anwendungen interessanten Hive Keys (kurz HKEY, Wurzelverzeichnisse in der Registry) sind HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE. Was den Pfad /Software/ angeht, sind beide gleich aufgebaut, jedoch ist HKEY_CURRENT_USER Einstellungen nur für den aktuellen Benutzer und HKEY_LOCAL_MACHINE für den gesamten Computer. Der Zugriff auf Letzteren benötigt unter Umständen (neue Windows-Versionen) Administratorrechte. Überlege dir daher genau, ob deine Anwendung dort Einstellungen ablegen muss, oder ob dies in einem Installer ausreicht (lesender Zugriff benötigt keine besonderen Rechte).
Unter Linux wird der Zugriff auf die Registry in Dateien umgeleitet, sofern du die entsprechende Klasse (TRegistry) und nicht direkt die Windows-API verwendest. Der Quelltext kann also dort problemlos übersetzt und eingesetzt werden.
Unter Linux wird der Zugriff auf die Registry in Dateien umgeleitet, sofern du die entsprechende Klasse (TRegistry) und nicht direkt die Windows-API verwendest. Der Quelltext kann also dort problemlos übersetzt und eingesetzt werden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 351
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Registry allgemeine Frage
Hallo,
ich schließe mich mit meiner Frage mal diesem Thread an.
Kann ich über die Registry herausbekommen welches Programm gerade aktiv ist?
Meine Programme haben einen Bezug über die COM-Schnittstelle zu DesignCAD. Um sich mit dem Programm verbinden zu können muß einfach in eine kleine Textdatei die Versionsnummer eingetragen werden. Das macht man einmal und gut ist.
Alternativ könnte man die Versionsnummer aus der Registry auslesen. Jetzt gibt es aber Nutzer die haben verschiedene Versionen von DesignCAD installiert und auch noch gleichzeitig geöffnet. Meinetwegen die Versionen 23, 24, 25. Dann muß man sich entscheiden welche Nummer in die Textdatei soll.
Die Auswahl soll im Hintergrund vorgenommen werden. Der Nutzer soll davon nix mitbekommen. Das "Makro", so nenne ich denn dann mal mein Programm, soll sich mit der Programmversion verbinden aus der heraus es gestartet wurde.
Die Makros werden in Toolboxen abgelegt. Die Tooolboxen sind an den Rändern der Zeichenfläche angeordnet. D.h. der Klick auf das Toolbox-Icon zum Start des Makros bedingt, dass ein Zeichenfenster geöffnet ist.
Kann man aus der Registry ermitteln welche Programmversion geöffnet ist um im zweiten Schritt die Versionsnummer auszulesen und an GetActiveOleObject zu übergeben?
Ich habe hier http://www.gekko-software.nl/Delphi/art13.htm was ähnliches gefunden. Geht es einfacher?
Vielen Dank
Volker
ich schließe mich mit meiner Frage mal diesem Thread an.
Kann ich über die Registry herausbekommen welches Programm gerade aktiv ist?
Meine Programme haben einen Bezug über die COM-Schnittstelle zu DesignCAD. Um sich mit dem Programm verbinden zu können muß einfach in eine kleine Textdatei die Versionsnummer eingetragen werden. Das macht man einmal und gut ist.
Code: Alles auswählen
procedure VerbindeDcad();
var Version: String; VersNr: Integer;
Datei: Text;
begin
try
assign(Datei, 'DCVersion.txt');
reset(Datei);
read(Datei, VersNr);
close(Datei);
Version := Sysutils.Trim('DesignCAD_24_0_TLB.Application.'+IntToStr(VersNr));
DcApp := GetActiveOleObject(Version) as IDcadApp;
DcDocs := DcApp.Documents;
DcDoc := DcApp.ActiveDocument;
DcPts := DcDoc.CmdPoints;
DcCurve := DcDoc.Curve;
DcLine := DcDoc.Line;
DcLayers:= DcDoc.Layers;
DcFile:= DcDoc.File_;
DcSel:= DcDoc.Selection;
except
on e: Exception do begin
//ShowMessage('Programmstart ohne DesignCAD');
OleFehler:=True;
Exit;
end;
end;
end;
Die Auswahl soll im Hintergrund vorgenommen werden. Der Nutzer soll davon nix mitbekommen. Das "Makro", so nenne ich denn dann mal mein Programm, soll sich mit der Programmversion verbinden aus der heraus es gestartet wurde.
Die Makros werden in Toolboxen abgelegt. Die Tooolboxen sind an den Rändern der Zeichenfläche angeordnet. D.h. der Klick auf das Toolbox-Icon zum Start des Makros bedingt, dass ein Zeichenfenster geöffnet ist.
Kann man aus der Registry ermitteln welche Programmversion geöffnet ist um im zweiten Schritt die Versionsnummer auszulesen und an GetActiveOleObject zu übergeben?
Ich habe hier http://www.gekko-software.nl/Delphi/art13.htm was ähnliches gefunden. Geht es einfacher?
Vielen Dank
Volker
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Registry allgemeine Frage
Du fragst in einem 9 Jahre alten Thread, es wäre besser gewesen einen neuen Thread zu beginnen.
Die Registry hat keine Informationen wer gerade aktiv ist. Also entweder du findest heraus wer dein Parent ist oder fragst das System welche Prozesse/Programme aktiv sind und wertest diese Infos aus.
Edit:
Da gibt es Beispiel für Windows https://www.delphipraxis.net/166644-pid ... tteln.html das lässt sich sicher auf fpc umschreiben.
Die Registry hat keine Informationen wer gerade aktiv ist. Also entweder du findest heraus wer dein Parent ist oder fragst das System welche Prozesse/Programme aktiv sind und wertest diese Infos aus.
Edit:
Da gibt es Beispiel für Windows https://www.delphipraxis.net/166644-pid ... tteln.html das lässt sich sicher auf fpc umschreiben.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).