VC 開発向け
プリンタドライバ・ビューア
プログラミング＆リファレンス

はじめに
本書は、 STARFAX Server SDK のプ
プリンタドライバとビビューアプログラムの仕様のご説明と、それらを利用するユーザープログラムの作成方法をご説明しています。
なお、本書は、Visual C++ 6.0 を開発ツールとしてプログラムを作成する方を対象としていますが、STARFAX Server SDK のプ
プリンタドライバとビビューアプログラムのユーザープログラムとのインターフェ
イスは、プログラム起動時のコマンドライン指定 により、ファイルパスを取得する、または与えるといった操作ですので、他の開発ツールへの応用も容易です。
本書をお読みになる前に、 ｢STARFAX Server SDK セットアップマニュアル｣ をお読みいただき、STARFAXServer SDK の動作をご理解していただくようお願いいたします。

■ ご注意
本書に登場するシステム名・製品名は、一般に開発メーカーの登録商標です。

本書の構成について
本書は、次のような内容で構成されています。
● 第Ⅰ章 ユーザープログラムの開発について● 第Ⅱ章 サンプルプログラム● 第Ⅲ章 リファレンス
まずは第Ⅰ章に、開発の手順等をご説明していますので、 第Ⅰ章をご覧になってから第Ⅱ章にお進み下さい。
第Ⅲ章 リファレンスには、SSTARFAX Server SDK プリンタドライバ とビビューアプログラムの仕様についてご説明しています。

1

目次
はじめに
本書の構成について････････････････

１
１････････

４

第Ⅰ章 ユーザープログラムの開発について
1.1 開発の手順

第Ⅱ章 サンプルプログラム
2.1 印刷結果のＦＡＸ送信… (PrtCli.exe)････････

2.1.1 印刷結果を得る
2.1.2 印刷結果を表示する

６････････
８････････ １０

2.2 TIFF ファイルの作成とＦＡＸ送信 … (PrtCli2.exe)
2.2.1 印刷結果を得る
2.2.2 印刷結果を表示する････････ １２････････ １３････････ １８

第Ⅲ章 リファレンス
3.1 プリンタドライバの仕様
3.2 ビューアプログラムの仕様････････ ２１････････ ２２2

第Ⅰ章
ユーザープログラムの開発についてユーザープログラムの開発の手順についてご説明しています。

1.1 開発の手順

3

1.1 開発の手順
STARFAX Server SDK を操作する ユーザープログラムは、 STARFAX Server SDK が動作していることが前提です。従って、 ユーザープログラム開発を行う前に、STARFAX Server SDK 本体のインストールを行い、その操作を簡単に理解しておく必要があります。
それらを考慮して、以下の手順でユーザープログラム開発を行うことをお奨めします。
① ｢STARFAX Server SDK セットアップマニュアル｣ をお読みください。
● STARFAX Server SDK 本体のインストールを行って下さい。
● 基本的な操作を理解してください。
② 第Ⅱ章 サンプルプログラム を学習してください。
● サンプルプログラムは２種類用意しています。
◇ ワード・エクセル等のアプリケーションからＦＡＸ送信したい場合→ 印刷結果のＦＡＸ送信 (PrtCli.exe)
ワード・エクセル等のアプリケーションから手動で印刷後、プリンタドライバからユーザープログラムが起動されます。
◇ ユーザープログラムからＦＡＸ原稿を作成して、ＦＡＸ送信したい場合→ TIFF ファイルの作成とＦＡＸ送信 (PrtCli2.exe)
ユーザープログラムがプリンタドライバを制御して印刷結果(TIFF ファイル)を取得します。
● 各サンプルプログラムの説明は次の各項をご覧ください。

2.1 印刷結果のＦＡＸ送信 … (PrtCli.exe)
2.2 TIFF ファイルの作成とＦＡＸ送信 … (PrtCli2.exe)③ ユーザープログラム を作成してください。
● ①～② を踏まえて、ユーザープログラムの作成・テストを行って下さい。

4

第Ⅱ章
サンプルプログラム
プリンタドライバとビューアプログラムを利用するサンプルプログラムです。

2.1 印刷結果のＦＡＸ送信 … (PrtCli.exe)
2.2 TIFF ファイルの作成とＦＡＸ送信 … (PrtCli2.exe)

52.1 印刷結果のＦＡＸ送信 … (PrtCli.exe)
印刷結果のＦＡＸ送信プログラム【PrtCli.exe】 は、印刷結果の表示と FAX 送信を行うサンプルプログラムです。本 CD-ROM の以下の位置に入っています。ワード・エクセル等のアプリケーションから手動で印刷後、プリンタドライバからユーザープログラムが起動されます。
\サンプル\VC6 SP6\PrtCli.exe ... 印刷結果のＦＡＸ送信プログラム\サンプル\VC6 SP6\PrtCli\... 印刷結果のＦＡＸプログラム 開発プロジェクト
主な仕様、および操作方法は、以下の通りです。
①

STARFAX Server SDK を起動します。
(STARFAX Server SDK の起動は、｢STARFAX Server SDK セットアップアニュアル｣ P21 参照)② 以下のププリンタドライバの動作に関するレジストリを指定します。
● HKEY_LOCAL_MACHINE\Software\MEGASOFT\SfCs\OutFolder … ファイル出力フォルダ
文字列項目で、任意の作業フォルダを作成して指定します。
(例: "C:\Program Files\SfCs\Temp")● HKEY_LOCAL_MACHINE\Software\MEGASOFT\SfCs\DocName …ドキュメント名
文字列項目で、 このサンプルプログラムの場合、任意の文字列を指定します。
(例: "SFCSPRN")● HKEY_LOCAL_MACHINE\Software\MEGASOFT\SfCs\ExecFlag …プログラム実行フラグ
DWORD 項目で、 1 を指定します。
● HKEY_LOCAL_MACHINE\Software\MEGASOFT\SfCs\ExecPath …プログラムパス
文字列項目で、 PrtCli.exe をフルパスで指定します。
(例: "C:\Program Files\SfCs\PrtCli.exe")● HKEY_LOCAL_MACHINE\Software\MEGASOFT\SfCs\ExecParam …追加パラメータ
文字列項目で、 何も指定していない状態("") を設定します。
(詳細は 3.1 プリンタドライバ の仕様 をご覧下さい)③ 印刷可能な適当なアプリケーション(ワード等)から プリンタ名 "MEGASOFT STARFAX Engine"に対して印刷を行うと 印刷結果のＦＡＸ送信プログラム【PrtCli.exe】 が起動して、印刷結果リスト に 印刷結果が 登録された状態になります。
(または、印刷結果のＦＡＸ送信プログラム【PrtCli.exe】 を起動して、テスト印刷ボタン でテスト印刷 を行っても 同じ状態になります。)

6

④ 表示(V)ボタンを押して、印刷結果の内容を確認します。
⑤

ＦＡＸ送信(S)ボタンを押して、FAX 送信を行います。
この後、FAX 送信が正常に動作していない場合は、 STARFAX Server SDK ログ管理プログラム
でイベントの内容を確認して下さい。
(送信命令ファイルの詳細は ｢STARFAX Server SDK ファイル de FAX｣P6「送信命令ファイルを作成し、FAX 送信を指示する」をご参照ください72.1 印刷結果のＦＡＸ送信 … (PrtCli.exe)

2.1.1 印刷結果を得る
プリンタドライバで印刷した結果を得る方法を、印刷結果のＦＡＸ送信プログラム 開発プロジェクトのソースファイルを元にご説明します。
印刷結果のＦＡＸ送信プログラム【PrtCli.exe】 の仕様、及び、操作方法については、2.1 印刷
結果のＦＡＸ送信 をご覧下さい。
開発プロジェクトは、本 CD-ROM の以下の位置に入っています。
\サンプル\VC6 SP6\PrtCli\ ... 印刷結果のＦＡＸ送信プログラム 開発プロジェクト■ 印刷結果を得る
プリンタドライバ が印刷終了時に、印刷結果(TIFF ファイル) をパラメータとして、ユーザープログラムを起動することにより、 ユーザープログラム は 印刷結果を得ることができます。
そして、プ
プリンタドライバ が起動するプログラムは、レジストリに登録します。
(レジストリの設定の詳細は 3.1 プリンタドライバ の仕様 をご覧下さい)
なお、ソースファイル中に SFCSSYS_ で始まる名称の関数があります。これらの関数は、サンプルプログラムで汎用的に利用される共通関数です。詳細は、 ｢STARFAX Server SDK プログラミングマニ
ュアル｣ の付録 に記述されていますのでご覧下さい。

8

PrtCli.cpp :CPrtCliApp(public CWinApp)::m_lpCmdLine【コマンドライン】に STARFAX Engine プリンタドライ
バより印刷結果(TIFF ファイル) が渡されます。

9

2.1 印刷結果のＦＡＸ送信 … (PrtCli.exe)

2.1.2 印刷結果を表示する
印刷結果(TIFF ファイル)を表示する方法を、印刷結果のＦＡＸ送信プログラム 開発プロジェクトのソースファイルを元にご説明します。
印刷結果のＦＡＸ送信プログラム【PrtCli.exe】 の仕様、および操作方法については、2.1 印刷
結果のＦＡＸ送信 をご覧下さい。
開発プロジェクトは、本 CD-ROM の以下の位置に入っています。
\サンプル\VC6 SP6\PrtCli\ ... 印刷結果のＦＡＸ送信プログラム 開発プロジェクト■ 印刷結果を表示する
ビューアプログラム をコマンドラインパラメータに表示させたいファイルを" 囲みで指定して起動することにより 印刷結果(TIFF ファイル)を 表示することができます。
(起動時のコマンドラインパラメータの詳細は 3.2 ビューアプログラム の仕様 をご覧下さい)
なお、ソースファイル中に SFCSSYS_ で始まる名称の関数があります。これらの関数は、サンプルプログラムで汎用的に利用される共通関数です。詳細は、 ｢STARFAX Server SDK プログラミングマニ
ュアル｣ の付録 に記述されていますのでご覧下さい。

10

PrtCliDlg.cpp ://///////////////////////////////////////////////////////////////////////////// 表示ボタン

void CPrtCliDlg::OnButtonView(){// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください//////////////////////////////////////////////////////////////////////// ビューア 表示////////////////////////////////////////////////////////////////////////// /T パラメータにより、ビューアのプログラムキャプションを変更します。
////-------------------------------------------------------------------POSITION pos = m_clPRT.GetFirstSelectedItemPosition();if(pos) {intnItem = m_clPRT.GetNextSelectedItem(pos);

PRES_DATINFO *pItem = (PRES_DATINFO *)(m_clPRT.GetItemData(nItem)) ;charszViewExe[MAX_PATH];

if(pItem) {wsprintf(szViewExe, "\"%s\\SfCsVw.exe\" /T 表示 \"%s\"", m_szInstall, pItem->pTiffFile);
WinExec(szViewExe, SW_SHOW);}}//-------------------------------------------------------------------//////////////////////////////////////////////////////////////////////}

11

2.2 TIFF ファイルの作成とＦＡＸ送信 … (PrtCli2.exe)
TIFF ファイルのＦＡＸ送信プログラム【PrtCli2.exe】 は、TIFF ファイルの作成 と FAX 送信を行うサンプルプログラムです。本 CD-ROM の以下の位置に入っています。ユーザープログラムがプリンタドライバを制御して印刷結果(TIFF ファイル)を取得します。

\サンプル\VC6 SP6\PrtCli2.exe ... TIFF ファイルのＦＡＸ送信プログラム\サンプル\VC6 SP6\PrtCli2\... TIFF ファイルのＦＡＸ送信プログラム 開発プロジェクト
主な、仕様、及び、操作方法は以下の通りです。
①

STARFAX Server SDK を起動します。
(STARFAX Server SDK の起動は、｢STARFAX Server SDK セットアップアニュアル｣ P21 参照)②

PrtCli2.exe を起動します。

③「操作１」の下欄に FAX 原稿に表示させる文字を入力します。

④「①FAX 原稿の作成」ボタンをクリックします。
(作成するファイル名を任意指定したい場合は、[指定]ラジオボタンをクリックして、ファイル名を入力してください)⑤「②FAX 原稿の表示」ボタンをクリックすると、作成された FAX 原稿がビューアで表示されます。

⑥「操作３」の下欄に送信先の FAX 番号を入力します。

⑦「FAX 送信」ボタンをクリックします。
この後、FAX 送信が正常に動作していない場合は、 STARFAX ログ管理プログラム でイベントの内容を確認して下さい。
(送信命令ファイルの詳細は ｢STARFAX Server SDK ファイル de FAX｣P6「送信命令ファイルを作成し、FAX 送信を指示する」をご参照ください)12

2.2 TIFF ファイルの作成とＦＡＸ送信 … (PrtCli2.exe)

2.2.1 印刷結果を得る
プリンタドライバで印刷した結果を得る方法を、印刷結果のＦＡＸ送信プログラム開発プロジェクトのソースファイルを元にご説明します。
TIFF ファイルの作成とＦＡＸ送信プログラム【PrtCli2.exe】 の仕様、および操作方法については、2.2TIFF ファイルの作成とＦＡＸ送信 をご覧下さい。
開発プロジェクトは、本 CD-ROM の以下の位置に入っています。
\サンプル\VC6 SP6\PrtCli2\ ... TIFF ファイルの作成とＦＡＸ送信プログラム 開発プロジェクト■ 印刷結果を得る
プリンタドライバ が印刷終了時に、印刷結果(TIFF ファイル) を「ファイル出力フォルダ」に出力するので、このフォルダを参照することで、ユーザープログラム は印刷結果を得ることができます。

13

PrtCli2Dlg.cpp ://///////////////////////////////////////////////////////////////////////////// [① ＦＡＸ原稿の作成]ボタン

void CPrtCli2Dlg::OnButtonPrint(){// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

SFCSPRT_HANDLE m_hPrt;
HDC

hDc;

int

iError;char

szNAMESET[MAX_PATH];//////////////////////////////////////////////////////////////////////// 作成する TIFF ファイル名の確認//////////////////////////////////////////////////////////////////////// TIFF ファイル名 (0:自動, 1:指定)
if(m_iTiffFileNameMode == 1) {char

szExist[MAX_PATH];

ZeroMemory(szNAMESET, sizeof(szNAMESET));
m_ceNAMESET.GetWindowText(szNAMESET, MAX_PATH);
if(!szNAMESET[0]) {MessageBox("TIFF ファイル名を指定してください", CAP_APR_PRTCLI2, MB_ICONSTOP | MB_OK);
return;}lstrcat(szNAMESET, ".TIF");
wsprintf(szExist, "%s\\%s", m_szPgmData, szNAMESET);
if(SUB_CheckExistFile(szExist)) {int

iRes = MessageBox("指定された TIFF ファイルは既に存在します。\n 上書きしてよろしいですか？", CAP_APR_PRTCLI2, MB_ICONQUESTION | MB_OKCANCEL);
if(iRes != IDOK) {return;}}}//////////////////////////////////////////////////////////////////////// FAX 原稿(TIFF ファイル)のクリア//////////////////////////////////////////////////////////////////////

14

if(m_szTIFFFILE[0]) {DeleteFile(m_szTIFFFILE);
ZeroMemory(m_szTIFFFILE, MAX_PATH); // FAX 原稿(TIFF ファイル)
m_ceTIFFFILE.SetWindowText("");}//////////////////////////////////////////////////////////////////////// STARFAX Server SDK 印刷初期処理//////////////////////////////////////////////////////////////////////

if(!(m_hPrt = SFCSPRT_Init(&iError))) {MessageBox("プリンタドライバが見つかりません", CAP_APR_PRTCLI2, MB_ICONSTOP | MB_OK);
goto

EXIT;}//////////////////////////////////////////////////////////////////////// STARFAX Server SDK 印刷: ファイル出力フォルダ内のクリア//////////////////////////////////////////////////////////////////////

if(!SFCSPRN_ClearOutFolder(m_szOutFolder, PRTCLI2_DOCNAME)) {MessageBox("ファイル出力フォルダ内のクリアに失敗しました", CAP_APR_PRTCLI2, MB_ICONSTOP | MB_OK);
goto

EXIT;

}

～～～～～～～～～～～～～～～～～～～～～～～～～～～
ここでユーザープログラムからプ
プリンタドライバへの印刷を行います。

～～～～～～～～～～～～～～～～～～～～～～～～～～～//////////////////////////////////////////////////////////////////////// STARFAX Server SDK 印刷終了処理//////////////////////////////////////////////////////////////////////

if(m_hPrt) {SFCSPRT_Term(m_hPrt);
m_hPrt = (SFCSPRT_HANDLE)NULL;}//////////////////////////////////////////////////////////////////////

15

// STARFAX Server SDK 印刷: ファイル出力フォルダ内の印刷完了ファイルの取得//////////////////////////////////////////////////////////////////////{
intiRetry;char

szGetFileName[MAX_PATH];// 砂時計::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));for(iRetry = 0 ; iRetry < 30 ; iRetry++) {if(SFCSPRN_GetPrintFileName(m_szOutFolder,

PRTCLI2_DOCNAME,

szGetFileName)) {//-------------------------------------------------------------------// FAX 原稿(TIFF ファイル)の取得// TIFF ファイル名 (0:自動, 1:指定)
if(m_iTiffFileNameMode == 0) {wsprintf(m_szTIFFFILE,"%s\\%s",m_szPgmData,

pSUB_GetFileNamePtr(szGetFileName));}else {
wsprintf(m_szTIFFFILE, "%s\\%s", m_szPgmData, szNAMESET);}
CopyFile(szGetFileName, m_szTIFFFILE, FALSE);
DeleteFile(szGetFileName);m_ceTIFFFILE.SetWindowText(m_szTIFFFILE);

break;}
Sleep(2000);}// 砂時計を元に::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));

if(iRetry >= 30) {MessageBox("印刷処理が失敗しました", CAP_APR_PRTCLI2, MB_ICONSTOP | MB_OK);
}
}

EXIT:

16

//////////////////////////////////////////////////////////////////////// STARFAX Server SDK 印刷終了処理//////////////////////////////////////////////////////////////////////

if(m_hPrt) {SFCSPRT_Term(m_hPrt);
m_hPrt = (SFCSPRT_HANDLE)NULL;}

return;}17

2.2 TIFF ファイルの作成とＦＡＸ送信 … (PrtCli2.exe)

2.2.2 印刷結果を表示する
印刷結果(TIFF ファイル)を表示する方法を、印刷結果のＦＡＸ送信プログラム 開発プロジェクトのソースファイルを元にご説明します。
TIFF ファイルの作成とＦＡＸ送信プログラム【PrtCli2.exe】 の仕様、および操作方法については、2.2
TIFF ファイルの作成とＦＡＸ送信 をご覧下さい。
開発プロジェクトは、本 CD-ROM の以下の位置に入っています。
\サンプル\VC6 SP6\PrtCli2\ ... TEFF ファイルの作成とＦＡＸ送信プログラム 開発プロジェクト■ 印刷結果を表示する
ビューアプログラム 起動時に、コマンドラインパラメータに表示させたいファイルを" 囲みで指定して起動することにより、印刷結果(TIFF ファイル)を表示することができます。
(起動時のコマンドラインパラメータの詳細は 3.2 ビューアプログラム の仕様 をご覧下さい)18

PrtCli2Dlg.cpp ://///////////////////////////////////////////////////////////////////////////// [ＦＡＸ原稿の表示]ボタン

void CPrtCli2Dlg::OnButtonView(){// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください//////////////////////////////////////////////////////////////////////// ビューア 表示////////////////////////////////////////////////////////////////////////// /T パラメタにより、ビューアのプログラムキャプションを変更します。
////-------------------------------------------------------------------if(m_szTIFFFILE[0]) {charszViewExe[MAX_PATH];

wsprintf(szViewExe, "\"%s\\SfCsVw.exe\" /T 表示 \"%s\"", m_szInstall, m_szTIFFFILE);
WinExec(szViewExe, SW_SHOW);}
else {
MessageBox("[① ＦＡＸ原稿の作成] を行ってください", CAP_APR_PRTCLI2, MB_ICONEXCLAMATION |MB_OK);
m_cbPRINT.SetFocus();}//-------------------------------------------------------------------//////////////////////////////////////////////////////////////////////}

19第Ⅲ章リファレンス
プリンタドライバとビューアプログラムの仕様についてご説明しています。

3.1 プリンタドライバの仕様
3.2 ビューアプログラムの仕様

20

3.1 プリンタドライバの仕様
プリンタドライバの仕様について記述します。

■ プリンタ名"MEGASOFT STARFAX Engine"■ レジストリ 【 HKEY_LOCAL_MACHINE\\Software\\MEGASOFT\\SfCs 】● "OutFolder"● "DocName"... 文字列項目: ファイル出力フォルダ... 文字列項目: ドキュメント名

ファイル出力フォルダに以下のファイルを出力します。
ドキュメント名＋アンダーバー＋日付情報 （ [ドキュメント名]_YYYYMMDDHHMMSSMMM.tif ）● "ExecFlag" ... DWORD 項目: プログラム実行フラグ● "ExecPath" ... 文字列項目: 実行プログラム フルパス
● "ExecParam" ... 文字列項目: 追加コマンドラインパラメータプログラム実行フラグ が 1 の場合、印刷終了後、実行プログラム フルパス で指定されたプログラムを 起動します。
コマンドラインパラメータに 印刷結果(TIFF)ファイルのフルパス が " 囲み で設定されます。
追加コマンドラインパラメータ に指定があれば、プログラムを呼び出すときに印刷結果(TIFF)ファイル のフルパス だけでなく、追加コマンドラインパラメータ もコマンドラインパラメータ に設定されます。
■ 印刷結果(TIFF ファイル) のファイル形式
拡張子: TIF
ファイル形式: TIFF 形式 モノクロ PackBits 圧縮

21

3.2 ビューアプログラムの仕様
ビューアプログラムの仕様について記述します。

■ 起動時のコマンドラインパラメータ● "???" ... 表示するファイル を指定します。
● /T??? ... プログラムのキャプションを指定します。
例: C:\Program Files\SfCs\SfCsVw.exe "D:\Data\Test.TIF" /T テストデータの表示■ 表示できるファイル形式● ＴＩＦＦ形式 圧縮なし
修正ＣＣＩＴＴ ＭＨ 圧縮
ＣＣＩＴＴ Ｇ３ ＭＨ 圧縮
ＣＣＩＴＴ Ｇ３ ＭＲ 圧縮
ＰａｃｋＢｉｔｓ 圧縮
Ｃｌａｓｓ Ｆ 圧縮
Ｇ４ 圧縮
ＪＰＥＧ圧縮● ＢＭＰファイル● ＰＣＸファイル● ＤＣＸファイル● ＪＰＥＧファイル● テキストファイル● ＦＡＸファイル
DOS 版 STARFAX で扱われているファイル形式です。

22