tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル AddPrinterDriverがうまくいきません
投稿日: 2010/10/19(Tue) 23:21
投稿者zonk
プリンタドライバをインストールしたいのですが、「プリンタ名が無効です」と
表示されて上手くいきません。
AddPrinterDriverW を AddPrinterDriverA に変えると、エラーメッセージは
「パラメータが間違っています」になります。
どこがまずいかご教授お願いします。
環境はVista、VB2008です。

必要なファイルは事前に C:\Windows\system32\spool\DRIVERS\W32X86 にコピー済みで、
ファイルをフルパスで指定しても同じ結果になります。


Private Declare Function AddPrinterDriver Lib "winspool.drv" Alias "AddPrinterDriverW" _
                (ByVal pName As String, _
                ByVal Level As Integer, _
                ByRef pDriverInfo As DRIVER_INFO_3) As Integer

Public Structure DRIVER_INFO_3
    Public cVersion As Long
    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 New 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"
        .pDriverPath = "pscript5.dll"
        .pEnvironment = "Windows NT x86"
        .pHelpFile = "pscript5.hlp"
        .pMonitorName = String.Empty
        .pName = strDriverName
        .pDefaultDataType = "RAW"
    End With

    If AddPrinterDriver(String.Empty, 3, di) = 0 Then
        Dim ExcptWin32 As New Win32Exception(Marshal.GetLastWin32Error())
        MessageBox.Show(ExcptWin32.Message, "Win32Err", MessageBoxButtons.OK)
        Return False
    End If
    Return True
End Function

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。