Hab was nettes gefunden und bereits verarbeitet.
Danke für die Hilfe
[Erledigt]
Hier der Code zum Erfolg:
ACHTUNG: Benötigt entsprechende decls für advapi32.dll
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN]
Const HKEY_CLASSES_ROOT = -2147483648 Const HKEY_CURRENT_USER = -2147483647 Const HKEY_LOCAL_MACHINE = -2147483646 Const HKEY_USERS = -2147483645
Const ERROR_SUCCESS = 0 Const ERROR_EOF = 259
Const REG_SZ = 1 Const REG_EXPAND_SZ = 2 Const REG_BINARY = 3 Const REG_DWORD = 4 Const REG_MULTI_SZ = 7
Global reg_lasterr = ERROR_SUCCESS
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
Local hKey = Reg_OpenKey(RegKey,SubKey$) If hKey<>-1
Repeat
PokeInt (typebank,0,0) PokeInt (valbanksize,0,100) PokeInt (keybanksize,0,100)
key$="" val$="" If RegEnumValue(hKey,nIdx,keybank,keybanksize,0,typebank,valbank,valbanksize)<>ERROR_EOF nType = PeekInt(typebank,0)
If cRetVal$<>"" cRetVal$ = cRetVal$+delim$ EndIf
For char = 0 To PeekInt (keybanksize,0)-1 If PeekByte (keybank,char)=0 Then Exit key$ = key$ + Chr(PeekByte(keybank,char)) Next Select nType
Case REG_SZ, REG_BINARY, REG_EXPAND_SZ
For char = 0 To PeekInt (valbanksize,0)-1 If PeekByte (valbank,char) = 0 Then Exit val$ = val$ + Chr(PeekByte (valbank,char)) Next
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
Function Reg_EnumKeys$(RegKey%,SubKey$,delim$="|") Local cRetVal$ = "" Local keybank = CreateBank(100) Local nIdx = 0
Local hKey=Reg_OpenKey(RegKey,SubKey$) If hKey <> -1 Repeat If RegEnumKey(hKey,nIdx,keybank,BankSize(keybank))<>ERROR_EOF
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
Function Reg_DeleteValue%(RegKey%,SubKey$,ValueName$) Local hKey = Reg_OpenKey(RegKey,SubKey$) Local lRetVal = False If hKey <> -1 Local nRslt = RegDeleteValue(hKey,ValueName$) If (nRslt = ERROR_SUCCESS) lRetVal = True Else reg_lasterr = nRslt EndIf Reg_CloseKey(hKey) EndIf Return lRetVal End Function
Function Reg_GetValue$(RegKey%,SubKey$,ValueName$,Dflt$="",types=False) Local cRetVal$ = Dflt$ Local hKey = Reg_OpenKey(RegKey,SubKey$) Local char = 0 Local nType = 0
If hKey<>-1 Local valbank = CreateBank(100) Local valbanksize = CreateBank(4) Local typebank = CreateBank(4)
PokeInt (typebank,0,0) PokeInt (valbanksize,0,100) Local nRslt = RegQueryValueEx(hKey,ValueName$,0,typebank,valbank,valbanksize) If nRslt = ERROR_SUCCESS cRetVal$ = "" nType = PeekInt(typebank,0)
Select nType
Case REG_SZ, REG_BINARY, REG_EXPAND_SZ
For char = 0 To PeekInt (valbanksize,0)-1 If PeekByte (valbank,char) = 0 Then Exit cRetVal$ = cRetVal$ + Chr(PeekByte(valbank,char)) Next
Case REG_DWORD cRetVal$ = PeekInt(valbank,0) End Select
If types Then cRetVal$ = nType + ";" + cRetVal$ Else reg_lasterr = nRslt EndIf Reg_CloseKey(hKey) EndIf Return cRetVal$ End Function
Function Reg_SetValue%(RegKey%,SubKey$,ValueName$,Value$,nType=REG_SZ) Local hKey = Reg_OpenKey(RegKey,SubKey$) Local lRetVal = False If hKey <> -1 Local valbank
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 = 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
Function Reg_DeleteKey%(RegKey%,KeyName$) reg_lasterr=ERROR_SUCCESS Local nRslt=RegDeleteKey(RegKey,KeyName$) If nRslt<>ERROR_SUCCESS reg_lasterr=nRslt EndIf Return (nRslt=ERROR_SUCCESS) End Function
Function Reg_CreateKey%(RegKey%,KeyName$) reg_lasterr = ERROR_SUCCESS Local regbank = CreateBank(4) Local hKey = -1 Local nRslt = RegCreateKey (RegKey%,KeyName$,regbank) If nRslt = ERROR_SUCCESS hKey = PeekInt(regbank,0) Else reg_lasterr = nRslt EndIf FreeBank regbank Return hKey End Function
Function Reg_OpenKey%(RegKey%,KeyName$) reg_lasterr = ERROR_SUCCESS Local regbank = CreateBank(4) Local hKey = -1 Local nRslt = RegOpenKey(RegKey%,KeyName$,regbank) If nRslt = ERROR_SUCCESS hKey=PeekInt(regbank,0) Else reg_lasterr=nRslt EndIf FreeBank regbank Return hKey End Function
Function Reg_CloseKey%(RegKey%) reg_lasterr = ERROR_SUCCESS Local nRslt = RegCloseKey(RegKey) If nRslt <> ERROR_SUCCESS Then reg_lasterr=nRslt Return (nRslt = ERROR_SUCCESS) End Function
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 Reg_GetOSLanguage$() key$ = "Control Panel\International" KeyHandle = Reg_OpenKey(HKEY_CURRENT_USER,key$) If KeyHandle <> -1 Then
value$ = Reg_GetValue(HKEY_CURRENT_USER,key$,"sLanguage") Reg_CloseKey(KeyHandle) Else
value$ = "Unknown" End If Return value$ End Function
Function Reg_GetOSVersion$() key$ = "SOFTWARE\Microsoft\Windows NT\CurrentVersion" KeyHandle% = Reg_OpenKey(HKEY_LOCAL_MACHINE,key$) If KeyHandle <> -1 Then
value$ = Reg_GetValue(HKEY_LOCAL_MACHINE,key$,"ProductName") Reg_CloseKey(KeyHandle) Else
value$ = "Unknown" EndIf Return value$ End Function
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
DECLS:
Code: [AUSKLAPPEN] [EINKLAPPEN]
.lib "Advapi32.dll"
RegOpenKeyEx%(hKeyParent%,SubKey$,reserved,samdesired,phkResult*):"RegOpenKeyExA"
RegOpenKey%(hKeyParent%,SubKey$,phkResult*):"RegOpenKeyA"
RegCloseKey%(hKey%):"RegCloseKey"
RegFlushKey%(hKey%):"RegFlushKey"
RegCreateKey%(hKeyParent%,SubKey$,phkResult*):"RegCreateKeyA"
RegDeleteKey%(hKeyParent%,SubKey$):"RegDeleteKeyA"
RegSetValueEx%(hKey%,ValueName$,Reserved%,nType%,Bytes*,size%):"RegSetValueExA"
RegDeleteValue%(hKey%,ValueName$):"RegDeleteValueA"
RegEnumKey%(hKey%,idx%,Key*,size%):"RegEnumKeyA"
RegEnumValue%(hKey%,idx%,ValueName*,NameSize*,Reserved%,nType*,ValueBytes*,ValueSize*):"RegEnumValueA"
RegQueryValueEx%(hKey%,ValueName$,Reserved%,nType*,ValueBytes*,ValueSize*):"RegQueryValueExA"
|