Habe einen Plotter der die Parameter in der Registry gespeichert hat.
Nun möchte ich Werte aus der Registry auslesen und auch neuen Schlüssel schreiben.
Hab schon versucht eine dll zu schreiben bin aber bis jetzt immer gescheitert.
Berechnungen in einer dll Funktionieren Fehler frei nur bei String gibts immer Fehler.
Das einzige was mit Stringverarbeitung Funktioniert hat ist den Pfad auslesen und ausgeben.
Registry lesen & schreiben
Re: Registry lesen & schreiben
Hallo WB77,
Erstens: DLL-Fragen bitte in Unterforum 'Allgemeines'-'DLL-Programmierung'.
Zweitens:
Erstens: DLL-Fragen bitte in Unterforum 'Allgemeines'-'DLL-Programmierung'.
Zweitens:
deutsches Sprach, sweres Sprach ... ;-)wb77 hat geschrieben:Habe einen Plotter der die Parameter in der Registry gespeichert hat.[edit]verstehe nur Bahnhof?? So erklären, dass es alle verstehen.[/edit]
Nun möchte ich Werte aus der Registry auslesen und auch neuen Schlüssel schreiben.
Hab schon versucht eine dll zu schreiben, [edit]Programmiersprache??[/edit] bin aber bis jetzt immer gescheitert [edit]bisherigen code posten[/edit].
Berechnungen in einer dll funktionieren fehlerfrei, nur bei Strings gibt es immer Fehler.
Das Einzige was mit Stringverarbeitung funktioniert hat ist: den Pfad auslesen und ausgeben.
++++++
Gruss/regards IKT
Gruss/regards IKT
Re: Registry lesen & schreiben
Die DLL programmiere ich in C++ & in Freebasic beides als Anfänger.
Bei Freebasic gibts Problemme bei der Stringverarbeitung generell.
Bei C++ mache ich wahrscheinlich habe bei den Pointern einen Fehler.
Ein Beispiel wäre nicht schlecht das würde mir schon weiterhelfen. ( Ausgang $OUT = Festen String zugewiesen + Eingang $IN )
Zur Registry:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\plotter\STUDIO\SYSTEMPARAMETER]
"UseFontSelectedInEdit"=dword:00000000
"ZoomFontVectorial"=dword:0000000a
"LastPageSystemParameter"=dword:00000002
"LastFile"="H:\\Aufträge\\xxx\\Beschriftung\\yyy\\ve.pdb"
"DefTypePrint"=dword:00000000
[HKEY_CURRENT_USER\Software\plotter\STUDIO\SYSTEMPARAMETER\GridAspect]
"0"=dword:00000249
"1"=dword:00000294
"2"=dword:000007cb
vielleicht hat auch jemand schon ein solches Problem schon gelöst.
Einen Schlüssel auslesen und auch scheiben.
Schreiben habe ich bis jetzt immer per Batch ausgeführt, aber lesen z.B. "ZoomFontVectorial"=dword:0000000a ist der Wert 4 dann LED an oder "LastFile"="H:\\Aufträge\\xxx\\Beschriftung\\yyy\\ve.pdb" > "A" dann OK < "A" dann Fehler......
vielleicht hat ja jemand schon eine DLL dafür oder eine andere Lösung per Batch, Kommandozeile, Tool oder Ähnliches
Bei Freebasic gibts Problemme bei der Stringverarbeitung generell.
Bei C++ mache ich wahrscheinlich habe bei den Pointern einen Fehler.
Ein Beispiel wäre nicht schlecht das würde mir schon weiterhelfen. ( Ausgang $OUT = Festen String zugewiesen + Eingang $IN )
Zur Registry:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\plotter\STUDIO\SYSTEMPARAMETER]
"UseFontSelectedInEdit"=dword:00000000
"ZoomFontVectorial"=dword:0000000a
"LastPageSystemParameter"=dword:00000002
"LastFile"="H:\\Aufträge\\xxx\\Beschriftung\\yyy\\ve.pdb"
"DefTypePrint"=dword:00000000
[HKEY_CURRENT_USER\Software\plotter\STUDIO\SYSTEMPARAMETER\GridAspect]
"0"=dword:00000249
"1"=dword:00000294
"2"=dword:000007cb
vielleicht hat auch jemand schon ein solches Problem schon gelöst.
Einen Schlüssel auslesen und auch scheiben.
Schreiben habe ich bis jetzt immer per Batch ausgeführt, aber lesen z.B. "ZoomFontVectorial"=dword:0000000a ist der Wert 4 dann LED an oder "LastFile"="H:\\Aufträge\\xxx\\Beschriftung\\yyy\\ve.pdb" > "A" dann OK < "A" dann Fehler......
vielleicht hat ja jemand schon eine DLL dafür oder eine andere Lösung per Batch, Kommandozeile, Tool oder Ähnliches
Re: Registry lesen & schreiben
FreeBASIC als Anfänger = gute Wahlwb77 hat geschrieben:Die DLL programmiere ich in C++ & in Freebasic beides als Anfänger.
Bei Freebasic gibts Problemme bei der Stringverarbeitung generell.
C++ = keine so gute Wahl (aus zwei Gründen: - schwer leserlicher code - nur bedingt kompatibel mit FreeBASIC), wenn schon, dann C da dieses sehr gut mit FreeBASIC zusammenarbeitet (kompatibel ist).
Haste schon die neuste [edit]Ver.0.90.1[/edit] heruntergeladen?
Als IDE ist FBEdit (für Win) sehr zu empfehlen (richtige Entwicklungsumgebung). Beispiele für viele wiederkehrende Aufgaben etc. .
(FBIde wird seit längerem nicht mehr updated, ist sehr rudimentär, eigentlich eher ein besserer Editor.)
FreeBASIC Beispiel für PLE-DLL gibts hier im Forum: Auch die Stringverarbeitung funktioniert. BTW: es gibt generell 'KEINE' Probleme mit Strings in FB.
Zuletzt geändert von IKT am Donnerstag 25. Juli 2013, 11:17, insgesamt 1-mal geändert.
++++++
Gruss/regards IKT
Gruss/regards IKT
Re: Registry lesen & schreiben
Ich hab´s geschafft nachdem ich gelesen habe das PStrings für IN & OUT Speichert.
z.B.: PInput[1] >> PStrings[2] POutput[2]
Inhalt: (abc) >> (abc) (abc)
Nun habe ich zwei dll´s für Registry lesen & schreiben mit Freebasic geschrieben.
Das einzige was nicht Funktioniert ist das ich z.B.: HKEY_CURRENT_USER auch in PL auswählen kann.
Liegt aber auch zum teil daran das der Basic-Teil der Registry nicht von mir ist vielleicht hat dazu ja noch jemand einen Tipp.
z.B.: PInput[1] >> PStrings[2] POutput[2]
Inhalt: (abc) >> (abc) (abc)
Nun habe ich zwei dll´s für Registry lesen & schreiben mit Freebasic geschrieben.
Das einzige was nicht Funktioniert ist das ich z.B.: HKEY_CURRENT_USER auch in PL auswählen kann.
Liegt aber auch zum teil daran das der Basic-Teil der Registry nicht von mir ist vielleicht hat dazu ja noch jemand einen Tipp.
- Dateianhänge
-
- PL_Registry.zip
- (15.54 KiB) 303-mal heruntergeladen
Re: Registry lesen & schreiben
@wb77,
das Ganze ist IMHO* viel zu 'gross' für einen Anfänger, da es in höchstem Masse gefährlich ist, in der Registry 'herumzutoben'. Kann das ganze System unwiederbringlich zerstören!
Ich sage dies, da ich langjährige Erfahrung mit 'Windows' Systemen habe (als Domain- / Netzwerk- / Sicherheits-Administrator).
Dies ist nur ein Auszug ...
* = IMHO = in my humble opinion = meiner unmassgeblichen Meinung nach ...
das Ganze ist IMHO* viel zu 'gross' für einen Anfänger, da es in höchstem Masse gefährlich ist, in der Registry 'herumzutoben'. Kann das ganze System unwiederbringlich zerstören!
Ich sage dies, da ich langjährige Erfahrung mit 'Windows' Systemen habe (als Domain- / Netzwerk- / Sicherheits-Administrator).
Siehe Code unten (Erklärungen in engl.):wb77 hat geschrieben:Ich hab´s geschafft nachdem ich gelesen habe das PStrings für IN & OUT Speichert.
z.B.: PInput[1] >> PStrings[2] POutput[2]
Inhalt: (abc) >> (abc) (abc)
Nun habe ich zwei dll´s für Registry lesen & schreiben mit Freebasic geschrieben.
Das einzige was nicht Funktioniert ist das ich z.B.: HKEY_CURRENT_USER auch in PL auswählen kann.
Liegt aber auch zum teil daran das der Basic-Teil der Registry nicht von mir ist vielleicht hat dazu ja noch jemand einen Tipp.
Code: Alles auswählen
' :::::::::: DLL-START ::::::::::::: '
#INCLUDE "windows.bi"
#INCLUDE "vbcompat.bi" ' can be kicked out after converting everything to FB style code
#inclib "advapi32"
' ----- Microsoft Reference 'accessing registry' on the INET "http://support.microsoft.com/kb/145679" ----- '
'Public Const REG_SZ As Long = 1 ' in FB: instead of 'long' use 'Integer', both are I32 = 4Byte Int
'Public Const REG_DWORD As Long = 4
'
'Public Const HKEY_CLASSES_ROOT = &H80000000 '<-- defined in advapi32.dll
Public Const HKCR = HKEY_CLASSES_ROOT '<-- our shortcut definition, use that afterwards (in code)
'Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKCU = HKEY_CURRENT_USER
'Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKLM = HKEY_LOCAL_MACHINE
'Public Const HKEY_USERS = &H80000003
Public Const HKU = HKEY_USERS
' ===== Local Functions/Subs ===== '
Dim Shared As ZString * 1024 RegVal = "" ' not shure that this is big enough, in reference it says up to 2048 Byte???
'Dim Shared As HKEY root ' since I can't find a declaration for HKEY this seems to be useless
Dim Shared As ANY root ' undefined type variable
Function myRegGetStr(root As HKEY, sub_ As ZString ptr, name_ As ZString ptr, out_ As ZString ptr) as string
Dim As HKEY hKey_ ' probably has to be replaced by one of the above defined keys (e.g. HKCU, HKLM etc.)
Dim As Integer rc, KeyValType, KeyData ' long is C-language/VB for I32 = Integer in FreeBASIC
'RegVal="" --> not needed any longer because it is already initialised to ""
If RegOpenKeyEx(root, sub_, 0, KEY_READ, @hKey_) = ERROR_SUCCESS Then
Dim l As DWORD = 512
Dim t As DWORD
If RegQueryValueEx(hKey_, name_, NULL, @t, out_, @l) <> ERROR_SUCCESS Then Return ""
If t = REG_SZ Then
out_[512 - 1] = 0
end if
* = IMHO = in my humble opinion = meiner unmassgeblichen Meinung nach ...
++++++
Gruss/regards IKT
Gruss/regards IKT
Re: Registry lesen & schreiben
Hallo an alle,
weitere Infos und die entsprechenden Links unten:
weitere Infos und die entsprechenden Links unten:
Code: Alles auswählen
Registry:
---------
REG_SZ = either ZString or WString in FB (ZS = ANSI, WS = UniCode) depends on the Function used.
REG_DWORD = Integer (32-bit number - signed)
REG_QWORD = LongInt (64-bit number - signed)
Weitere Info:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb773476%28v=vs.85%29.aspx
Desktop Applications:
---------------------
HKEY = A handle to a Registry key. In WinDef.h as:
typedef HANDLE HKEY; (see below)
HANDLE = typedef PVOID HANDLE; (undefined(void) ptr type) = Any Ptr in FB
DWORD = UInteger (32-bit number - unsigned)
QWORD = ULongInt (64-bit number - unsigned)
Weitere Info:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx
ATTENTION:
==========
Please note the differences between Desktop Application / Registry types!
++++++
Gruss/regards IKT
Gruss/regards IKT