tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルPrinters.DeviceNameの表示順
記事No13304
投稿日: 2008/12/18(Thu) 09:29
投稿者ponta
上手く検索出来ませんでしたので、質問させて下さい。

下記コードにてリストボックスにプリンター名を取得する場合、
どのような基準で取得される順番が決まるのでしょうか?

Dim objPrinter As Object
Dim c AS Long
For Each objPrinter In Printers
    List1.AddItem Format$(c,"00") + ")" + objprinter.DeviceName
    c = c + 1
Next objprinter

ちなみに、
EPSON LP-1400
EPSON LP-2500
EPSON PM-G860
VP-4200
というプリンターが登録されているPCでは、
上記コードの出力結果は以下の通りでした。
00)VP-4200
01)EPSON PM-G860
02)EPSON LP-2500
03)EPSON LP-1400

何故、このような質問をしたのかと言いますと、
偶然でしょうが、VP-4200をインストールするまでは、
EPSON PM-G860がリストの最上位に表示されていたのですが、
それがVP-4200になってしまったからですが、
理由が分かれば、再度、EPSON PM-G860を最上位にしたいのです。
ただし、プリンター名称は一定でないため、
名称では指定出来ないのです。
(PM-G860やG860、EPSONなど様々です)

どうかお知恵をお貸し下さい、宜しくお願いします。

[ツリー表示へ]
タイトルRe: Printers.DeviceNameの表示順
記事No13305
投稿日: 2008/12/19(Fri) 12:14
投稿者K.J.K.
> 下記コードにてリストボックスにプリンター名を取得する場合、
> どのような基準で取得される順番が決まるのでしょうか?

公開されている情報では存在しないと思われます。

> EPSON PM-G860がリストの最上位に表示されていたのですが、
> それがVP-4200になってしまったからですが、
> 理由が分かれば、再度、EPSON PM-G860を最上位にしたいのです。
> ただし、プリンター名称は一定でないため、
> 名称では指定出来ないのです。
> (PM-G860やG860、EPSONなど様々です)

それは仕様を見直すべきではないかと。並び替えの規則がコード化
できないようならば、順番に依存するのは止めましょう。
前回選択したアイテムをレジストリなどに書き込んでおいて、
次回起動時に、プリンタ列挙後そのアイテムを選択しておけば
いいのではないでしょうか。

[ツリー表示へ]
タイトルRe^2: Printers.DeviceNameの表示順
記事No13308
投稿日: 2008/12/22(Mon) 07:35
投稿者ponta
K.J.K.様、お返事ありがとうございます。

>公開されている情報では存在しないと思われます。
やはりそうですか、残念です。

>それは仕様を見直すべきではないかと。
そうですね、手抜きは良くないと思ってはいるのですが、楽が出来るならばと、つい思ってしまうのも現実です。。。
とは言っても、手抜きが出来ないならば、仕様を見直すほかありませんね。

情報提供、ありがとうございました。

[ツリー表示へ]