11. februar 2005 - 09:47Der er
8 kommentarer og 1 løsning
Hente værdi fra registreringsdatabasen
Hej
Jeg kender Getsetting og savesetting, men har brug for en metode der kan hente en værdi fra en vilkårlig placering i registreringsdatabasen. Konkret så vil jeg gerne finde den nøjagtige placering af Outlook.exe på en brugers harddisk. Den nøgle der kan hjælpe mig ligger på hkey_classes_root\applications\outlook.exe\shell\open\command i en nøgle der hedder command. Det er i dette tilfælde den nøgles værdi jeg vil hente ind i mit program, men det må meget gerne være helt dynamisk.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Jeg har en masse kode, som kan aflæse registreringsdatabasen. Men hvorfor skal du bruge stin til Outlook.exe? Hvis du bare vil starte Outlook, kan du gøre det med ShellExecute:
nej, ShellExecute er ikke en standard-funktion (selvom den bruges ofte). Funktionen er genial, da du kan åbne alle filer, blot de er assosieret med et program i Windows - f.eks. .doc, xls, mdb, bmp, mpg, pdf,....U name it.
Læg denne kode i et modul, hvorefter det vil virke:
Private Declare Function apiShellExecute Lib "Shell32.dll" _ Alias "ShellExecuteA" _ (ByVal hWnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) _ As Long
'***App Window Constants*** Public Const WIN_NORMAL = 1 'Open Normal Public Const WIN_MAX = 3 'Open Maximized Public Const WIN_MIN = 2 'Open Minimized
Public Function ShellExecute(stFile As String, lShowHow As Long) Dim lRet As Long, varTaskID As Variant Dim stRet As String 'First try ShellExecute lRet = apiShellExecute(hWndAccessApp, vbNullString, _ stFile, vbNullString, vbNullString, lShowHow)
If lRet > ERROR_SUCCESS Then stRet = vbNullString lRet = -1 Else Select Case lRet Case ERROR_NO_ASSOC: 'Try the OpenWith dialog varTaskID = Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " _ & stFile, WIN_NORMAL) lRet = (varTaskID <> 0) Case ERROR_OUT_OF_MEM: stRet = "Error: Out of Memory/Resources. Couldn't Execute!" Case ERROR_FILE_NOT_FOUND: stRet = "Error: File not found. Couldn't Execute!" Case ERROR_PATH_NOT_FOUND: stRet = "Error: Path not found. Couldn't Execute!" Case ERROR_BAD_FORMAT: stRet = "Error: Bad File Format. Couldn't Execute!" Case Else: End Select End If ShellExecute = lRet & _ IIf(stRet = "", vbNullString, ", " & stRet) End Function
Denne placeres i et modul: Public Declare Function ShellExecute Lib "shell32.dll" _ Alias "ShellExecuteA" ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long
Herefter lægger du denne kode på f.eks. en knap: Call ShellExecute(Me.hwnd, vbNullString, "Outlook.exe", vbNullString, vbNullString, vbNormalFocus)
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.