Code: Select all
sRemMachName.s = ""
lTopLevelKey.l = #HKEY_CURRENT_USER
sKeyName.s = "Software\Microsoft\Windows\CurrentVersion\Explorer"
sValueName.s = "EnableAutoTray"
Procedure.l QueryValueEx(lhkey.l, szValueName.s)
Shared vValue.s
cch = 255
sValue.s = Space(255)
lrc = RegQueryValueEx_(lhkey, szValueName, 0, @lType, 0, @cch)
Select lType
Case #REG_DWORD
lrc = RegQueryValueEx_(lhkey, szValueName, 0, @lType, @lValue, @cch)
If lrc = 0
vValue = Str(lValue)
EndIf
Default
lrc = -1
EndSelect
ProcedureReturn lrc
EndProcedure
Procedure SetValue(lTopLevelKey.l, sKeyName.s, sValueName.s, vValue.s, lType.l, sRemMachName.s)
If sRemMachName.s = ""
GetHandle = RegOpenKeyEx_(lTopLevelKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
Else
lReturnCode = RegConnectRegistry_(ComputerName, lTopLevelKey, @lhRemoteRegistry)
GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
EndIf
If GetHandle = #ERROR_SUCCESS
Select lType
Case #REG_SZ
GetHandle = RegSetValueEx_(hkey, sValueName, 0, #REG_SZ, @vValue, Len(vValue) + 1)
Case #REG_DWORD
lValue = Val(vValue)
GetHandle = RegSetValueEx_(hKey, sValueName, 0, #REG_DWORD, @lValue, 4)
EndSelect
RegCloseKey_(hkey)
SetValue = 1
Else
RegCloseKey_(hKey)
SetValue = 0
EndIf
ProcedureReturn SetValue
EndProcedure
lRetVal = RegConnectRegistry_(sRemMachName, lTopLevelKey.l, @lHKeyhandle)
lRetVal = RegOpenKeyEx_(lHKeyhandle, sKeyName, 0, #KEY_ALL_ACCESS, @lhkey)
lRetVal = QueryValueEx(lhkey, sValueName)
RegCloseKey_(lhkey)
If Val(vValue) = 0
SetValue(lTopLevelKey, sKeyName, sValueName.s, "01", #REG_DWORD, "")
Else
SetValue(lTopLevelKey, sKeyName, sValueName.s, "00", #REG_DWORD, "")
EndIf
Procedure PPid(Process$)
Protected PE.PROCESSENTRY32, hTH.i
hLib = OpenLibrary(#PB_Any,"kernel32.dll")
If hLib
pCreateToolhelp32Snapshot = GetFunction(hLib,"CreateToolhelp32Snapshot")
pProcess32First = GetFunction(hLib,"Process32First")
pProcess32Next = GetFunction(hLib,"Process32Next")
Else
ProcedureReturn 0
EndIf
PE\dwSize = SizeOf(PROCESSENTRY32)
hTH = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0)
Process32First_(hTH, @PE)
PName$ = Space(#MAX_PATH)
CopyMemory(@PE\szExeFile,@PName$,#MAX_PATH)
If UCase(PName$) = UCase(Process$)
ProcedureReturn PE\th32ProcessID
EndIf
While Process32Next_(hTH, @PE) > 0
PName$ = Space(#MAX_PATH)
CopyMemory(@PE\szExeFile,@PName$,#MAX_PATH)
If UCase(PName$) = UCase(Process$)
ProcedureReturn PE\th32ProcessID
EndIf
Wend
CloseLibrary(hLib)
ProcedureReturn 0
EndProcedure
ProcessID = PPid("explorer.exe")
Process = OpenProcess_(#PROCESS_ALL_ACCESS, 0, ProcessID)
ReturnValue = TerminateProcess_(Process, 0)