登録されているプリンタ名を取得したいのですが、方法を教えてください。
また、デフォルトプリンタの判別方法もお願いします。
プリンタ名の取得
簡単な例を挙げると
ネットワークプリンタだとうまくいかないかもしれません。
コード: 全て選択
#prompt
Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (lpAppName As *Byte, lpKeyName As *Byte, lpDefault As *Byte, lpReturnedString As *Byte, nSize As DWord) As DWord
Dim nBufferSize As DWord,nReadSize As DWord
Dim nCount As DWord
Dim pPrinterInfo As *PRINTER_INFO_5
Dim i As Long
Dim szDefaultPrinterName[ELM(1024)] As Byte
GetProfileString("windows","device","",szDefaultPrinterName,1024)
'カンマ以降を削除
i=0
Do
If szDefaultPrinterName=Asc(",") Then
szDefaultPrinterName=0
Exit Do
End If
i=i+1
Loop
'プリンタ一覧を返却
EnumPrinters(PRINTER_ENUM_LOCAL,NULL,5,pPrinterInfo,0,nBufferSize,nCount)
pPrinterInfo=malloc(nBufferSize)
EnumPrinters(PRINTER_ENUM_LOCAL,NULL,5,pPrinterInfo,nBufferSize,nReadSize,nCount)
If nCount Then
For i=0 To nCount-1
'デフォルトプリンタかどうか調べる
If lstrcmp(pPrinterInfo.pPrinterName,szDefaultPrinterName)=0 Then
Print MakeStr(pPrinterInfo.pPrinterName);"[Default]"
Else
Print MakeStr(pPrinterInfo.pPrinterName)
End If
Next
End If
free(pPrinterInfo)
ネットワークプリンタだとうまくいかないかもしれません。
[hira]
http://hira.hopto.org/
http://hira.hopto.org/