- PR -

ラベルプリンタに制御コマンドを送るには?

投稿者投稿内容
ringosan
常連さん
会議室デビュー日: 2002/12/13
投稿数: 43
投稿日時: 2002-12-27 15:39
いつもお世話になっております。
Windowsアプリケーションで、ラベルプリンタを使って印刷をするプログラムを
作っているのですが、PCからプリンタ制御コマンド(16進データ)を送り、実行したいの
ですが方法がわかりません。
プログラム内で印刷する方法として、printDocumentで印刷しています。
現時点でラベルプリンタで印字は正しく出来ていて、それに加えて、
プログラム内部で用紙カットのコマンドをプリンタに送ろうと思っています。
どなたかご教授お願いします。
KKJ
会議室デビュー日: 2002/08/13
投稿数: 17
お住まい・勤務地: 関東地方
投稿日時: 2003-01-06 11:26
解決に結ぶ返答では無いかもしれませんが、過去に同様な処理を構築した経験があります。


>プログラム内部で用紙カットのコマンドをプリンタに送ろうと思っています

各コマンドは、プリンタ付属マニュアルに載っていました。
メーカにも寄ると思いますがVBサンプルも付属していました。
一度、メーカサポートへ問い合わせしてはどうでしょうか?

ringosan
常連さん
会議室デビュー日: 2002/12/13
投稿数: 43
投稿日時: 2003-01-06 11:50
KKJさん回答ありがとうございます。
場違いな質問をしていたようです。
申し訳ありませんでした。
ringosan
常連さん
会議室デビュー日: 2002/12/13
投稿数: 43
投稿日時: 2003-01-06 16:22
KKJさんのおっしゃる通り、メーカーサポートへ問い合わせたところ
VBのサンプルがありました。

別スレッドにした方がよかったのかもしれませんが、
質問です。

VBのサンプルでは[WinAPI]のOpenPrinterやWritePrinterといったものを
使ってプリンタにコマンドを送っていました。
私はC#で開発しているのですが、
WinAPIのOpenPrinterやWritePrinterに代わる関数はあるのでしょうか?
C#でもWinAPIの関数を使うことが出来るのでしょうか。
教えてください。よろしくお願いします。


KKJ
会議室デビュー日: 2002/08/13
投稿数: 17
お住まい・勤務地: 関東地方
投稿日時: 2003-01-06 17:12
>C#でもWinAPIの関数を使うことが出来るのでしょうか

参考サイト
【http://members.jcom.home.ne.jp/1213687801/tookun.html】
こちらを拝見する限り利用はできるようですよ。


申し訳ないですが、私はC#の経験がありませんので詳細は分かりません。
(どなたか識者の方、宜しくお願いします)


※リンクの修正


[ メッセージ編集済み 編集者: KKJ 編集日時 2003-01-06 17:14 ]
二天
ベテラン
会議室デビュー日: 2001/09/26
投稿数: 60
投稿日時: 2003-01-06 18:55
> C#でもWinAPIの関数を使うことが出来るのでしょうか。

できます。
詳しくはヘルプの「プラットフォーム呼び出しチュートリアル」などを参照して下さい。
ringosan
常連さん
会議室デビュー日: 2002/12/13
投稿数: 43
投稿日時: 2003-01-07 14:02
二天さん、KKJさんどうもありがとうございます。

現在WinAPIのOpenPrinterを使う方向で進めております。
他のAPIとして、メッセージボックス関数などはうまく動作したのですが、
実際に使用したいOpenPrinter関数がうまくいきません。
VBのサンプルを元にして作ったので何かがおかしいと思うのですが原因がわかりません。
OpenPrinterで戻り値が0になってしまいます。
もちろんハンドルを取得できません。
以下はソースです。
**********************************************************
//VB時のソース********************
//印刷開始関数(API)
//Public Declare Function OpenPrinter& Lib "winspool.drv"
Alias "OpenPrinterA" (
ByVal pPrinterName As String,
phPrinter As Long,
ByVal pDefault As Long)
//C#時のソース********************
[DllImport("winspool.drv")]
private static extern int OpenPrinter(
string pPrinterName,
long phPrinter,
long pDefault);

//プリンタハンドルを取得時**************
long lRet;
long plPrinterHandl = 0;
lRet = OpenPrinter("XXXX MR999e",plPrinterHandl, 0);
*************************************************************
第1引数にはプリンタ名を入れています。
どうか、よろしくお願いします。


rucio
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 98
投稿日時: 2003-01-07 14:31
こんにちは。

見ていてふと思ったのですがOpenPrinter関数の第2引数はMSDNライブラリによると

LPHANDLE phPrinter

となっていますからVB.NET風に宣言すると

phPrinter As Integer,

となるのではないでしょうか?
それと関数の戻り値の型を型指定文字&で表現されていますが、ちょっと私は型指定文字はよくわかならいのですが、これも変更する必要があるかもしれませんね。

スキルアップ/キャリアアップ(JOB@IT)