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

投稿時間:2004/02/10(Tue) 16:30
投稿者名:dai
URL :
タイトル:
ここで公開されている印刷処理について
daiです。

印刷処理で、こちらで公開されている「印刷関係」の「プリンタ設定ダイアログボックスを表示(API
を使って)その2」のサンプルを用いて開発しているのですが、プロパティウィンドウを開く時にこの
ウィンドウをモーダル形式で開くことはできないのでしょうか?

ご教授よろしくお願いします。

投稿時間:2004/02/10(Tue) 16:58
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: ここで公開されている印刷処理について
0 以外ならモーダルのようですが?
詳しくは下記で調べて下さい。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shinvokeprintercommand.asp

投稿時間:2004/02/10(Tue) 17:03
投稿者名:dai
URL :
タイトル:
Re^2: ここで公開されている印刷処理について
daiです。

> 0 以外ならモーダルのようですが?
> 詳しくは下記で調べて下さい。

私も調べて大丈夫なのかなと思っていたのですが、うまくいきませんでした。
以下のソースにしています。

lngRet = SHInvokePrinterCommand(Me.hWnd, PRINTACTION_DOCUMENTDEFAULTS, _
                                 strDevName, vbNullString, 1)

これでは、まずいんですかね?

投稿時間:2004/02/11(Wed) 21:30
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: ここで公開されている印刷処理について
>  lngRet = SHInvokePrinterCommand(Me.hWnd, PRINTACTION_DOCUMENTDEFAULTS, _
>                                  strDevName, vbNullString, 1)

Windows98 ならそれで モーダル になり 0 ならモードレスにちゃんとなりますので
方法は間違っていないと思うのですが、WindowsXP 系では 有効にならないようです。
vbSystemModal 等も試してみましたが。
英語圏のサイトでも探してみれば何か解るかも知れませんが、私は日本語もおぼつかない
状態なのでこれ以上は?<m(__)m>

投稿時間:2004/02/12(Thu) 09:04
投稿者名:dai
URL :
タイトル:
Re^4: ここで公開されている印刷処理について
daiです。

> Windows98 ならそれで モーダル になり 0 ならモードレスにちゃんとなりますので
> 方法は間違っていないと思うのですが、WindowsXP 系では 有効にならないようです。

Win98で試したら、モーダルで表示されました。自分も英語はおぼつかないので、これ以上はきつそうで
すね。別方法を探してみたいと思います。

花ちゃん 様にご質問なのですが、VBでNT系でも問題なく印刷処理を行う方法とかというのは何かご存
知でしょうか?このAPIを使用すると大丈夫だよみたいなのは・・・

もし、よろしければご教授ください。よろしくお願いします。

投稿時間:2004/02/12(Thu) 11:25
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: ここで公開されている印刷処理について
> 花ちゃん 様にご質問なのですが、VBでNT系でも問題なく印刷処理を行う方法とかというのは何かご存
> 知でしょうか?このAPIを使用すると大丈夫だよみたいなのは・・・

NT は使った事がありませんので、詳しくは知りませんが
プリンターの設定をする場合、プリンタのアクセス権を設定をする必要があるようです。
従って、印刷関係の処理(用紙サイズ・印刷部数・印刷方向等)はAPIを使って設定した
方が無難なようです。(APIと併用するのもウンヌンとどこかに書いてあったような)
私は、OpenPrinter GetPrinter MoveMemory SetPrinter ClosePrinter のAPIを使って
関数化しております。(サンプルNo.242 未掲載)

投稿時間:2004/02/12(Thu) 11:40
投稿者名:dai
URL :
タイトル:
Re^6: ここで公開されている印刷処理について
daiです。

> プリンターの設定をする場合、プリンタのアクセス権を設定をする必要があるようです。
> 従って、印刷関係の処理(用紙サイズ・印刷部数・印刷方向等)はAPIを使って設定した
> 方が無難なようです。(APIと併用するのもウンヌンとどこかに書いてあったような)
> 私は、OpenPrinter GetPrinter MoveMemory SetPrinter ClosePrinter のAPIを使って
> 関数化しております。(サンプルNo.242 未掲載)

そういう方法があるんですね。このサンプルは未掲載ということですが、よろしければ掲載していただ
くと非常にうれしいです。
今後ともよろしくお願いします。

投稿時間:2004/02/12(Thu) 11:15
投稿者名:dai
URL :
タイトル:
一応、解決!?
daiです。

SHInvokePrinterCommand()の引数指定を以下のようにしたらなぜかモーダルで表示されました。(原因は不明・・・)

変更前のソース
 lngRet=SHInvokePrinterCommand(Me.hWnd, PRINTACTION_DOCUMENTDEFAULTS, strDevName,vbNullString, 1)

変更後のソース
 lngRet=SHInvokePrinterCommand(Me.hWnd, PRINTACTION_DOCUMENTDEFAULTS, strDevName,"",1)

MSDNのヘルプを参照したところ、「PRINTACTION_DOCUMENTDEFAULTS」を指定したとき、第4引数の値を無視するというような英語の記述があったので、空白文字にしてみたらモーダルで表示されたという現状です。

いろいろご迷惑をおかけしましたが、ありがとうございました。

投稿時間:2004/02/12(Thu) 13:16
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 一応、解決!?
> MSDNのヘルプを参照したところ、「PRINTACTION_DOCUMENTDEFAULTS」を指定したとき、第4引数の値を無視するというような英語の記述があったので、空白文字にしてみたらモーダルで表示されたという現状です。

情報ありがとうございます。
vbNullString ではだめで vbNull や "abc" 等何か設定されていたらいいようですね。
それと uAction が  PRINTACTION_DOCUMENTDEFAULTS でないと有効にならないようですね。
fModal の設定は 0 でも 1 でもWinXP系では関係ないようですね。
Win98 では uAction の定数 PRINTACTION_DOCUMENTDEFAULTS は使用できないようです。
従って OSによって使い分けする必要があるようです。
掲載しているサンプルにも情報を追加しておきます。