• ベストアンサー

WIN32API『EnumPrinters』に関して

はじめまして。 大変困っております。 WIN32APIの『EnumPrinters』を使用して、コンピュータ上に登録されているプリンタの一覧を表示するプログラムを作っております。 プリンタの登録数が50個以上になるとプログラムがハングアップします。『EnumPrinters』の情報(障害情報も含む)があまりにも少なすぎて、困っております。

質問者が選んだベストアンサー

  • ベストアンサー
  • takama
  • ベストアンサー率20% (1/5)
回答No.1

たしかに、EnumPrintersに関する情報は少ないかもしれませんね。 どのような処理を記述しているのか、そしてどういうエラーなのかがわからないので 的を得た回答ではないかもしれませんが、一応思いつくことを書きます。 EnumPrinterにはプリンタの情報を呼び元で捕捉した領域に書き込みますが、この 領域が少ないとエラーになって、その際には必要な領域の数を返します。なので、 戻り値がエラーになったら、再度mallocとかでプリンタの情報を格納する領域を 捕捉しなおして再度EnumPrintersを起動すれば回避できるものと思われます。

関連するQ&A

  • api-ms-win-core…libがないため…

    こんにちは。 Windows7(SP1)にて、とあるプログラムを動かそうとした際、 「コンピューターに api-ms-win-core-libraryloader-l1-1-1.dll がないため、プログラムを開始できません。」 とエラー表示され、プログラムが起動できません。 ネットで調べ、「Visual Studio 2015 の Visual C++ 再頒布可能パッケージ」もインストールしてみたのですが、状況は変わらず。 後何を試せばよろしいでしょう? よろしくお願いいたします。

  • Win32APIでシリアル通信をするには?

    Win32APIとVB.NETを使ってシリアル通信をするプログラミングを考えています。概要はGPS端末からのデータをVBで受信して表示できるようなプログラムを目指していますが、APIの使い方が分からないので詳しく教えていただける方がいましたら、サンプルソースまたは参考Webサイトの教示をお願いします。 VB6.0のクラス(MSComm)を追加する方法ではなく、APIを使う方向で回答お願いします。

  • Windows2000のAPIの使い方について

    以前、Win95、NT開発環境でAPI関数のGetOpenFileNameを使用し、 ファイルを選択するダイアログを表示するようなプログラムをVBAで作りました。 Win95、NTでは正常に動作するのですが、 Win2000ワークステーションではダイアログが表示されません。エラーもでません。2000では構造体が3つ追加されていることはわかったのですが、 実際プログラミングしてみたところ正常に作動しません。 いろいろ調べたのですがよく分からないので、サンプルのプログラム等を教えていただきたいのですが・・・。よろしくお願いします。

  • WIN32API CreateFileのCOMx

    WIN32API CreateFile(…"COMx"…)のCOM番号「x」)は、1~256まで可能ですか。 MS-VC++でRS-232C通信のWIN32アプリケーションを作る必要が生じてきました。 VC++6.0やVS2005のシステムは所有していますが、WIN32アプリは初心者です。 (WIN32アプリが出来たらDLLに改造するつもりです。) http://www.saluteweb.net/~oss_winapi232.html ここにどなたかが、サンプルプログラムをアップされてます。 この中の("COM1")は、"COM1"~"COM256"まで、対応しているんでしょうか。

  • Win32APIの座標表示

     Win32APIを使用して録音した音のX軸(時間)、Y軸(音量)とする座標を表示したいのですが、waveIn関数で録音した後の座標表示がよくわかりません。調べたものではウィンドウ画面の座標を表すものばかりでした。  音の数値データを座標に表せる方法など、関係しそうなことを知っていましたらなんでもいいのでたくさんの情報提供をお願いします。

  • Win32 APIのAddForm()はドライバにない用紙サイズ指定可能?

    自作ソフトで、宛名ラベルなど印刷しています。 開発ソフトは、CやC++などではなく、ARAGOというマイナーなソフトです。 宛名ラべルは、「連続紙 10X10インチ6分割」に相当する寸法です。 ところが、使用するプリンタ EPSON VP-870 のプリンタドライバの用紙リストには、そのサイズがありません。 Win32 APIに、AddForm() という関数がありますが、これは、「連続紙 10X10インチ6分割」というような用紙サイズを登録できるのでしょうか。 登録できるなら、VBで、その設定プログラム作ろうかと思ってます。 自作しなくても、その手のツールでもありましたら、ご紹介ください。

  • API???

    いつも、ありがとうございます。 コンピュータ関連のAPIという概念がよく解りません。 Wikipedia等でも調べてみたのですが、恥ずかしながら 理解できませんでした…システム開発をするための ツールなのかなぁ?と、何となく思ってはいるのですが…。 書店でプログラムに関する書籍がありますが、APIという ものは、C言語やVisualBasicのような開発言語を指すもの なのでしょうか? プリンタやマウスなどの周辺機器を制御する「ドライバ」 とは違うような気はするのですが…。 高校生でもイメージしやすい例でご教示頂けると幸いです。 よろしくお願いします。 そもそも、この質問自体がカテゴリエラーであれば、どこが 適切かをアドバイス下さい。

  • スクリーンからはみ出ないポップアップ(win32api)

    win32apiでアプリケーションを作っています。 右クリックしたときに表示されるポップアップメニューがスクリーンからはみ出ないように、右クリックされた時にポップアップがはみ出るようならポップアップの位置を調整する、ということをしたいです。 その為には表示されるポップアップのサイズが分からないといけないのですが、ポップアップのサイズを得る方法はありますか?大体でやってしまってもあまり問題はないかもしれませんが。 回答よろしくお願いします。

  • Win32APIで入力した数値を反映させたアプリケーションを動かすにはどうすればよいでしょうか?

    C++をはじめたばかりなのですが、waveout関数に興味を持ち、今現在勉強中です。 http://www13.plala.or.jp/kymats/study/MULTIMEDIA/waveOut_stereo_16.cppに載っているサンプルをhttp://oshiete1.goo.ne.jp/qa5223409.htmlで頂いたアドバイスを参考にして、「CPad for Borland C++ Compiler」でも警告なしでコンパイルできるようにしました。 サンプルでは、 >#define F 400 //周波数(1秒間の波形数) で周波数が設定されてあります。 これを、ユーザがキーボードで数値を入力して自由に周波数を設定できるように変更しようと思いました。 コマンドプロンプトで数値を入力するのではなく、新しくウィンドウを開いて、数値を入力するためのボックスを開きたいと思います。 ですが、これをC++とWin32APIで実行するための専用の関数が見当たりません。 たとえば、『C/C++によるWin32API -APIサンプル集(http://homepage1.nifty.com/MADIA/vc/api/)』にあるサンプルプログラムを拝見させていただいたのですが、発見することができませんでした。予め設定された選択肢から選択するメニューについては紹介されていたのですが、入力フォームを作る方法については紹介されていなかったように思えます。 Win32APIで数値を入力して >#define F 400 の「400」の部分を変えるためには、どのようにすればよいでしょうか?

  • Amazon APIについて

    amazon APIを使用してデータの取得をするプログラムをつくりました(言語はrubyです)が、 amazonにデータをuploadする方法がわかりません。 どこにそういう情報がありますでしょうか?

専門家に質問してみよう