関数:Adobe PDFの印刷設定を取得

TOP > サンプル / 関数 > *      [...]


... love


 

概要

プリンタードライバー 「Adobe PDF」 の印刷設定の内容を取得します。内容は「Adobe PDF」に関係するレジストリの情報の一部です。

Adobe PDF の印刷設定

「Adobe PDF」プリンタードライバーを使ってPDFファイルとして印刷したい時が有ります。この時に「Adobe PDF 保存先フォルダー」で保存先フォルダーが指定されていないと実行時に保存先フォルダを尋ねるダイアログボックス画面が表示されてしまいます。また「結果の Adobe PDF を表示」がチェックされてると印刷後のPDFファイルがデスクトップに表示されます。

この情報を事前にこの関数から取得します。

機能

  1. 「Adobe PDF」プリンタードライバーの印刷設定のレジストリ情報を取得します。
  2. 取得できる内容は「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

戻り値

  1. True:エラー無し
  2. False:実行エラー

 

 

サンプル

「Adobe PDF」プリンタードライバーの印刷設定の内容を取得します。

参照設定:[Microsoft WMI Scripting V*.* Library]

Downloadsample-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 :http://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 : http://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編)
 

備考

  1. このレジストリ情報を元にプログラムからレジストリを更新しても「Adobe PDF」の印刷設定を変更することは出来ません。更新したい場合は「サンプル:印刷設定の変更と復元」の方法を参考にしてください。
  2. 詳細設定の「Adobe PDF Converter 詳細オプション」レジストリ情報は取得出来ませんでした。バイナリーデータとして保存されているのかもしれません。
「Adobe PDF」の「Adobe PDF Converter 詳細オプション」
  • 当然ですが日本語以外の環境では「Adobe PDF」の印刷設定でコンボボックスの内容は一部が異なるはずです。例:'PDFX1a 2001 JPN'
    • Acrobat X、XI、DC2017 のバージョン番号は 10 , 11 , 15 , 17 となります。しかしレジストリ内部での扱いは場所により変わります。
      • Acrobat DC は「15」又は「DC」
      • Acrobat 2017は「17」又は「2017」

    参照

    1. Customization Wizard の機能 - PDF Creation: PDF printer 
    2. PDF creation: PDF printer / Printer settings
    3. レジストリの値を取得
    4. PDF設定の保存先に指定したフォルダが自動作成される

    < サンプル一覧へ >

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    CAPTCHA


    ★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


    SAMURAI Plugin

    コメントをする時は出来れば以下もお願いします。

    • OS名 バージョン
    • Acrobat バージョン
    • ツール(Excel等) バージョン
    コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



    お仕事で当サイトを見ている方へ
    考え込んだら、ご質問下さい。
    一緒に解決策を考えましょう。

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください