Public Function GetSetting_Reg(ByVal Section As String, ByVal Key As String, Optional ByVal DefaultValue As String = "0") As String
Dim r As New cRegistry Dim c As New cRegistry Dim w As Long 'On Error Resume Next
w = Val(DefaultValue) With r .ClassKey = HKEY_CURRENT_USER .SectionKey = regPath & Section .ValueType = REG_DWORD 'kun tal eller booleans (oversat til 0 og 1) .ValueKey = Key .Default = w GetSetting_Reg = .Value End With
With c .ClassKey = HKEY_LOCAL_MACHINE .SectionKey = regPath & Section .ValueType = REG_DWORD .ValueKey = Key .Default = w 'GetSetting_Reg = .Value End With End Function
Jeg fandt nedenstående på spm. 188516 svaret af driis :
Public Declare Function GetComputerName Lib "kernel32.dll" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Dim buf As String Dim Ans As Long
Public Function CompName() As String buf = Space(255) Ans = GetComputerName(buf, 255) CompName = Left(buf, InStr(1, buf, vbNullChar) - 1) End Function
Public Function UserName() As String buf = Space(255) Ans = GetUserName(buf, 255) UserName = Left(buf, InStr(1, buf, vbNullChar) - 1)
MsgBox UserName
End Function
og det virker. Jeg kunne ikke få jeres til at virke, men jeg er også nybegynder :-). Burde jeg ikke få fat i ham og tildele ham de 150 points ?
'Du opretter et modul (hvis du ikke allerede har et) 'i dit projekt og indsætter følgende øverst i modulet: '-----------------------------------
Public Const HKEY_CLASSES_ROOT = &H80000000 Public Const HKEY_CURRENT_USER = &H80000001 Public Const HKEY_LOCAL_MACHINE = &H80000002 Public Const HKEY_USERS = &H80000003 Public Const ERROR_SUCCESS = 0&
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal HKEY As Long) As Long Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal HKEY As Long, ByVal lpSubKey As String, phkResult As Long) As Long Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal HKEY As Long, ByVal lpSubKey As String) As Long Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal HKEY As Long, ByVal lpValueName As String) As Long Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal HKEY As Long, ByVal lpSubKey As String, phkResult As Long) As Long Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal HKEY As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal HKEY As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Const REG_SZ = 1 ' Unicode nul terminated string Public Const REG_DWORD = 4 ' 32-bit number
'----------------------------------- 'Herefter indsætter du følgende nederst i modulet: '-----------------------------------
Public Function GetString(HKEY As Long, strPath As String, strValue As String) Dim keyhand As Long Dim datatype As Long Dim lResult As Long Dim strBuf As String Dim lDataBufSize As Long Dim intZeroPos As Integer r = RegOpenKey(HKEY, strPath, keyhand) lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)
If lValueType = REG_SZ Then strBuf = String(lDataBufSize, " ") lResult = RegQueryValueEx(keyhand, strValue, 0&, 0&, ByVal strBuf, lDataBufSize)
If lResult = ERROR_SUCCESS Then intZeroPos = InStr(strBuf, Chr$(0))
If intZeroPos > 0 Then GetString = Left$(strBuf, intZeroPos - 1) Else GetString = strBuf End If End If End If End Function
'----------------------------------------- 'Herunder er et eksempel på hvordan man kan 'kalde funktionen ovenfor. I eksemplet kaldes 'den ved et tryk på en knap ved navn Command1: '-----------------------------------------
Private Sub Command1_Click
'Koden:
t = GetString(HKEY_CURRENT_USER, "Control Panel/Colors", "ButtonFace") MsgBox t
End Sub
'------------------------- 'Husk at ændre i eksemplet ovenfor, så det 'passer til dine behov.
Public Function gstrGetLoggedInUser() Dim sBuff As String * 25 Dim lRet As Long: Dim char_zero Dim sUserName As String: Dim GetLoggedInUser As String 'Get the user name, remove NULLs, and trim trailing spaces. lRet = GetUserName(sBuff, 25) sUserName = Trim$(Left(sBuff, InStr(sBuff, Chr(char_zero)) - 1)) 'Return empty if no name is returned. If sUserName = vbNullString Then GetLoggedInUser = "" gstrGetLoggedInUser = sUserName End Function
Du skal bruge denne til ovenstående: Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _ (ByVal lpBuffer As String, nSize As Long) As Long
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.