概要
プリンタードライバー 「Adobe PDF」 の印刷設定の内容を取得します。内容は「Adobe PDF」に関係するレジストリの情報の一部です。
「Adobe PDF」プリンタードライバーを使ってPDFファイルとして印刷したい時が有ります。この時に「Adobe PDF 保存先フォルダー」で保存先フォルダーが指定されていないと実行時に保存先フォルダを尋ねるダイアログボックス画面が表示されてしまいます。また「結果の Adobe PDF を表示」がチェックされてると印刷後のPDFファイルがデスクトップに表示されます。
この情報を事前にこの関数から取得します。
機能
- 「Adobe PDF」プリンタードライバーの印刷設定のレジストリ情報を取得します。
- 取得できる内容は「Adobe PDF 設定」タブの以下の情報です。
- PDF 設定
- Adobe PDF セキュリティ
- Adobe PDF 保存先フォルダー
- 結果の Adobe PDF を表示
- 文書情報を追加
- システムのフォントのみ使用し、文書のフォントを使用しない
- 成功したジョブのログファイルを削除
- 既存の PDF ファイルの上書きを確認
「Adobe PDF のページサイズ」情報は取得が出来ませんでした。
形式
001 Boolean = nnn2GetPdfPrinterSetting() As Boolean
引数
無し。
但し、結果がプライベートな構造体「TYPE_AdobePDFSetting」にセットされます。
001 ' 関数の戻り値:レジストリの値
002 Private Type TYPE_AdobePDFSetting
003 ConversionSettings As String 'PDF 設定
004 SecurityOption As Long 'Adobe PDF セキュリティ
005 PromptForFileName As String 'Adobe PDF 保存先フォルダー
006 AdobePDFOutputFolder As String '保存先のフォルダー名
007 ViewPrintOutput As Long '結果の Adobe PDF を表示
008 AddDocInfo As Long '文書情報を追加
009 DistillerHostFontHasMostFonts As Long 'システムのフォントのみ使用し、文書のフォントを使用しない
010 DeleteLogFiles As Long '成功したジョブのログを削除
011 AskToReplacePDF As Long '既存の PDF ファイルの上書きを確認
012 End Type
013 Private AdobePDFSetting As TYPE_AdobePDFSetting
戻り値
- True:エラー無し
- False:実行エラー
サンプル
「Adobe PDF」プリンタードライバーの印刷設定の内容を取得します。
参照設定:[Microsoft WMI Scripting V*.* Library]
Download:sample-GetPdfPrinterSetting.xls
001 Option Explicit
002
003 ' 関数の戻り値:レジストリの値
004 Private Type TYPE_ADOBEPDFSETTING
005 ConversionSettings As String 'PDF 設定
006 SecurityOption As Long 'Adobe PDF セキュリティ
007 PromptForFileName As String 'Adobe PDF 保存先フォルダー
008 AdobePDFOutputFolder As String '保存先のフォルダー名
009 ViewPrintOutput As Long '結果の Adobe PDF を表示
010 AddDocInfo As Long '文書情報を追加
011 DistillerHostFontHasMostFonts As Long 'システムのフォントのみ使用し、文書のフォントを使用しない
012 DeleteLogFiles As Long '成功したジョブのログを削除
013 AskToReplacePDF As Long '既存の PDF ファイルの上書きを確認
014 End Type
015 Private AdobePDFSetting As TYPE_ADOBEPDFSETTING
016
017 ' レジストリのデータの種類
018 Private Enum RegType
019 TypeSTRING = 0 '文字列値
020 TypeDWORD = 1 'DWORD値
021 ' TypeBYTE = 1 'バイナリ値 ※未使用
022 End Enum
023
024 'Private Const HKEY_CLASSES_ROOT = &H80000000
025 Private Const HKEY_CURRENT_USER = &H80000001
026 Private Const HKEY_LOCAL_MACHINE = &H80000002
027 'Private Const HKEY_USERS = &H80000003
028 'Private Const HKEY_CURRENT_CONFIG = &H80000005
029 'Private Const HKEY_DYN_DATA = &H80000006
030
031
032 '=========================================================
033 '
034 ' TEST MAIN
035 '
036 '=========================================================
037
038 Sub Test_Main()
039 Dim bRet As Boolean
040 Dim sRet As String
041
042 bRet = nnn2GetPdfPrinterSetting()
043
044 Debug.Print "nnn2GetPdfPrinterSetting = " & bRet
045
046 Select Case AdobePDFSetting.ConversionSettings
047 Case "Standard": sRet = "標準"
048 Case "PDFA1b 2005 CMYK": sRet = "PDF/A-1b:2005 (CMYK)"
049 Case "PDFA1b 2005 RGB": sRet = "PDF/A-1b:2005 (RGB)"
050 Case "PDFX1a 2001": sRet = "PDF/X-1a:2001"
051 Case "PDFX1a 2001 JPN": sRet = "PDF/X-1a:2001 (日本)"
052 Case "PDFX3 2002 JPN": sRet = "PDF/X-3 2002 (日本)"
053 Case "PDFX3 2002": sRet = "PDF/X-3:2002"
054 Case "Oversized Pages": sRet = "オーバーサイズページ"
055 Case "Press Quality": sRet = "プレス品質"
056 Case "High Quality Print": sRet = "高品質印刷"
057 Case "Smallest File Size": sRet = "最小ファイルサイズ"
058 Case "MAGAZINE Ad 2006 JPN": sRet = "雑誌広告送稿用"
059 Case Else: sRet = ""
060 End Select
061 Debug.Print "PDF 設定 = " & sRet
062
063 Select Case AdobePDFSetting.SecurityOption
064 Case 0: sRet = "なし"
065 Case 1: sRet = "各ジョブごとにセキュリティを確認"
066 Case 2: sRet = "前回のセキュリティ設定を使用"
067 Case Else: sRet = ""
068 End Select
069 Debug.Print "Adobe PDF セキュリティ = " & sRet
070
071 Select Case AdobePDFSetting.PromptForFileName
072 Case 1: sRet = "Adobe PDF の保存先を確認"
073 Case 0: sRet = "★保存先フォルダの指定有り★"
074 Case Else: sRet = ""
075 End Select
076 Debug.Print "Adobe PDF 保存先フォルダー = " & sRet
077 With AdobePDFSetting
078 If .PromptForFileName = 0 Then
079 Debug.Print "実際の'保存先フォルダー' = " & .AdobePDFOutputFolder
080 End If
081 End With
082
083 Select Case AdobePDFSetting.ViewPrintOutput
084 Case 1: sRet = "チェック・オン"
085 Case 0: sRet = "チェック・オフ"
086 Case Else: sRet = ""
087 End Select
088 Debug.Print "結果のAdobe PDFを表示 = " & sRet
089
090 Select Case AdobePDFSetting.AddDocInfo
091 Case 1: sRet = "チェック・オン"
092 Case 0: sRet = "チェック・オフ"
093 Case Else: sRet = ""
094 End Select
095 Debug.Print "文書情報を追加 = " & sRet
096
097 Select Case AdobePDFSetting.DistillerHostFontHasMostFonts
098 Case 1: sRet = "チェック・オン"
099 Case 0: sRet = "チェック・オフ"
100 Case Else: sRet = ""
101 End Select
102 Debug.Print "システムのフォントのみ使用し、文書のフォントを使用しない = " & sRet
103
104 Select Case AdobePDFSetting.DeleteLogFiles
105 Case 1: sRet = "チェック・オン"
106 Case 0: sRet = "チェック・オフ"
107 Case Else: sRet = ""
108 End Select
109 Debug.Print "成功したジョブのログを削除 = " & sRet
110
111 Select Case AdobePDFSetting.AskToReplacePDF
112 Case 1: sRet = "チェック・オン"
113 Case 0: sRet = "チェック・オフ"
114 Case Else: sRet = ""
115 End Select
116 Debug.Print "既存のPDFファイルの上書きを確認 = " & sRet
117
118 End Sub
119
120 '=========================================================
121 '
122 ' 名称 :Adobe PDFの印刷設定を取得
123 ' 機能 :Adobe PDFプリンタードライバーの印刷設定の
124 ' レジストリ情報を取得します。
125 ' 取得できる内容は「Adobe PDF 設定」タブの以下の情報です。
126 ' 'PDF 設定'
127 ' 'Adobe PDF セキュリティ'
128 ' 'Adobe PDF 保存先フォルダー'
129 ' '結果の Adobe PDF を表示'
130 ' '文書情報を追加'
131 ' 'システムのフォントのみ使用し、文書のフォントを使用しない'
132 ' '成功したジョブのログファイルを削除'
133 ' '既存の PDF ファイルの上書きを確認'
134 ' 'Adobe PDF のページサイズ'情報は取得が出来ませんでした。
135 '
136 ' バージョン:1.0
137 ' 作成日 :2017/08/29 初版
138 ' URL :https://pdf-file.nnn2.com/?=1015
139 '
140 '=========================================================
141
142 Private Function nnn2GetPdfPrinterSetting() As Boolean
143
144 'Acrobat バージョンの取得
145 Dim strAcrobatPath As String
146 Dim strAcrobatVersion As String
147 Dim strMsg As String
148 Call Get_Adobe_App_Info_nnn2("Acrobat", _
149 strAcrobatPath, strAcrobatVersion, strMsg)
150 ' Debug.Print "AcrobatPath ='" & strAcrobatPath & "'" & vbCrLf & _
151 ' "Acrobat Version='" & strAcrobatVersion & "'" & vbCrLf & _
152 ' "Message ='" & strMsg & "'"
153 If strAcrobatVersion = 0 Then
154 MsgBox "Acrobatのバージョンが取得できません。" & vbCrLf & _
155 "処理は中断します。", vbCritical, "実行エラー"
156 nnn2GetPdfPrinterSetting = False
157 Exit Function
158 End If
159
160 Dim sRetValue As String
161 Dim lRetValue As Long
162 Dim varRetValue As Variant
163 Dim REG_SUBKEY1 As String
164
165 Const CON_REG_SUBKEY2 = "SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Print¥Printers¥Adobe PDF¥PrinterDriverData"
166
167 REG_SUBKEY1 = "SOFTWARE¥Adobe¥Acrobat Distiller¥"
168
169 Select Case strAcrobatVersion
170 Case 17 'Acrobat 2017
171 REG_SUBKEY1 = REG_SUBKEY1 & "2017"
172 Case 15 'Acrobat DC
173 REG_SUBKEY1 = REG_SUBKEY1 & "DC"
174 Case Else 'Acrobat 4 - 9 , X(10) , XI(11)
175 REG_SUBKEY1 = REG_SUBKEY1 & strAcrobatVersion & ".0"
176 End Select
177
178 '「PDF 設定」
179 Call subGetRegValue(HKEY_LOCAL_MACHINE, CON_REG_SUBKEY2, _
180 "ConversionSettings", RegType.TypeSTRING, varRetValue)
181 AdobePDFSetting.ConversionSettings = varRetValue
182 'ConversionSettings := 'Standard' :標準 ※デフォルト
183 'ConversionSettings := 'PDFA1b 2005 CMYK' :PDF/A-1b:2005 (CMYK)
184 'ConversionSettings := 'PDFA1b 2005 RGB' :PDF/A-1b:2005 (RGB)
185 'ConversionSettings := 'PDFX1a 2001' :PDF/X-1a:2001
186 'ConversionSettings := 'PDFX1a 2001 JPN' :PDF/X-1a:2001 (日本)
187 'ConversionSettings := 'PDFX3 2002 JPN' :PDF/X-3 2002 (日本)
188 'ConversionSettings := 'PDFX3 2002' :PDF/X-3:2002
189 'ConversionSettings := 'Oversized Pages' :オーバーサイズページ
190 'ConversionSettings := 'Press Quality' :プレス品質
191 'ConversionSettings := 'High Quality Print' :高品質印刷
192 'ConversionSettings := 'Smallest File Size' :最小ファイルサイズ
193 'ConversionSettings := 'MAGAZINE Ad 2006 JPN' :雑誌広告送稿用
194
195 '「Adobe PDF セキュリティ」Adobe PDF Security
196 Call subGetRegValue(HKEY_LOCAL_MACHINE, CON_REG_SUBKEY2, _
197 "SecurityOption", RegType.TypeDWORD, varRetValue)
198 AdobePDFSetting.SecurityOption = varRetValue
199 'SecurityOption := 0x00000000 (0):なし
200 'SecurityOption := 0x00000001 (1):各ジョブごとにセキュリティを確認
201 'SecurityOption := 0x00000002 (2):前回のセキュリティ設定を使用
202
203 '「Adobe PDF 保存先フォルダー」Adobe PDF Output Folder
204 Call subGetRegValue(HKEY_LOCAL_MACHINE, CON_REG_SUBKEY2, _
205 "PromptForFileName", RegType.TypeDWORD, varRetValue)
206 AdobePDFSetting.PromptForFileName = varRetValue
207 'PromptForFileName := 0x00000001 (1):Adobe PDF の保存先を確認 = ダイアログを表示
208 'PromptForFileName := 0x00000000 (0):以外 = ダイアログを非表示、指定フォルダに保存
209
210 'PromptForFileName=0 の時の「保存先のフォルダ名」
211 If AdobePDFSetting.PromptForFileName = 0 Then
212 AdobePDFSetting.AdobePDFOutputFolder = ""
213 Call subGetRegValue(HKEY_CURRENT_USER, REG_SUBKEY1 & "¥AdobePDFOutputFolder", _
214 "", RegType.TypeDWORD, varRetValue)
215 If varRetValue = 1 Then
216 '「フォルダ保存先指定無し」
217 AdobePDFSetting.AdobePDFOutputFolder = ""
218 Else
219 Call subGetRegValue(HKEY_CURRENT_USER, REG_SUBKEY1 & "¥AdobePDFOutputFolder", _
220 varRetValue, RegType.TypeSTRING, varRetValue)
221 AdobePDFSetting.AdobePDFOutputFolder = varRetValue
222 End If
223 End If
224
225 '「結果の Adobe PDF を表示」View Adobe PDF results
226 Call subGetRegValue(HKEY_LOCAL_MACHINE, CON_REG_SUBKEY2, _
227 "ViewPrintOutput", RegType.TypeDWORD, varRetValue)
228 AdobePDFSetting.ViewPrintOutput = varRetValue
229 'ViewPrintOutput := 0x00000001 (1):オン = PDFを画面に表示
230 'ViewPrintOutput := 0x00000000 (0):オフ = PDFを画面に非表示
231
232 '「文書情報を追加」Add document information
233 Call subGetRegValue(HKEY_LOCAL_MACHINE, CON_REG_SUBKEY2, _
234 "AddDocInfo", RegType.TypeDWORD, varRetValue)
235 AdobePDFSetting.AddDocInfo = varRetValue
236 'AddDocInfo := 0x00000001 (1):チェック・オン
237 'AddDocInfo := 0x00000000 (0):チェック・オフ
238
239 '「システムのフォントのみ使用し、文書のフォントを使用しない」
240 Call subGetRegValue(HKEY_LOCAL_MACHINE, CON_REG_SUBKEY2, _
241 "DistillerHostFontHasMostFonts", RegType.TypeDWORD, varRetValue)
242 AdobePDFSetting.DistillerHostFontHasMostFonts = varRetValue
243 'DistillerHostFontHasMostFonts := 0x00000001 (1)
244 'DistillerHostFontHasMostFonts := 0x00000000 (0)
245
246 '「成功したジョブのログを削除」
247 Call subGetRegValue(HKEY_LOCAL_MACHINE, CON_REG_SUBKEY2, _
248 "DeleteLogFiles", RegType.TypeDWORD, varRetValue)
249 AdobePDFSetting.DeleteLogFiles = varRetValue
250 'DeleteLogFiles := 0x00000001 (1):チェック・オン
251 'DeleteLogFiles := 0x00000000 (0):チェック・オフ
252
253 '「既存の PDF ファイルの上書きを確認」Ask to replace existing PDF file
254 Call subGetRegValue(HKEY_LOCAL_MACHINE, CON_REG_SUBKEY2, _
255 "AskToReplacePDF", RegType.TypeDWORD, varRetValue)
256 AdobePDFSetting.AskToReplacePDF = varRetValue
257 'AskToReplacePDF := 0x00000001 (1):チェック・オン
258 'AskToReplacePDF := 0x00000000 (0):チェック・オフ
259
260
261 ' '※「初期設定の出力フォルダーの名前」
262 ' 'Default PDF Output Folder
263 ' '[HKEY_LOCAL_MACHINE¥SOFTWARE¥Adobe¥Acrobat Distiller¥11.0]
264 ' '"DefaultPDFOutput"="Documents¥¥*.pdf"
265 ' Call subGetRegValue(HKEY_LOCAL_MACHINE, REG_SUBKEY1, _
266 ' "DefaultPDFOutput", RegType.TypeSTRING, varRetValue)
267 ' Debug.Print "DefaultPDFOutput = " & varRetValue
268 ' AdobePDFSetting.DefaultPDFOutput = varRetValue
269 '
270
271 nnn2GetPdfPrinterSetting = True
272 End Function
273
274
275 '=======================================================
276 ' 機能 :レジストリの値を取得
277 '
278 ' 参照設定: [Microsoft WMI Scripting V*.* Library]
279 '
280 ' 参考URL :http://www.wmifun.net/sample/vb6/stdregprov.html
281 '=======================================================
282
283 Private Sub subGetRegValue( _
284 ByVal hKey As Long, ByVal SUBKEY As String, _
285 ByVal KEY As String, ByVal sType As Long, _
286 ByRef strRetValue As Variant)
287 On Error GoTo Err_subGetRegValue:
288 Dim objSWbemReg As SWbemObject
289 Dim objLocator As SWbemLocator
290 Dim objService As SWbemServices
291 Dim sRet As String
292 Dim lRet As Long
293 Dim bRet() As Variant
294 Dim I As Long
295
296 strRetValue = ""
297
298 'Set objLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
299 Set objLocator = New WbemScripting.SWbemLocator
300 Set objService = objLocator.ConnectServer(vbNullString, "root¥default")
301 Set objSWbemReg = objService.Get("StdRegProv")
302
303 Select Case sType
304 Case 0 '文字列値
305 objSWbemReg.GetStringValue hKey, SUBKEY, KEY, sRet
306 strRetValue = sRet
307 Case 1 'DWORD値
308 objSWbemReg.GetDWORDValue hKey, SUBKEY, KEY, lRet
309 strRetValue = lRet
310 Case 2 'バイナリ値
311 objSWbemReg.GetDWORDValue hKey, SUBKEY, KEY, bRet
312 strRetValue = ""
313 For I = 0 To UBound(bRet)
314 strRetValue = strRetValue & Hex(bRet(I)) & " "
315 Next
316 Case Else
317 MsgBox "Oh my God!.", vbCritical, "subGetRegValue Error"
318 End Select
319
320 Set objSWbemReg = Nothing
321 Set objService = Nothing
322 Set objLocator = Nothing
323 Exit Sub
324
325 Err_subGetRegValue:
326 Select Case Err.Number
327 Case -2147417848
328 'キーが存在しない
329 Resume Next
330 Case Else
331 '実行エラー
332 MsgBox Err.Description, vbCritical, "subGetRegValue Runtime Error"
333 End Select
334 End Sub
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
以下は「関数:Acrobat , Adobe Reader のインストールパスとバージョンを取得」です。上記のサンプル内から呼ばれています。
001 Option Explicit
002
003 'Win32 APIを使用するための宣言
004
005 'Private Const HKEY_CLASSES_ROOT = &H80000000
006 'Private Const HKEY_CURRENT_USER = &H80000001
007 'Private Const HKEY_CURRENT_CONFIG = &H80000005
008 'Private Const HKEY_DYN_DATA = &H80000006
009 Private Const HKEY_LOCAL_MACHINE = &H80000002
010 'Private Const HKEY_USERS = &H80000003
011 'Private Const ERROR_SUCCESS = 0&
012
013 Type VS_FIXEDFILEINFO
014 dwSignature As Long
015 dwStrucVersion As Long
016 dwFileVersionMS As Long
017 dwFileVersionLS As Long
018 dwProductVersionMS As Long
019 dwProductVersionLS As Long
020 dwFileFlagsMask As Long
021 dwFileFlags As Long
022 dwFileOS As Long
023 dwFileType As Long
024 dwFileSubtype As Long
025 dwFileDateMS As Long
026 dwFileDateLS As Long
027 End Type
028
029 'レジストリのハンドルを解放する
030 Private Declare Function RegCloseKey Lib "ADVAPI32" _
031 (ByVal hKey&) As Long
032
033 'レジストリのキーを開ける(ハンドルの確保)
034 Private Declare Function RegOpenKeyEx Lib "ADVAPI32" _
035 Alias "RegOpenKeyExA" (ByVal hKey&, ByVal lpSubKey$, _
036 ByVal ulOptions&, ByVal samDesired&, phkResult&) As Long
037
038 'レジストリの値を取得する
039 Private Declare Function RegQueryValueExstr Lib "ADVAPI32" _
040 Alias "RegQueryValueExA" (ByVal hKey&, _
041 ByVal lpValueName$, ByVal lpReserved&, ByVal lpType&, _
042 ByVal lpdata$, lpcbData&) As Long
043
044 'ファイルのバージョン情報のサイズを取得する
045 Private Declare Function GetFileVersionInfoSize Lib _
046 "Version.dll" Alias "GetFileVersionInfoSizeA" _
047 (ByVal lptstrFilename As String, lpdwHandle As Long) _
048 As Long
049
050 'ファイルのバージョン情報を取得する
051 Private Declare Function GetFileVersionInfo Lib "Version.dll" _
052 Alias "GetFileVersionInfoA" _
053 (ByVal lptstrFilename As String, ByVal dwHandle As Long, _
054 ByVal dwLen As Long, lpdata As Any) As Long
055
056 Private Declare Function VerQueryValue Lib "Version.dll" _
057 Alias "VerQueryValueA" (pBlock As Any, _
058 ByVal lpSubBlock As String, lplpBuffer As Any, _
059 puLen As Long) As Long
060
061 Private Declare Sub MoveMemory Lib "kernel32.dll" _
062 Alias "RtlMoveMemory" (Destination As Any, _
063 Source As Any, ByVal Length As Long)
064
065 '時間指定してCPUをシステムに戻す
066 Private Declare Sub Sleep Lib "kernel32.dll" _
067 (ByVal dwMilliseconds As Long)
068
069 '**************************************************
070 '
071 ' Acrobat , Adobe Reader アプリのインストールパスと
072 ' アプリケーションのバージョンを取得する
073 '
074 ' Get the version and application path
075 ' for acrobat and adobe reader.
076 '
077 ' Create : 2013/10/08
078 ' Update :
079 ' Vertion : 1.0.0
080 '
081 ' 引数1 : strApp As String (IN)
082 ' 'Acrobat' Acrobatの処理
083 ' 'Reader' Adobe Readerの処理
084 ' 引数2 : strPath As String (OUT)
085 ' Adobe アプリケーションパス
086 ' 引数3 : strVersion As String (OUT)
087 ' アプリケーションのバージョン番号 4~11
088 ' 引数4 : strMsg As String (OUT)
089 ' エラーメッセージ
090 ' ""はエラー無し
091 '
092 ' 戻り値 : True 正常処理
093 ' False 実行エラー等
094 '
095 ' 備考 :
096 ' 1. 以下のサイトの情報を元に作成しました
097 ' http://helpx.adobe.com/jp/acrobat/kb/511265.html
098 ' URL : https://pdf-file.nnn2.com/?p=767
099 ' その他 : 著作権等は主張しません。
100 ' 上記URLにコメントを頂けると嬉しいです。
101 '
102 '**************************************************
103
104 Public Function Get_Adobe_App_Info_nnn2( _
105 ByVal strApp As String, _
106 ByRef strPath As String, _
107 ByRef strVersion As String, _
108 ByRef strMsg As String) As Boolean
109
110 On Error GoTo Err_Get_Adobe_App_Info_nnn2:
111
112 Dim strFileVersion As String
113 Dim strProductVersion As String
114 Dim strSubKey As String
115 Dim strRootKey As String
116 Dim InstallPathReg As Long
117 Dim lLength As Long
118 Dim lRet As Long
119 Dim strName As String
120
121 strMsg = ""
122 strRootKey = HKEY_LOCAL_MACHINE
123 If strApp = "Acrobat" Then
124 'Acrobat Reg
125 strSubKey = "SOFTWARE¥Microsoft¥Windows¥" & _
126 "CurrentVersion¥App Paths¥Acrobat.exe"
127 Else
128 'Adobe Reader Reg
129 strSubKey = "SOFTWARE¥Microsoft¥Windows¥" & _
130 "CurrentVersion¥App Paths¥AcroRd32.exe"
131 End If
132
133 'キーをオープンしてハンドルを得る
134 lRet = RegOpenKeyEx(strRootKey, strSubKey, 0, 1, _
135 InstallPathReg)
136
137 'バッファを確保する
138 strPath = String(250, Chr(0))
139 lLength = Len(strPath) '長さ
140
141 '"*.exe"エントリから既定のレジストリを得る
142 strName = ""
143 lRet = RegQueryValueExstr(InstallPathReg, strName, _
144 0, 0, strPath, lLength)
145
146 'レジストリ値の存在チェック
147 strPath = Trim$(Replace(strPath, Chr(0), " "))
148 If strPath = "" Then
149 'エラー:アプリケーションは未インストール
150 strMsg = "Not Found Adobe apllication"
151 strVersion = vbNullString
152 Exit Function
153 End If
154
155 'アプリのフルパスを出力
156 strPath = Left$(strPath, InStr(strPath, ".exe") + 3)
157
158 'ハンドルを閉じる
159 Call RegCloseKey(InstallPathReg)
160
161 '***************************************************
162 '取得したパスの exeファイル情報を取得する
163 '***************************************************
164
165 Dim lngSizeOfVersionInfo As Long
166 Dim lngDummyHandle As Long
167 Dim bytDummyVersionInfo() As Byte
168 Dim lngPointerVersionInfo As Long
169 Dim lnglLengthVersionInfo As Long
170 Dim udtVSFixedFileInfo As VS_FIXEDFILEINFO
171
172 'バージョン情報のサイズを取得
173 lngSizeOfVersionInfo = GetFileVersionInfoSize(strPath, _
174 lngDummyHandle)
175
176 'ダミー変数の領域を確保
177 ReDim bytDummyVersionInfo(lngSizeOfVersionInfo - 1)
178
179 'バージョン情報を取得
180 lRet = GetFileVersionInfo(strPath, 0, _
181 lngSizeOfVersionInfo, bytDummyVersionInfo(0))
182
183 'バージョン情報リソースのルートブロックを取得
184 lRet = VerQueryValue(bytDummyVersionInfo(0), "¥", _
185 lngPointerVersionInfo, lnglLengthVersionInfo)
186
187 '取得したルートブロックをバージョン情報の構造体へ移動
188 MoveMemory udtVSFixedFileInfo, _
189 ByVal lngPointerVersionInfo, Len(udtVSFixedFileInfo)
190
191 With udtVSFixedFileInfo
192 'ファイルバージョンを取り出し
193 strFileVersion = _
194 CStr((.dwFileVersionMS ¥ 2 ^ 16) And &HFFFF&) & "." & _
195 CStr(.dwFileVersionMS And &HFFFF&) & "." & _
196 CStr((.dwFileVersionLS ¥ 2 ^ 16) And &HFFFF&) & "." & _
197 CStr(.dwFileVersionLS And &HFFFF&)
198
199 '製品バージョンを取り出し
200 strProductVersion = _
201 CStr((.dwProductVersionMS ¥ 2 ^ 16) And &HFFFF&) & "." & _
202 CStr(.dwProductVersionMS And &HFFFF&) & "." & _
203 CStr((.dwProductVersionLS ¥ 2 ^ 16) And &HFFFF&) & "." & _
204 CStr(.dwProductVersionLS And &HFFFF&)
205
206 strVersion = CStr((.dwProductVersionMS ¥ 2 ^ 16) And &HFFFF&)
207
208 End With
209
210 '確認
211 ' Debug.Print "strFileVersion =" & strFileVersion
212 ' Debug.Print "strProductVersion=" & strProductVersion
213
214 Get_Adobe_App_Info_nnn2 = True
215 Exit Function
216
217 Err_Get_Adobe_App_Info_nnn2:
218 strMsg = "Run Time Error" & vbCrLf & Err.Number & _
219 vbCrLf & Err.Description
220 Get_Adobe_App_Info_nnn2 = False
221 End Function
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
備考
- このレジストリ情報を元にプログラムからレジストリを更新しても「Adobe PDF」の印刷設定を変更することは出来ません。更新したい場合は「サンプル:印刷設定の変更と復元」の方法を参考にしてください。
- 詳細設定の「Adobe PDF Converter 詳細オプション」レジストリ情報は取得出来ませんでした。バイナリーデータとして保存されているのかもしれません。
- Acrobat X、XI、DC 、2017 のバージョン番号は 10 , 11 , 15 , 17 となります。しかしレジストリ内部での扱いは場所により変わります。
- Acrobat DC は「15」又は「DC」
- Acrobat 2017は「17」又は「2017」
参照
- Customization Wizard の機能 - PDF Creation: PDF printer
PDF creation: PDF printer / Printer settings- レジストリの値を取得
- PDF設定の保存先に指定したフォルダが自動作成される
< サンプル一覧へ >