tagCANDY CGI VBレスキュー(花ちゃん) - プリンタードライバーをインストールするには(VB.NET) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
プリンタードライバーをインストールするには(VB.NET)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

プリンタードライバーをインストールするには(VB.NET) [No.287の個別表示]
     サンプル投稿用掲示板  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
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ