VB.NET質問スレ (Part11)
■ このスレッドは過去ログ倉庫に格納されています
0086デフォルトの名無しさん
2005/04/26(火) 13:54:01・DC_BINSを指定した場合返ってくるのはWORD配列である。
配列の各要素の変更を可能にするには、仮引数の宣言にSystem.Runtime.InteropServices.OutAttribute属性を付加する。
・構造体は、通常自分でC/C++の構造体を.NET用にに置き換えた構造体を定義する。
構造体のポインタを渡す場合はByRefキーワードを使用する。
しかし必ずNULLを指定するのなら、System.IntPtrで仮引数を定義して、渡すときにSystem.IntPtr.Zeroを渡しても良い。
と言う事をふまえて、
'定義パート
Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" ( _
ByVal pDevice As String, _
ByVal pPort As String, _
ByVal fwCapability As Short, _
<System.Runtime.InteropServices.OutAttribute> ByVal pOutput() As Short, _
ByVal pDevMode As IntPtr) As Integer
'実行パート
Dim size As Integer
'まず個数を取得する
size = DeviceCapabilities(strPrinterDeviceName, strPrinterPortName, intDeviceCapability, Nothing, System.IntPtr.Zero)
'配列を初期化
Dim output(size) As Integer
'取得
DeviceCapabilities(strPrinterDeviceName, strPrinterPortName, intDeviceCapability, output, System.IntPtr.Zero)
'後は随意
Dim p As Short
For Each p In output
'何らかの処理
Next
■ このスレッドは過去ログ倉庫に格納されています