CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

通常使うプリンタを取得する

投稿日:

通常使うプリンターを取得する方法をいくつか挙げる。
①GetDefaultPrinter
TCHAR printerName[1024];
DWORD dwBufferSize = 1024;
BOOL bRet = GetDefaultPrinter(printerName, &dwBufferSize);
②CPrintDialog::GetDefaults
CPrintDialog pd(TRUE);
pd.GetDefaults();
DEVNAMES* pDevNames;
if( pDevNames = (DEVNAMES*)GlobalLock( pd.m_pd.hDevNames ) )
{
TCHAR* pbuff = (TCHAR*)pDevNames;
TCHAR* pPrinterName = pbuff+pDevNames->wDeviceOffset
GlobalUnlock( pd.m_pd.hDevNames );
GlobalFree( pd.m_pd.hDevNames );
}
③CWinApp::GetPrinterDeviceDefaults
PRINTDLG prn;
pApp->GetPrinterDeviceDefaults( &prn );
DEVNAMES* pDevNames = (DEVNAMES*)GlobalLock( prn.hDevNames );
{
TCHAR* pbuff = (TCHAR*)pDevNames;
TCHAR* pPrinterName = pbuff+pDevNames->wDeviceOffset
GlobalUnlock( pd.m_pd.hDevNames );
GlobalFree( pd.m_pd.hDevNames );
}
④GetProfileString
TCHAR buffer[1024];
::GetProfileString(_T(“windows”), _T(“device”), _T(“,,,”), buffer, sizeof(buffer));
TCHAR* printerName = wcstok(buffer, L”,”);
①~③は今現在通用するちゃんとした方法だ。
④はかなりあやしい方法。
win.iniのwindowsセクションのdeviceから情報を取得するなんて書いてあったけれども、win.iniなんてWindows 10環境においては、ほとんど何にも書いていなかった。それでも実際に動かしたら、以下のような情報が取得できたのだった。
EPSON LP-S300,winspool,Ne04:
ドキュメントを読む限り、Win9x時代の遺物感があるが、互換性のために残された使える方法なのかもしれない。①から③の方法が使えない場合には使ってみよう。しかし、いつか使えなくなるかもしれないというリスクを負わなければならないだろう。

-ソフト開発
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

zipcopy Ver1.05リリース

zipcopyをリビジョンアップして、Ver1.05とした。 詳細は以下の通り。 Ver1.05 2019/9/30 ・7zip使用でない(DotNetZip)場合に、4GB以上のzipへの圧縮ができ …

秀丸マクロ第3弾は「指定した列数、レコード数でCSVファイルを作る」

秀丸マクロがおもしろいという記事を書いて以来、何か要件はないだろうかとさがしていた。 秀丸マクロがおもしろくて練習のため2つのマクロを作ってみた 「指定した列数、レコード数でCSVファイルを作る」なん …

no image

CADツール第2弾

 PMツールに続いてのCADツール第2弾を思いつきました。今まで、いくつかの企画があり、手をつけたものもあるのですが、いまいち乗り気にならなくてポシャってました。シリーズものとして継続したいところなの …

no image

プログラムっておもしろいなぁとつくづく思うなり

ここんところぜんぜんプログラムを書いてなくて仕事がつまんなくなってきたところに、トラブル対応があってプログラムをじっくりと書いてみた。いやはやおもしろい。余計な仕事が飛び込んでこない環境で、スピッツ聞 …

no image

C++

プログラム言語で唯一まともに使えるのがC++だったりするおいらなわけだが、 C++のことをずいぶん知っているかというとそうでもなかったりする。 absという関数があって、絶対値を求めるものだっていうの …