tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
VB.NET を使って、プリンタに生データを送信する方法(VB.NET) ( No.0 )  [親スレッドへ]
日時: 2007/09/12 22:10
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[印刷関係][][]                                                      *
* キーワード:プリンタ,文書番号 : 322090,サポート技術情報,,,            *
***********************************************************************************

元質問:プリンタに生データを送信する方.. - hirovox  2006/03/20-18:32 No.3341

Visual Basic .NET を使って、プリンタに生データを送信する方法。
http://support.microsoft.com/default.aspx?scid=kb;ja;322090

上記サイトにあるコードをそのままコピーペーストで実行させるとローカルのプリンタでは問題なく動作するのですが、ネットワーク接続のプリンタを選択した場合、「PInvokeStackImbalance が検出されました。
Message: PInvoke 関数 'Form1+RawPrinterHelper::OpenPrinter' がスタックを不安定にしています。PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。呼び出し規約、および PInvoke シグネチャのパラメータがターゲットのアンマネージ シグネチャに一致していることを確認してください。」

とメッセージが表示されます。

無視して「続行」をするとちゃんと動作しているのですが、このエラーの原因、対処方法をお教えください。

-----------------------------------------------------------------------------------
Re: プリンタに生データを送信す.. - YAS  2006/03/20-19:30 No.3342
-----------------------------------------------------------------------------------

DllImportの宣言が間違っているのではないでしょうか?(自信ないけど)
例えば,OpenPrinterの宣言にpd As Longとありますが,Longの訳がないと思うんですが...
IntPtrに変えて試してみてください。
(MSのサンプルはときどき間違っていてそのまま実行できないことがあると思います)

        Public Shared Function OpenPrinter(ByVal src As String, _
               ByRef hPrinter As IntPtr, ByVal pd As Long) As Boolean
        End Function


        Public Shared Function OpenPrinter(ByVal src As String, _
               ByRef hPrinter As IntPtr, ByVal pd As IntPtr) As Boolean
        End Function




 [スレッド一覧へ] [親スレッドへ]