Registry

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

TheRealSephiroth

Betreff: Registry

BeitragMi, Nov 16, 2005 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
wie kann ich mit blitz3d auf die registry zugreifen??
also eigene reg-einträge schreiben ?

danke im vorraus

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragMi, Nov 16, 2005 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich sag nur suche! Rolling Eyes

http://www.blitzbasic.com/tool...hp?tool=99
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium
 

Moses

BeitragDo, Nov 17, 2005 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
argh! bitte keine blöden registry einträge für mini-programme um irgendwelche settings zu spiechern, das kommt gleich nach einen installer für nen 3mb projekt beizulegen ... ich will meinen pc clean halten und nicht zumüllen!

TheRealSephiroth

BeitragDo, Nov 17, 2005 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ne is klar is ja auch nicht für mich sondern für einen kumpel der ein vielversprechendes projekt macht

gibst außer deinem(Blitzmaker) link noch andere, bessere möglichkeiten/tutorials

Markus2

BeitragDi, Nov 22, 2005 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich finde INI Dateien viel besser (und im Programm Verzeichnis!)
Findest du bestimmt was im Code Archiv .

x-pressive

BeitragDi, Nov 22, 2005 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
*greift in die Schatzkiste* - Hier die Registry-Library, die ich mir im Laufe der Zeit zusammengebastelt habe (bisher allerdings nur unter BlitzPlus benutzt):

Benötigt Datei "advapi32.decls":

Code: [AUSKLAPPEN]

.lib "Advapi32.dll"

ADVAPI32_RegOpenKey%(hKeyParent%,SubKey$,phkResult*):"RegOpenKeyA"
ADVAPI32_RegCloseKey%(hKey%):"RegCloseKey"
ADVAPI32_RegFlushKey%(hKey%):"RegFlushKey"
ADVAPI32_RegCreateKey%(hKeyParent%,SubKey$,phkResult*):"RegCreateKeyA"
ADVAPI32_RegDeleteKey%(hKeyParent%,SubKey$):"RegDeleteKeyA"
ADVAPI32_RegSetValueEx%(hKey%,ValueName$,Reserved%,nType%,Bytes*,size%):"RegSetValueExA"
ADVAPI32_RegDeleteValue%(hKey%,ValueName$):"RegDeleteValueA"
ADVAPI32_RegEnumKey%(hKey%,idx%,Key*,size%):"RegEnumKeyA"
ADVAPI32_RegEnumValue%(hKey%,idx%,ValueName*,NameSize*,Reserved%,nType*,ValueBytes*,ValueSize*):"RegEnumValueA"
ADVAPI32_RegQueryValueEx%(hKey%,ValueName$,Reserved%,nType*,ValueBytes*,ValueSize*):"RegQueryValueExA"



Die eigentliche Lib mit sehr nützlichen Registry-Funktionen:

BlitzBasic: [AUSKLAPPEN]


;---------------------------------------------------
; REQUIRES ADVAPI32.DECLS
;---------------------------------------------------


; REGISTRY ROOTS
Const HKEY_CLASSES_ROOT = -2147483648
Const HKEY_CURRENT_USER = -2147483647
Const HKEY_LOCAL_MACHINE = -2147483646
Const HKEY_USERS = -2147483645

; RETURN VALUE CONSTANTS
Const ERROR_SUCCESS = 0
Const ERROR_EOF = 259 ; NO MORE ENTRIES IN KEY

; DATA TYPES FOR KEYS
Const REG_SZ = 1 ; DATA STRING
Const REG_EXPAND_SZ = 2
Const REG_BINARY = 3 ; BINARY DATA IN ANY FORM.
Const REG_DWORD = 4 ; A 32-BIT NUMBER.
Const REG_MULTI_SZ = 7

; GLOBAL VAR HOLDING LAST ERROR #
Global reg_lasterr = ERROR_SUCCESS


;---------------------------------------------------
; ENUMERATES THE KEYS CONTAINED IN THE PASSED SUBKEY
; AND RETURNS THEM AS A DELIMITED STRING IN THE FORMAT:
; KEY=VALUE|KEY=VALUE|KEY=VALUE
;---------------------------------------------------
Function Reg_EnumValues$(RegKey%,SubKey$,delim$=\"|\",types=False)

Local cRetVal$ = \"\",key$=\"\",val$=\"\"
Local keybank = CreateBank(100),keybanksize=CreateBank(4),valbank=CreateBank(100),valbanksize=CreateBank(4),typebank=CreateBank(4)
Local char = 0
Local nIdx = 0
Local nType = 0

; OPEN THE KEY
Local hKey = Reg_OpenKey(RegKey,SubKey$)
If hKey<>-1
; READ IN THE VALUES
Repeat
; INIT THE BANKS
PokeInt (typebank,0,0)
PokeInt (valbanksize,0,100)
PokeInt (keybanksize,0,100)

; CLEAR OUT THE TEMP VALUES
key$=\"\"
val$=\"\"

If ADVAPI32_RegEnumValue(hKey,nIdx,keybank,keybanksize,0,typebank,valbank,valbanksize)<>ERROR_EOF
nType = PeekInt(typebank,0)

; TACK ON THE DELIMITER
If cRetVal$<>\"\"
cRetVal$ = cRetVal$+delim$
EndIf

; BUILD THE KEY NAME
For char = 0 To PeekInt (keybanksize,0)-1
If PeekByte (keybank,char)=0 Then Exit
key$ = key$ + Chr(PeekByte(keybank,char))
Next

Select nType
; READ IN A STRING OR BINARY VALUE
Case REG_SZ, REG_BINARY, REG_EXPAND_SZ
; BUILD THE VALUE
For char = 0 To PeekInt (valbanksize,0)-1
If PeekByte (valbank,char) = 0 Then Exit
val$ = val$ + Chr(PeekByte (valbank,char))
Next
; READ IN AN INTEGER
Case REG_DWORD
val$ = PeekInt(valbank,0)
End Select

If types
cRetVal$ = (cRetVal$+PeekInt(typebank,0)+\";\"+key$+\"=\"+val$)
Else
cRetVal$ = (cRetVal$+key$+\"=\"+val$)
EndIf
Else
Exit
EndIf

nIdx=nIdx+1
Forever
Reg_CloseKey(hKey)
EndIf

FreeBank typebank
FreeBank valbank
FreeBank valbanksize
FreeBank keybank
FreeBank keybanksize

Return cRetVal$

End Function


;---------------------------------------------------
; ENUMERATES THE KEYS CONTAINED IN THE PASSED SUBKEY
; AND RETURNS THEM AS A DELIMITED STRING IN THE FORMAT:
; KEY|KEY|KEY
;---------------------------------------------------
Function Reg_EnumKeys$(RegKey%,SubKey$,delim$=\"|\")

Local cRetVal$ = \"\"
Local keybank = CreateBank(100)
Local nIdx = 0

; OPEN THE KEY FIRST
Local hKey=Reg_OpenKey(RegKey,SubKey$)
If hKey <> -1
Repeat
If ADVAPI32_RegEnumKey(hKey,nIdx,keybank,BankSize(keybank))<>ERROR_EOF
; TACK ON THE DELIMITER
If cRetVal$ <> \"\"
cRetVal$=cRetVal$+delim$
EndIf

For char = 0 To BankSize (keybank)-1
If PeekByte (keybank,char)=0 Then Exit
cRetVal$ = cRetVal$ + Chr(PeekByte (keybank,char))
Next
Else
Exit
EndIf

nIdx = nIdx + 1
Forever
Reg_CloseKey(hKey)
EndIf

FreeBank keybank
Return cRetVal$

End Function


;---------------------------------------------------
; DELETES A VALUE FROM THE REGISTRY. RETURNS TRUE/FALSE.
;---------------------------------------------------
Function Reg_DeleteValue%(RegKey%,SubKey$,ValueName$)

Local hKey = Reg_OpenKey(RegKey,SubKey$)
Local lRetVal = False
If hKey <> -1
Local nRslt = ADVAPI32_RegDeleteValue(hKey,ValueName$)
If (nRslt = ERROR_SUCCESS)
lRetVal = True
Else
reg_lasterr = nRslt
EndIf
Reg_CloseKey(hKey)
EndIf
Return lRetVal

End Function


;---------------------------------------------------
; GETS A VALUE FROM THE REGISTRY AND RETURNS IT AS A STRING.
; WILL RETURN THE PASSED DEFAULT IF THE VALUE REQUESTED IS
; NOT FOUND IN THE REGISTRY.
;---------------------------------------------------
Function Reg_GetValue$(RegKey%,SubKey$,ValueName$,Dflt$=\"\",types=False)

Local cRetVal$ = Dflt$
Local hKey = Reg_OpenKey(RegKey,SubKey$)
Local char = 0
Local nType = 0

; OPEN THE KEY
If hKey<>-1
Local valbank = CreateBank(100)
Local valbanksize = CreateBank(4)
Local typebank = CreateBank(4)

; INIT THE BANKS
PokeInt (typebank,0,0)
PokeInt (valbanksize,0,100)

Local nRslt = ADVAPI32_RegQueryValueEx(hKey,ValueName$,0,typebank,valbank,valbanksize)

If nRslt = ERROR_SUCCESS
cRetVal$ = \"\"
nType = PeekInt(typebank,0)

; BUILD THE VALUE
Select nType
; READ IN A STRING OR BINARY VALUE
Case REG_SZ, REG_BINARY, REG_EXPAND_SZ
; BUILD THE VALUE
For char = 0 To PeekInt (valbanksize,0)-1
If PeekByte (valbank,char) = 0 Then Exit
cRetVal$ = cRetVal$ + Chr(PeekByte(valbank,char))
Next
; READ IN AN INTEGER
Case REG_DWORD
cRetVal$ = PeekInt(valbank,0)
End Select

; TACK ON THE TYPE IF REQUESTED
If types Then cRetVal$ = nType + \";\" + cRetVal$
Else
reg_lasterr = nRslt
EndIf
Reg_CloseKey(hKey)
EndIf

Return cRetVal$

End Function


;---------------------------------------------------
; SETS A VALUE IN THE REGISTRY. DEFAULTS TO TYPE STRING,
; BUT CAN PASS REG_DWORD AND REG_BINARY. RETURNS TRUE/FALSE.
;---------------------------------------------------
Function Reg_SetValue%(RegKey%,SubKey$,ValueName$,Value$,nType=REG_SZ)

Local hKey = Reg_OpenKey(RegKey,SubKey$)
Local lRetVal = False
If hKey <> -1
Local valbank

; CREATE A BANK TO HOLD THE INFO
Select nType
Case REG_SZ, REG_BINARY, REG_EXPAND_SZ
valbank = CreateBank(Len(Value$))
For i = 1 To Len(Value$)
PokeByte(valbank,i-1,Asc(Mid(Value$,i,1)))
Next
Case REG_DWORD
valbank = CreateBank(4)
PokeInt (valbank,0,Int(Value$))
End Select

Local nRslt = ADVAPI32_RegSetValueEx(hKey,ValueName$,0,nType,valbank,BankSize(valbank))

If nRslt = ERROR_SUCCESS
lRetVal = True
Else
reg_lasterr = nRslt
EndIf

Reg_CloseKey(hKey)
EndIf

Return lRetVal

End Function


;---------------------------------------------------
; DELETES THE PASSED KEY FROM THE REGISTRY. RETURNS TRUE/FALSE.
;---------------------------------------------------
Function Reg_DeleteKey%(RegKey%,KeyName$)
reg_lasterr=ERROR_SUCCESS
Local nRslt=ADVAPI32_RegDeleteKey(RegKey,KeyName$)

If nRslt<>ERROR_SUCCESS
reg_lasterr=nRslt
EndIf

Return (nRslt=ERROR_SUCCESS)
End Function


;---------------------------------------------------
; RETURNS THE REGISTRY HANDLE OR -1 IF FAILED.
;---------------------------------------------------
Function Reg_CreateKey%(RegKey%,KeyName$)

reg_lasterr = ERROR_SUCCESS
Local regbank = CreateBank(4)
Local hKey = -1

Local nRslt = ADVAPI32_RegCreateKey (RegKey%,KeyName$,regbank)

If nRslt = ERROR_SUCCESS
hKey = PeekInt(regbank,0)
Else
reg_lasterr = nRslt
EndIf

FreeBank regbank

Return hKey

End Function


;---------------------------------------------------
; RETURNS THE REGISTRY HANDLE OR -1 IF FAILED
;---------------------------------------------------
Function Reg_OpenKey%(RegKey%,KeyName$)

reg_lasterr = ERROR_SUCCESS
Local regbank = CreateBank(4)
Local hKey = -1

Local nRslt = ADVAPI32_RegOpenKey(RegKey%,KeyName$,regbank)

If nRslt = ERROR_SUCCESS
hKey=PeekInt(regbank,0)
Else
reg_lasterr=nRslt
EndIf

FreeBank regbank

Return hKey

End Function


;---------------------------------------------------
; CLOSES THE REGISTRY KEY. RETURNS TRUE/FALSE.
;---------------------------------------------------
Function Reg_CloseKey%(RegKey%)

reg_lasterr = ERROR_SUCCESS
Local nRslt = ADVAPI32_RegCloseKey(RegKey)

If nRslt <> ERROR_SUCCESS Then reg_lasterr=nRslt

Return (nRslt = ERROR_SUCCESS)

End Function


;---------------------------------------------------
; RETURNS TRUE IF THE KEY EXISTS
;---------------------------------------------------
Function Reg_IsKey%(RegKey%,KeyName$)

Local hKey = Reg_OpenKey(RegKey,KeyName$)
Local lRetVal = False

If hKey<>-1 Then Reg_CloseKey(hKey) : lRetVal = True

Return lRetVal

End Function



;---------------------------------------------------




;---------------------------------------------------
; FUNCTION: RETURNS OS LANGUAGE
;---------------------------------------------------
Function Reg_GetOSLanguage$()

key$ = \"Control Panel\International\"

KeyHandle = Reg_OpenKey(HKEY_CURRENT_USER,key$)
If KeyHandle <> -1 Then
;GERMAN = \"DEU\"
value$ = Reg_GetValue(HKEY_CURRENT_USER,key$,\"sLanguage\")
Reg_CloseKey(KeyHandle)
Else
; DID NOT FIND - FAIL SILENTLY
value$ = \"Unknown\"
End If

Return value$

End Function


;---------------------------------------------------
; FUNCTION: RETURNS OS VERSION
;---------------------------------------------------
Function Reg_GetOSVersion$()

key$ = \"SOFTWARE\Microsoft\Windows NT\CurrentVersion\"

KeyHandle% = Reg_OpenKey(HKEY_LOCAL_MACHINE,key$)
If KeyHandle <> -1 Then
;WIN XP = \"Microsoft Windows XP\"
value$ = Reg_GetValue(HKEY_LOCAL_MACHINE,key$,\"ProductName\")
Reg_CloseKey(KeyHandle)
Else
; DID NOT FIND - FAIL SILENTLY
value$ = \"Unknown\"
EndIf

Return value$

End Function


;---------------------------------------------------
; FUNCTION: REGISTERS A FILE EXTENSION TO THE .EXE
;---------------------------------------------------
Function Reg_RegisterFileType(extension$,exeName$)

If Mid(extension$,1,1) <> \".\" Then extension$ = \".\" + extension$

extension$ = Lower(extension$)

typeName$ = Right(extension$,3) + \"file\"

If Right(exeName$,4) <> \".exe\" Then exeName$ = exeName$ + \".exe\"

KeyHandle% = Reg_CreateKey (HKEY_CLASSES_ROOT,extension$)
If KeyHandle <> -1 Then
Reg_SetValue (HKEY_CLASSES_ROOT,extension$,\"\",typeName$,REG_SZ)

Reg_CloseKey(KeyHandle)
End If

KeyHandle% = Reg_CreateKey (HKEY_CLASSES_ROOT,typeName + \"\shell\open\command\" )
If KeyHandle <> -1 Then
Reg_SetValue (HKEY_CLASSES_ROOT,typeName + \"\shell\open\command\",\"\",Chr(34) + CurrentDir() + exeName$ + Chr(34) + \" %1\",REG_SZ)
Reg_CloseKey(KeyHandle)
End If

KeyHandle% = Reg_CreateKey (HKEY_CLASSES_ROOT,typeName + \"\DefaultIcon\" )
If KeyHandle <> -1 Then
Reg_SetValue (HKEY_CLASSES_ROOT,typeName + \"\DefaultIcon\",\"\",Chr(34) + CurrentDir() + exeName$ + Chr(34) + \",0\",REG_SZ)
Reg_CloseKey(KeyHandle)
End If

End Function
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Markus2

BeitragDi, Nov 22, 2005 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
@x-pressive
und wo prüfst du die Zugriffsrechte ?

x-pressive

BeitragMi, Nov 23, 2005 1:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Für meine Zwecke hat es bisher völlig gereicht. Im Admin-Account funzt das problemlos, wie sich das unter anderen Accounts verhält, müsste man halt mal testen. Zur Not den User halt darauf hinweisen, daß man zur Installation des Programms Administratorenrechte benötigt, dann kann man wichtige Schlüssel beim ersten Start setzen.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Sereyanne

BeitragSo, Jun 06, 2010 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
*Thread ausgrab*

Der angegebene Code, bzw. die dll, scheint bei neueren Systemen nicht mehr zu funktionieren. Es wird ein Wert von -1654 MHz angezeigt! Wie kann denn mein Rechner mit einem Minuswert laufen?? Außerdem sollten es 2,64 GHz sein! Ist auch nur eine Single Core CPU, also wo liegt das Problem?

Vielleicht wäre ja jemand so nett, die dll anzupassen????
Würde mich echt riesig freuen!
LG,
Sereyanne

Markus2

BeitragMo, Jun 07, 2010 0:30
Antworten mit Zitat
Benutzer-Profile anzeigen
@Sereyanne
nenn mal den Schlüssel den du lesen möchtest .

Bestimmt diese hier oder ?
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0
~MHz
DWORD
Da steht bei mir in Dezimal 2199 drin , sollte also kein Problem sein .

Die Advapi32.dll wird keiner ändern können .
Und die Beschreibung wurde dazu nur für BlitzBasic gemacht
damit du die Funktionen dieser DLL da nutzen kannst .
Ich denke Du nutzt die Beispiel Funktion die oben genannt ist oder ?

Nicdel

BeitragMo, Jun 07, 2010 6:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert auf Win 7 ohne Probleme, sogar 64 Bit.
Code: [AUSKLAPPEN]
RuntimeError Reg_GetValue(HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System\CentralProcessor\0","~MHz")
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Sereyanne

BeitragMi, Jun 09, 2010 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
....sorry, ich glaub ich das hier zur falschen dll gepostet, das war irgendne andere, die nicht ging....

Mit dieser dll hier hab ich das Problem, dass ich durch den ellenlangen Code nicht durchblicke. Einfach ausführen bringt ja nix. Wo genau wird da jetzt die CPU-Geschwindigkeit ausgelesen?

ozzi789

BeitragMi, Jun 09, 2010 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist nur ne Funktionssamlung.
RuntimeError Reg_GetValue(HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System\CentralProcessor\0","~MHz")

Hier wird es ausgelsesen, Get Value , hole Wert, von HKEY_usw.
Must den Code nicht wirklich durchblicken, nur anwenden können Wink

mfg ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Sereyanne

BeitragDo, Jun 10, 2010 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt weiß ich endlich, was ich damit soll! Ich hab die Zeile im code gesucht, aber die steht da ja gar nicht drin. Grade eben bin ich auf die Idee gekommen, die mal selber da rein zu kopieren... Embarassed
Okay, vielen Dank, jetzt komm ich klar!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group