| 
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 2011/03/22 17:05
名前: 花ちゃん
 
************************************************************************************ カテゴリー:[印刷関係][][]                                                      *
 * キーワード:Win32API,プリンター,ドライバー,,,                                   *
 ***********************************************************************************
 タイトル : AddPrinterDriverがうまくいきません
 記 事 No : 10255
 投 稿 日 : 2010/10/19(Tue) 23:21
 元質問者 : zonk
 
 プリンタドライバをインストールしたいのですが、「プリンタ名が無効です」と
 表示されて上手くいきません。
 AddPrinterDriverW を AddPrinterDriverA に変えると、エラーメッセージは
 「パラメータが間違っています」になります。
 
 -----------------------------------------------------------------------------------
 詳しくは、記事No:10255 〜の一連の投稿をご覧ください。
 
 記事No : 10261
 投稿日 : 2010/10/20(Wed) 23:00
 投稿者 : zonk
 
 分り易く解説下さり、ありがとうございます。無事にドライバをインストールできました。
 魔界の仮面弁士様にご指摘いただいた点に加え、更に2点修正しています。
 ・AddPrinterDriverのAPI宣言に Alias "AddPrinterDriverW" を付け加えました
 ・DRIVER_INFO_3のpDependentFilesプロパティの最後に & vbNullChar & vbNullChar を付けました
 
 ↓修正後のソース
 
 Private Declare Unicode Function AddPrinterDriver Lib "winspool.drv" Alias "AddPrinterDriverW" _
 (ByVal pName As String, _
 ByVal Level As Integer, _
 ByRef pDriverInfo As DRIVER_INFO_3) As <MarshalAs(UnmanagedType.Bool)> Boolean
 
 <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode, Pack:=4)> _
 Private Structure DRIVER_INFO_3
 Public cVersion As Int32
 Public pName As String
 Public pEnvironment As String
 Public pDriverPath As String
 Public pDataFile As String
 Public pConfigFile As String
 Public pHelpFile As String
 Public pDependentFiles As String
 Public pMonitorName As String
 Public pDefaultDataType As String
 End Structure
 
 Public Shared Function DriverInstall(ByVal strDriverName As String) As Boolean
 Dim di As DRIVER_INFO_3
 With di
 .cVersion = 3
 .pConfigFile = "ps5ui.dll"
 .pDataFile = strDriverName & ".ppd"
 .pDependentFiles = "pscript.ntf" & vbNullChar _
 & "pscript.hlp" & vbNullChar _
 & "ps5ui.dll" & vbNullChar _
 & strDriverName & ".ppd" & vbNullChar _
 & "pscript5.dll" & vbNullChar & vbNullChar
 .pDriverPath = "pscript5.dll"
 .pEnvironment = "Windows NT x86"
 .pHelpFile = "pscript5.hlp"
 .pMonitorName = String.Empty
 .pName = strDriverName
 .pDefaultDataType = "RAW"
 End With
 
 If Not AddPrinterDriver(Nothing, 3, di) Then
 Dim ExcptWin32 As New Win32Exception(Marshal.GetLastWin32Error())
 MessageBox.Show(ExcptWin32.Message, "Win32Err", MessageBoxButtons.OK)
 Return False
 End If
 Return True
 End Function
 
  |