123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
- <!--
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- -->
- <script:module xmlns:script="http://openoffice.org/2000/script" script:name="API" script:language="StarBasic">Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
- (ByVal hKey As Long, _
- ByVal lpSubKey As String, _
- ByVal ulOptions As Long, _
- ByVal samDesired As Long, _
- phkResult As Long) As Long
- Declare Function RegQueryValueExString Lib "advapi32.dll" Alias "RegQueryValueExA" _
- (ByVal hKey As Long, _
- ByVal lpValueName As String, _
- ByVal lpReserved As Long, _
- lpType As Long, _
- lpData As String, _
- lpcbData As Long) As Long
- Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias "RegQueryValueExA" _
- (ByVal hKey As Long, _
- ByVal lpValueName As String, _
- ByVal lpReserved As Long, _
- lpType As Long, _
- lpData As Long, _
- lpcbData As Long) As Long
- Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias "RegQueryValueExA" _
- (ByVal hKey As Long, _
- ByVal lpValueName As String, _
- ByVal lpReserved As Long, _
- lpType As Long, _
- ByVal lpData As Long, _
- lpcbData As Long) As Long
- Declare Function RegCloseKeyA Lib "advapi32.dll" Alias "RegCloseKey" _
- (ByVal hKey As Long) As Long
- 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 KEY_ALL_ACCESS = &H3F
- Public Const REG_OPTION_NON_VOLATILE = 0
- Public Const REG_SZ As Long = 1
- Public Const REG_DWORD As Long = 4
- Public Const ERROR_NONE = 0
- Public Const ERROR_BADDB = 1
- Public Const ERROR_BADKEY = 2
- Public Const ERROR_CANTOPEN = 3
- Public Const ERROR_CANTREAD = 4
- Public Const ERROR_CANTWRITE = 5
- Public Const ERROR_OUTOFMEMORY = 6
- Public Const ERROR_INVALID_PARAMETER = 7
- Public Const ERROR_ACCESS_DENIED = 8
- Public Const ERROR_INVALID_PARAMETERS = 87
- Public Const ERROR_NO_MORE_ITEMS = 259
- 'Public Const KEY_READ = &H20019
- Function OpenRegKey(lBaseKey As Long, sKeyName As String) As Variant
- Dim LocKeyValue
- Dim hKey as Long
- Dim lRetValue as Long
- lRetValue = RegOpenKeyEx(lBaseKey, sKeyName, 0, KEY_ALL_ACCESS, hKey)
- ' lRetValue = QueryValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Outlook Express\5.0\Default Settings", "Revocation Checking")
- If hKey <> 0 Then
- RegCloseKeyA (hKey)
- End If
- OpenRegKey() = lRetValue
- End Function
- Function GetDefaultPath(CurOffice as Integer) As String
- Dim sPath as String
- Dim Index as Integer
- Select Case Wizardmode
- Case SBMICROSOFTMODE
- Index = Applications(CurOffice,SBAPPLKEY)
- If GetGUIType = 1 Then ' Windows
- sPath = QueryValue(HKEY_LOCAL_MACHINE, sKeyName(Index), sValueName(Index))
- Else
- sPath = ""
- End If
- If sPath = "" Then
- sPath = SOWorkPath
- End If
- GetDefaultPath = sPath
- End Select
- End Function
- Function GetTemplateDefaultPath(Index as Integer) As String
- Dim sLocTemplatePath as String
- Dim sLocProgrampath as String
- Dim Progstring as String
- Dim PathList()as String
- Dim Maxindex as Integer
- Dim OldsLocTemplatePath
- Dim sTemplateKeyName as String
- Dim sTemplateValueName as String
- On Local Error Goto NOVAlIDSYSTEMPATH
- Select Case WizardMode
- Case SBMICROSOFTMODE
- If GetGUIType = 1 Then ' Windows
- ' Template directory of Office 97
- sTemplateKeyName = "Software\Microsoft\Office\8.0\Common\FileNew\LocalTemplates"
- sTemplateValueName = ""
- sLocTemplatePath = QueryValue(HKEY_LOCAL_MACHINE, sTemplateKeyName, sTemplateValueName)
- If sLocTemplatePath = "" Then
- ' Retrieve the template directory of Office 2000
- ' Unfortunately there is no existing note about the template directory in
- ' the whole registry.
- ' Programdirectory of Office 2000
- sTemplateKeyName = "Software\Microsoft\Office\9.0\Common\InstallRoot"
- sTemplateValueName = "Path"
- sLocProgrampath = QueryValue(HKEY_LOCAL_MACHINE, sTemplateKeyName, sTemplateValueName)
- If sLocProgrampath <> "" Then
- If Right(sLocProgrampath, 1) <> "\" Then
- sLocProgrampath = sLocProgrampath & "\"
- End If
- PathList() = ArrayoutofString(sLocProgrampath,"\",Maxindex)
- Progstring = "\" & PathList(Maxindex-1) & "\"
- OldsLocTemplatePath = DeleteStr(sLocProgramPath,Progstring)
- sLocTemplatePath = OldsLocTemplatePath & "\" & "Templates"
- ' Does this subdirectory "templates" exist at all
- If oUcb.Exists(sLocTemplatePath) Then
- ' If Not the main directory of the office is the base
- sLocTemplatePath = OldsLocTemplatePath
- End If
- Else
- sLocTemplatePath = SOWorkPath
- End If
- End If
- GetTemplateDefaultPath = ConvertToUrl(sLocTemplatePath)
- Else
- GetTemplateDefaultPath = SOWorkPath
- End If
- End Select
- NOVALIDSYSTEMPATH:
- If Err <> 0 Then
- GetTemplateDefaultPath() = SOWorkPath
- Resume ONITGOES
- ONITGOES:
- End If
- End Function
- Function QueryValueEx(ByVal lhKey, ByVal szValueName As String, vValue As String) As Long
- Dim cch As Long
- Dim lrc As Long
- Dim lType As Long
- Dim lValue As Long
- Dim sValue As String
- Dim Empty
- On Error GoTo QueryValueExError
- lrc = RegQueryValueExNULL(lhKey, szValueName, 0&, lType, 0&, cch)
- If lrc <> ERROR_NONE Then Error 5
- Select Case lType
- Case REG_SZ:
- sValue = String(cch, 0)
- lrc = RegQueryValueExString(lhKey, szValueName, 0&, lType, sValue, cch)
- If lrc = ERROR_NONE Then
- vValue = Left$(sValue, cch)
- Else
- vValue = Empty
- End If
- Case REG_DWORD:
- lrc = RegQueryValueExLong(lhKey, szValueName, 0&, lType, lValue, cch)
- If lrc = ERROR_NONE Then
- vValue = lValue
- End If
- Case Else
- lrc = -1
- End Select
- QueryValueExExit:
- QueryValueEx = lrc
- Exit Function
- QueryValueExError:
- Resume QueryValueExExit
- End Function
- Function QueryValue(BaseKey As Long, sKeyName As String, sValueName As String) As Variant
- Dim lRetVal As Long ' Returnvalue API-Call
- Dim hKey As Long ' One key handle
- Dim vValue As String ' Key value
- lRetVal = RegOpenKeyEx(BaseKey, sKeyName, 0, KEY_ALL_ACCESS, hKey)
- lRetVal = QueryValueEx(hKey, sValueName, vValue)
- RegCloseKeyA (hKey)
- QueryValue = vValue
- End Function
- </script:module>
|