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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

PDFの用紙サイズはポイントで表現されている

PDFの用紙サイズをiTexSharpで取得したら、mmでもinchでもない、 謎の数値が得られたので、調べてみたらポイントという単位だった。 ポイントとは、WordやEXCELで文字の大きさを指定す …

VisualStudioのアイコンエディタはクソで、Paint.NETが素晴らしいじゃん

アプリケーションエンジニアならicoファイルを自由自在に作れるかっていうとそうでもなくて、今までだましだまし適当に作っていた。Photoshopなんかで画像を作るとこまではいいんだけど、それをVisu …

no image

いたちごっこ1

ソフト開発者とクラッカー。その果てしない戦いの日々をここに記します。現在進行形のその戦いに終止符を打つべく、努力を重ねている今、臨場感をもって伝えられれば、と思います。 その前に、「いたちごっこ」とい …

no image

PDF印刷のアプリ指定

PCにAdobe ReaderとAcrobatの両方が入っている場合、PDFファイルを 右クリックメニューから印刷ってやると、どっちで印刷されるのか? Windows XPまでは、拡張子の関連付けのと …

VCランタイムのバージョン

VCランタイムのバージョンは数多くあって、まずは年号の数字的な違いから明らかにしていく。 最新はこんな風に、2015・2017・2019・2022の4つのバージョンを包含した名前になっている。 Mic …