既定のプリンタのプリンタ名を取得方法

[戻る]
ぴょん吉 2002/02/12(火) 19:42:11
初心者ですいませんが、どなたか教えてください。

既定のプリンタのプリンタ名を取得する方法を教えて欲しいのです。
いろいろと調べて、APIの「GetDefaultPrinter」というのを見つけたのですが、Win9X系は対
応していないみたいなのです。
その他にもあるみたいなのですが、理解できずに苦しんでおります。
何か、サンプルがあれば理解できるのですが・・・
どうか皆さん、よろしくお願いします。

sugar 2002/02/12(火) 21:48:14
EnumPrinters()の第1引数にPRINTER_ENUM_DEFAULTを指定すると、
デフォルトプリンタの情報が取得できるようです。

[E-Mail] 2002/02/13(水) 10:18:35
Google で[GetDefaultPrinter] と [NT] で検索したら出てきたんで、ご参考に。

http://www.vbvbvb.com/jp/gtips/0351/gGetDefaultPrinter.html
http://n76cd-01p02.ppp11.odn.ad.jp/old/01950.html

ぴょん吉 2002/02/13(水) 10:22:15
[[解決]]
sugar さん、回答ありがとうございます。
「EnumPrinters」をヘルプで調べましたが、Win9X系しかサポートされていないのではないで
しょうか?
ちなみにMSでやっとみつけたのですが、
GetProfileString("windows", "device", ",,,", buffer, sizeof(buffer));
を使えば、OSに依存することなく取得できるみたいです。
そこで、
CString CGet::f_DefaultPrinterName()
{
    DWORD   DRet;
    CString WorkStr;
    char    buffer[MAX_PATH];
    int     ch = ',';
    char    *pdest;
    int     result;

    DRet = GetProfileString("windows", "device", ",,,", buffer, sizeof(buffer));
    pdest = strchr(buffer, ch);
    result = pdest - buffer;

    WorkStr = CString(buffer, result);

    return (WorkStr);
}
という関数を作成したのですが、どうでしょうか?

いちおうは解決したのですが、「EnumPrinters」の使い方を詳しく教えていただけませんでし
ょうか?
よろしくお願いします。

ぴょん吉 2002/02/13(水) 10:26:10
ん さん、回答ありがとうございます。

sugar 2002/02/13(水) 11:32:01
> 「EnumPrinters」をヘルプで調べましたが、
> Win9X系しかサポートされていないのではないでしょうか?
>
そうです。
NT系での取得方法はご存知のようでしたので、Win9X系での取得方法が知りたいのかと。


当方にはWin9X環境がないので動作確認ができないのですが、
こんな感じになるのではないでしょうか。

PRINTER_INFO_5 pi5;
DWORD dwNeeded;
DWORD dwReturned;

EnumPrinters(PRINTER_ENUM_DEFAULT, NULL, 5, (LPBYTE)&pi5,
    sizeof(PRINTER_INFO_5), &dwNeeded, &dwReturned);

ぴょん吉 2002/02/13(水) 12:01:43
[[解決]]
sugar さん、回答ありがとうございます。
試してみたいのですが、時間がないので、
別の機会で試みたいと思います。

古いスレッドには追加発言できません。