[リストへもどる]
一括表示

投稿時間:2004/02/18(Wed) 11:52
投稿者名:匿名
Eメール:
URL :
タイトル:
プリンターポートの追加:ネットワーク経由
始めまして

過去ログにADDPORTについて書いてあったのですが、ダイアログ表示関数ではありません。
portを追加できます。
現在ADDPORTEx関数を使い、ローカルのポートの追加はできているのですが、モニタ名LPRを使用してのプリンタポートができません。
ネットも探しましたがないようでした(海外も

参考にしたページは
http://flyersim.com.ne.kr/code/system/addports.htm
で、デフォルトでローカル指定になってました。

AddPortEx関数は
ByVal pName As String:サーバー名(?)
ByVal pLevel As Long:(?)1 Or 2
lpBuffer As Any:構造体
ByVal pMonitorName As String:モニタ名

で、lpBuffer内は構造体で、
pPortName As String:ポート名
pMonitorName As String:モニタ名
pDescription As String:詳細
fPortType As Long:ポート型
Reserved As Long:未使用(?)

と言った感じになっております。
ローカルポートは作成できたので、多分パラメータの指定方法が間違っているのかと思います。
正しい使い方をご存知の方がいらっしゃいましたら、ご教授願います。

投稿時間:2004/02/18(Wed) 12:24
投稿者名:匿名
Eメール:
URL :
タイトル:
Re: プリンターポートの追加:ネットワーク経由・・追記です
環境忘れていました。
OS:WinNT4.0
VB Ver:6.0_SP5
になります。
ポート追加のモジュールを使用して、プリンタをインストールしようとしています。
インストールするマシンの環境等はすべて統一して、WinNT4.0で行います。
また、ネットワーク系統も同環境で統一しています。

ADDPORTの過去ログでは、
「ポート追加はハードやドライバに依存するのでAPI関数のみのレベルで追加するものではない」

という記述がされていましたが、
統一された環境下内の話であれば、APIだけでも良いと思いますので、質問させて頂きました。

以上です。何卒よろしく願います。

投稿時間:2004/02/18(Wed) 14:28
投稿者名:匿名
Eメール:
URL :
タイトル:
訂正
訂正
ADDPORTに関して
ダイアログボックスが表示されました。
「ポート名入力」ダイアログが表示されます。
未確認の発言、申し訳ないです。

投稿時間:2004/02/19(Thu) 10:57
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
Re: プリンターポートの追加:ネットワーク経由
とりあえず、ポートの接続先サーバーへの
"SERVER_ACCESS_ADMINISTER"
アクセス権を持っているかどうかをチェックしてみるとか。
# ついでに、Err.LastDllErrorプロパティも。

投稿時間:2004/02/19(Thu) 12:58
投稿者名:匿名
Eメール:
URL :
タイトル:
Re^2: プリンターポートの追加:ネットワーク経由
返信ありがとうございます

手動で、ポートの追加〜プリンタインストールまでできているので、権限は問題ないと思います。

正確には、LAN上のプリンタを使用していて、
ウィザードで説明すると、
「このコンピュータで管理」を選択し
「ポートの追加」
「LPR Port」
「新しいポート」
で、上の欄にプリンターのアドレスを指定し、下の欄にプリンタのホスト名を入力して、
ポートを登録しています。

それと、以前参考にしていたページなのですが、レベル2構造体が間違っている気がするのですが・・・?
pPortNameって、文字列の先頭ポインターを入れるのではないかと思いますが、構造体では、stringになっている・・・?

EnumPort(登録済ポートを列挙する)では同じ構造で、中身は全部long型になっています。

そこが違うのかと思い、今、メモリ操作のやり方を勉強中です

投稿時間:2004/02/19(Thu) 13:43
投稿者名:匿名
Eメール:
URL :
タイトル:
Re^3: プリンターポートの追加:ネットワーク経由
結果です。
HPに載っている構造体の時と、全部ロングにして、メモリ操作した時とのエラーコードから、メッセージを取得したところ
両方とも
エラーコード:124で
エラー内容:システム コール レベルに誤りがあります。
となっていました。

関数の呼び出しが間違っている・・と言うことでしょうか?

投稿時間:2004/02/19(Thu) 17:29
投稿者名:匿名
Eメール:
URL :
タイトル:
Re^4: プリンターポートの追加:ネットワーク経由
構造体2(PORT_INFO_2)を使用してのローカルポートの設定ができていない状況です。
現在、使用している構造体は
Public Type PORT_INFO_2
    pPortName                   As Long
    pMonitorName                As Long
    pDescription                As Long
    fPortType                   As Long
    Reserved                    As Long
End Type

Public Type PORT_INFO_2S
    pPortName As String
    pMonitorName As String
    pDescription As String
    fPortType As Long
    Reserved As Long
End Type

を両方使用しています。

PORT_INFO_2Sの方は
Port2.pPortName ="LPT4:"
success = AddPortEx(vbNullString, 2, Port2, "Local Port")
エラーコード:124

PORT_INFO_2の方では
bytPortBuffer() = StrConv(文字列, vbByte)
MoveMemory PORT_INFO_2(0).格納先, bytPortBuffer(0), UBound(bytPortBuffer)
の形でやるパターンA
この場合、文字列に格納される値は"L・o・c・a・l P・o・r・t・"となります。"・"はNullchar
こちらも
エラーコード:124


パターンBは
bytPortBuffer() = StrConv(文字列, vbByte)
の後に、
ある関数(bytPortBuffer())で
中にNullcharがあれば、詰めて行き、最後に配列を縮小すると言う処理をしています。
配列自体が、戻り値になります。
その後に
MoveMemory PORT_INFO_2(0).格納先, bytPortBuffer(0), UBound(bytPortBuffer)
格納しています。("Local Port"になる)
結果の文字列は実際にメッセージで出力しています(文字列に戻す関数使用)
ちなみにこちらも
エラーコード:124


というのを、PORT_INFO_2構造体の3つのパラメータについて行っております。
  .pPortName
  .pMonitorName
  .pDescription

のこりの部分は
  .fPortType
    0〜16までの値を格納(Loopにて)
  .Reserve
    0しか入れてはならないそうです(ヘルプ参照)