過去の桐井戸端BBS (桐ver.8)
10492 シェル実行で別アプリを実行した際のウインドウの制御は可能ですか KH 2001/03/25-11:13
 一括処理でメニューからシェル実行でワードで定型ファイル(調査用紙)を開き印刷しているのですが、
ワードを開いた時桐のメニューの後ろに来てしまうのです。
仕方なくタスクバーのワードをクリックし最前面に表示してから印刷しワード終了→桐のメニューに戻ります。
 メニューはウィンドウ作成→ウィンドウ会話の状態の構成です。
メニューの各ボタンの処理は桐の一括処理に飛んでいくかまたはイベントでの処理です。
メニューは画面にあわせた最大表示になっています。
定型的な調査用紙の印刷の所のみシェル実行でワードを起動して印刷しています。
ワードの該当ファイルの画面を前面にしたいのですが、メニューの後ろになってしまいます。
制御する方法はありますでしょうか。

追伸
 DOSの時にはシステムコマンドで松ファイルをコマンドラインからスイッチを指定してやる事で直接印刷できたのですが。
Winになって出来無いのでこのようなやり方にしています。
全部桐のレポートでやればよいのですが、調査用紙は結構ありますので、不精をしています。
松文書ファイルをレポートに変換することが出きればよいのですが、ちなみに松風なら印刷のスイッチがあるかもと
K3に確認してみましたがダメなようでした。
確認したのはかなり前ですが。

10493 Re:シェル実行で別アプリを実行した際のウインドウの制御は可能ですか 古林 敬一 2001/03/25-15:36
記事番号10492へのコメント
このBBSに初めて書き込みします。古林と申します。

シェル実行コマンドの直後にウィンドウ位置コマンドでメニューを最小化しておき、
タイマーイベントで一定時間後にメニューウィンドウを復元するというのはいかがでしょうか。


古林 敬一

10512 Re:シェル実行で別アプリを実行した際のウインドウの制御は可能ですか KH 2001/03/26-19:28
記事番号10493へのコメント
>シェル実行コマンドの直後にウィンドウ位置コマンドでメニューを最小化しておき、
>タイマーイベントで一定時間後にメニューウィンドウを復元するというのはいかが
>でしょうか。

古林 敬一さんコメントありがとうございました。
 
実は私の不手際で、
「メニューはウィンドウ作成→ウィンドウ会話の状態の構成です。」
の部分は正確ではありませんでした。
実際は、メニューはウィンドウ作成→ウィンドウ会話の状態に更にボタンの階層下の選択はメニュー2を使って
処理を選択しています。
この場合は、ボタンの処理は複数あってその内の調査用紙印刷で前述のようなことが起こります。
もっと正確に言えば、WORDのそのファイルはタスクバー上では桐の上にある状態なのです。
でも、実際には見えないのです。タスクバーのワードをクリックすると最小表示になりなったようになり
もう一度クリックして見えるようになるのです。
 シェル実行前(後ではなく)に最小化して、シェル実行をしても表示されません。
10518 Re:ワードファイルをコマンドライン指定で印刷 Ogo 2001/03/27-10:24
記事番号10492へのコメント

>追伸
> DOSの時にはシステムコマンドで松ファイルをコマンドラインからスイッ
>チを指定してやる事で直接印刷できたのですが。Winになって出来無いので
>このようなやり方にしています。

ワードなら、コマンドライン指定で印刷できますよ。
レジストリを見れば(拡張子の関連づけの画面でも同じ)判るはずですが。

HKEY_CLASSES_ROOT\.doc

の中身は「 Word.Document.8 」なので、それを前提にして、


HKEY_CLASSES_ROOT\Word.Document.8\shell\print\command

を見れば、その中身は「"C:\MS-Office\Office\winword.exe" /x」
ですね(もちろん、インストールパスは違うでしょうが)。

つまり、コマンドラインに /x オプションを付けてやれば、いきなり印刷が始まります。

なお、

HKEY_CLASSES_ROOT\Word.Document.8\shell\printto\command

という関連づけもあって、こちらは /n オプションですね。

この違いは自分で確かめてみて下さい。

ちなみに、関連づけで「OPEN」とか「開く」だけでなく、「印刷」とか「PRINT」「PRINTTO」を持っているファイルは
割合多いです。
もちろん、テキストファイルは全て印刷できる筈です。

桐の場合は、「開く」以外に「再定義」がありますね。

10519 Re:シェル実行で別アプリを実行した際のウインドウの制御は可能ですか Ogo 2001/03/27-10:39
記事番号10512へのコメント

>メニューはウィンドウ作成→ウィンドウ会話の状態に更にボタンの階層下の選択は
>メニュー2を使って処理を選択しています。

メニュー2 <変数名>,<初期値>,(<開始行>,<開始桁>),<表題文字列>,
       <左メニュー並び>,<右メニュー並び>

は「(<開始行>,<開始桁>)」という部分を見て明らかなように、あくまでも、桐5のコンソール表示との互換性のために
残されているだけで、桐8では代替されていくべきコマンドです。

KH さんならば、苦労してメニュー2を使いやすくする方法を考えるよりも、素直にWindows 版の作法を憶えた方が、
後の実りが多いと思いますよ。

# しかし、例えば「簡易メニュー」コマンドならいいと言えるのか……?

10539 Re:素直にWindows 版の作法に従うことにします。 KH 2001/03/27-18:17
記事番号10519へのコメント
>KH さんならば、苦労してメニュー2を使いやすくする方法を考えるよりも、素直に
>Windows 版の作法を憶えた方が、後の実りが多いと思いますよ。
>
># しかし、例えば「簡易メニュー」コマンドならいいと言えるのか……?

 Ogoさんありがとうございます。前にも、同じアドバイスを頂いたように記憶しています。
やはり、コンバートするメニュー2が多くて面倒なため、何とかそのまま利用しようとしていたのですが、
やはり壁にぶつかってしまいます。
アドバイスのように素直にWindows 版の作法に従うことがベストなのがよく分かりました。
ありがとうございます。
10541 Re:ワードファイルをコマンドライン指定で印刷 KH 2001/03/27-18:28
記事番号10518へのコメント
>ワードなら、コマンドライン指定で印刷できますよ。
>レジストリを見れば(拡張子の関連づけの画面でも同じ)判るはずですが。

 Ogoさん、わたしはレジストリを見れません。2度ほどチャレンジしましたが萎えてしまいました。チンプンカンプンです。


>HKEY_CLASSES_ROOT\Word.Document.8\shell\print\command
>
>を見れば、その中身は「"C:\MS-Office\Office\winword.exe" /x」
>ですね(もちろん、インストールパスは違うでしょうが)。
>
 一括処理からシェル実行ではどのように印刷ファイルを指定してやれば良いのかよく分かりません。
それともシステムコマンドを使うのですか。
以下は、一括処理からワードで調査用紙を印刷している部分です。よろしくお願いします。

・・・・・・
シェル実行 "調査用紙1.DOC",起動フォルダ=&DIRP,表示=最大化,&起動チェック
条件(&起動チェック<>0) 分岐 中断
・・・・・・

10543 Re:ワードファイルをコマンドライン指定で印刷 hidetake 2001/03/27-18:52
記事番号10518へのコメント
>つまり、コマンドラインに /x オプションを付けてやれば、いきなり
>印刷が始まります。

Word の起動時の制御は DDE を使っているようですが、これで印刷されますか?

ちなみに /n はマイクロソフトの資料によると
>現在実行している Word とは別に、新規文書を開かずに Word を
>起動します。
>そのため、すでに Word が起動されている場合 Word で文書を開
>いても、その文書の名前はもう一方の Word の [ウィンドウ] メ
>ニューには表示されません。

とあります。何故か /x の説明はありません・・・


10545 Re:ワードファイルをコマンドライン指定で印刷 Ogo 2001/03/27-22:26
記事番号10543へのコメント

>>つまり、コマンドラインに /x オプションを付けてやれば、いきなり
>>印刷が始まります。
>
>Word の起動時の制御は DDE を使っているようですが、
>これで印刷されますか?

あ〜なるほど、と言うことは直ちに結論は出せませんね。 (^^;;

ちょっと、今時間がないので後日に再検証します。

10546 Re:ワードファイルをコマンドライン指定で印刷 hidetake 2001/03/27-22:46
記事番号10545へのコメント
DOC ファイルでもあまり複雑でない Word6/Word95レベルの DOC であれば wordpad,exe も使えるので
これであれば /p オプションで、普通の Windowsアプリケーションと同じように直接印刷することが可能です。

例えば
C:\Program Files\Windows NT\Accessories\wordpad.exe /p hogehoge.doc
と言ったようにコマンドラインで指定します。

桐の「シェル実行」ではオプションを指定できないので、.CMD から「システム」コマンドを使うか、
.KEV からはコマンドボタンを1つ設け「シェル実行」を指定し、メソッド呼び出し 実行() を使うことになります。
また、対象の DOC を任意に指定したい場合は「オブジェクト操作」で、ボタンの機能をその都度変更してあげる
必要があります。


10548 Re:ワードファイルをコマンドライン指定で印刷 hidetake 2001/03/28-00:41
記事番号10546へのコメント
>例えば
>C:\Program Files\Windows NT\Accessories\wordpad.exe /p hogehoge.doc
>と言ったようにコマンドラインで指定します。

ファイルはフルパスで指定します。


また、どうしても Word で無ければならない場合、起動時印刷させるためには WSH(VBS) を使ったり
印刷を行うためのヘルパー(別のソフト)は必要になると思います。タブン

WSH(VBS) であれば次のような感じになると思います。
なお、動作は未確認です。
WSH を桐で実行させるための書き方は前に書いたのでそれを参考にして下さい。

Dim wd
Dim doc
Set wd = Wscript.CreateObject("Word.Application")
wd.Visible=TRUE
Set doc = wd.Documents.Open("x:\xxx\filename.doc")
doc.PrintOut
Set doc = Nothing
Set wd = Nothing


また、別の方法として Word のマクロを使う方法もあると思います。
印刷する文書に印刷して閉じるだけのマクロを組み、起動時にそのマクロを実行するよう /m オプション
を付けて Word を起動する方法です。
起動オプションは
http://www.microsoft.com/JAPAN/support/kb/articles/J048/8/21.htm?LN=JA
&SD=SO&FR=0
にあります。


あと、内蔵のマクロをそのまま呼び出す方法として次のようにコマンドラインを指定し
Word を呼び出す方法もあるようです。
私自信 Word のマクロなんて初めて見たものですから、今ひとつ良い方法が思う浮かばず、
必ずファイルを保存しなければならないようで、タイムスタンプが変わりあまり美しくありませんが・・・

C:\Program Files\Microsoft Office\Office\WINWORD.EXE /n
/mFilePrintDefault /mFileSave /mFileExit d:\data\doc\hogehoge.doc

と言うように、/m で内部マクロを列記する方法です。
上記のマクロは「デフォルトで印刷」「ファイルを保存」
「ファイルを閉じる」と言う一連の作業を行うものです。
これが正しい指定かどうかわかりませんが、Windows2000+ Word2000 で取り敢えず巧く動作しました。
もっとスマートな方法は、Word なり MS 製品に詳しい場所で聞いた方が良いかも知れません (^_^;

10559 Re:ワードファイルをコマンドライン指定で印刷 KH 2001/03/28-23:25
記事番号10548へのコメント
>あと、内蔵のマクロをそのまま呼び出す方法として次の
>ようにコマンドラインを指定し Word を呼び出す方法も
>あるようです。私自信 Word のマクロなんて初めて見た
>ものですから、今ひとつ良い方法が思う浮かばず、必ず
>ファイルを保存しなければならないようで、タイムスタ
>ンプが変わりあまり美しくありませんが・・・
>
>C:\Program Files\Microsoft Office\Office\WINWORD.EXE /n
>/mFilePrintDefault /mFileSave /mFileExit d:\data\doc\hogehoge.doc
>
>と言うように、/m で内部マクロを列記する方法です。
>上記のマクロは「デフォルトで印刷」「ファイルを保存」
>「ファイルを閉じる」と言う一連の作業を行うものです。
>これが正しい指定かどうかわかりませんが、Windows2000
>+ Word2000 で取り敢えず巧く動作しました。
>もっとスマートな方法は、Word なり MS 製品に詳しい
>場所で聞いた方が良いかも知れません (^_^;

hidetakeさん多方面からのアドバイスありがとうございました。
自分としてはDOSの時に一番近い上記の部分でトライしてみました。
具体的なコマンドマクロ記述をして頂いたので、そちらをシステムコマンドで試してみましたが
上手く直接印刷(ワード上でメッセージあり)に行ったようです。
以下が、上手く実行した部分です。
ご丁寧な説明ありがとうございました。またよろしくお願いします。

・・・・・
システム"C:\Program Files\Microsoft Office\Office\WINWORD.EXE"," /n /mFilePrintDefault /mFileSave /mFileExit d:\kv8testv\cmd\
調査用紙1.doc",起動フォルダ=&DIRP,自動クローズ=する,フルスクリーン表示=する,&起動チェック
条件(&起動チェック<>0) 分岐 中断
・・・・・
10560 Re:ワードファイルをコマンドライン指定で印刷 hidetake 2001/03/28-23:42
記事番号10559へのコメント
KHさん、うまくいって何よりです。 (^_^)

あと気になったののが「ワード上でメッセージあり」の部分ですが、完全に無人で印刷され、Word もそのまま終了し
桐に戻ってきたのでしょうか?
それとも、Word から何かメッセージが出て、手作業で操作を加えなければならなかったのでしょうか?

もし、上記方式をとった場合、1つだけ気になる部分があるのですが、
Word の設定で「バックグラウンド印刷」を有効にしている場合、印刷している最中なのに Wordを終了しようとして
警告が表示される場合があるかも知れません。
その場合は「ツール」の「オプション」で「バックグラウンドで印刷する」のチェックを外して下さい。


あと、
もし、Word 自体にマクロを組み込む方法を使う場合はNormal.dot に次のようなマクロを組み込み、
起動時 /m
で実行すれば良いと思います。

Sub PrintMacro()
ActiveDocument.PrintOut (False)
Application.Quit (wdDoNotSaveChanges)
End Sub

上記マクロは「バックグラウンド印刷なしで印刷する」「Word を保存なしで終了する」と言うだけの簡単なものです。


10563 Re:ご指摘のとおりでした。ありがとうございます。 KH 2001/03/29-08:28
記事番号10560へのコメント
>あと気になったののが「ワード上でメッセージあり」の
>部分ですが、完全に無人で印刷され、Word もそのまま
>終了し桐に戻ってきたのでしょうか?
>それとも、Word から何かメッセージが出て、手作業で
>操作を加えなければならなかったのでしょうか?
>
>もし、上記方式をとった場合、1つだけ気になる部分が
>あるのですが、Word の設定で「バックグラウンド印刷」
>を有効にしている場合、印刷している最中なのに Word
>を終了しようとして警告が表示される場合があるかも
>知れません。その場合は「ツール」の「オプション」で
>「バックグラウンドで印刷する」のチェックを外して
>下さい。
>
hidetakeさん何から何まで本当にありがとうございます。
上記ご指摘のとおりでした。

メッセージは桐のメッセージボックス状態で?マークでした。
内容は、「印刷中です。Wordを終了すると印刷待ちのすべてのジョブがキャンセルされます。Wordを終了しますか?」

「はい  いいえ」

ここで、いいえをクリックし、印刷を実行しました。

ご指摘とおり、「バックグラウンドで印刷する」にチェックは行っていましたので、はずしましたら、
メッセージ無く印刷(通常の印刷中のメッセージは出ます)をして、桐のメニューに戻りました。
処理もものすごく早くなりました。
本当にありがとうございました。
前の状態でも、メニュー2を使っているにもかかわらず最前面に表示されていましたし、いいえのクリックで
(メッセージをロクに読まずハイを押したくなるのですが)処理できたので、私にとって十分過ぎるくらいの前進でした。
テストしたのは自宅のスタンドアロンですので、職場でテストして、ネットワーク上でもし何かありましたら、
虫の良い話ですが、またご教示ください。よろしくお願いします。

戻る