田楽DLLの「RUN」関数についてNo.00125
vickwei さん 04/02/04 16:21
 
 田楽DLLに関する質問です。

 田楽DLLの「RUN/MAXRUN/ICONRUN/HIDERUN」関数を使わせていた
だき、コマンドライプログラムを起動して、そこで処理させた結果
を秀丸で開こうとしています。そこで、次ようなマクロを作ってみ
ました。

$file1 = "C:\\Temp\\file1.tmp";
$file2 = "C:\\Temp\\file2.tmp";
loaddll hidemarudir + "\\DengakuDLL.dll";
$s = "cmd /c AABB.EXE " + $file1 + " > " + $file2;
#n = dllfunc("ICONRUN",$s);
openfile $filename2;
freedll;

 ところがこれだと、「AABB.EXE」の処理が終わる前に「openfile
」をやってしまい、規の「file2.tmp」が開いたり、あるいは「他
のプロセスによって上書きが禁止されていす」といったエラーメッ
セージが出たりします。
 秀丸マクロの「runsync/runsync2」のように、起動したコマンド
が終了するまでマクの実行を待機させるということは可能でしょう
か。

 そのまま素直に「runsync/runsync2」文を使えばうまくいくので
すが、コマンドプロプトが一瞬画面に現れるのを何とかしたいと思
いまして…。

 よろしくお願いします。

[ ]
RE:00125 田楽DLLの「RUN」関数についてNo.00126
vickwei さん 04/02/04 16:26
 
> openfile $filename2;

 「openfile $file2;」の間違いでした。あといくつかタイプミス
があり見苦しくてすみません。

[ ]
RE:00126 田楽DLLの「RUN」関数についてNo.00127
杉浦 まさき さん 04/02/04 22:00
 
vickwei さん、こんばんは。
田楽DLLの作者の杉浦 まさきです。

お尋ねの件ですが、結論から申しますと田楽DLLには
秀丸マクロの「runsync(2,3)」に相当する関数は用意さ
れていません。ただ、実装するのは簡単なので次のバー
ジョンアップの際のネタにしたいと思います。

#田楽DLL固有の話題については僕のホームページの
 サポート会議室の方で発言して頂くと助かります。
 http://www.ceres.dti.ne.jp/~sugiura/

[ ]
RE:00127 田楽DLLの「RUN」関数についてNo.00128
杉浦 まさき さん 04/02/04 22:03
 
>秀丸マクロの「runsync(2,3)」に相当する関数は用意さ

runsync3 はなかったですね(^^;。寝ぼけてましたm(_ _)m。
あと、runsync については実装するかどうか検討させてください。
#他人様のプロセスのウィンドウを勝手にアイコン化するのは
 どうかと思うので。。。

[ ]
RE:00128 田楽DLLの「RUN」関数についてNo.00129
vickwei さん 04/02/04 22:52
 
 杉浦さま、早速どうもありがとうございました。

 runsync について実装するか否か御検討いただけるとのこと、ありがとうござ
います。もし実装して頂ければ、私としてはとてもありがたいです。よろしくお
願いします。

> #田楽DLL固有の話題については僕のホームページの
>  サポート会議室の方で発言して頂くと助かります。

 申し訳ありません。何度かアクセスしてみたのですが、「BBS管理者のページ
からリンクしてください。アクセスは拒否されました。」というメッセージが出
てしまい入れませんでした。

[ ]
RE:00125 田楽DLLの「RUN」関数についてNo.00130
h-tom さん 04/02/04 23:28
 

h-tom です。

> そのまま素直に「runsync/runsync2」文を使えばうまくいくので
>すが、コマンドプロプトが一瞬画面に現れるのを何とかしたいと思
>いまして…。
ファイルにリダイレクトしているんですよね?
その場合、素直にrun文で実行すればいいのでは?

マクロのヘルプにも
>run文は[その他]-[プログラム実行]と同様に標準入出力のリダイレクトが
>可能です。もし起動するプログラムの標準出力がリダイレクトされている
>場合、run文はrunsync文同様に、待機するようになります。runsync文と
>runsync2文はリダイレクトはできません。
とありますし?
もしかしたら実行するプログラムにもよるかもしれませんが・・・。

ちなみにrun文だとコマンドプロンプトが表示されませんが、
----ここから
$file = "C:\\temp\\out.txt";
run "cmd.exe /c dir > " + $file;
openfile $file;
----ここまで

runsync使うと一瞬コマンドプロンプトが開きますね。
----ここから
$file = "C:\\temp\\out.txt";
runsync "cmd.exe /c dir > " + $file;
openfile $file;
----ここまで

[ ]
RE:00130 田楽DLLの「RUN」関数についてNo.00131
vickwei さん 04/02/05 00:06
 
 h-tom さま、お教えを頂きありがとうございました。

 いまやってみたところ、おっしゃるようにrun文だとコマンドプロンプトが表
示されず、希望の動作になりました。

 リダイレクトの場合「run文はrunsync文同様に、待機する」ということ、ヘル
プを読み飛ばしていたようです。以前なにかのマクロで「run」を使ってうまく
いかず、「runsync/runsync2」に変えたらうまくいったことがあり、それがトラ
ウマになって外部プログラム実行だとなんでもかんでも「runsync/runsync2」を
使っていました。

 まさに目からウロコでした。ありがとうございました。

[ ]
RE:00129 田楽DLLの「RUN」関数についてNo.00132
杉浦 まさき さん 04/02/06 00:05
 
ども、杉浦 まさきです。

>> #田楽DLL固有の話題については僕のホームページの
>>  サポート会議室の方で発言して頂くと助かります。
> 申し訳ありません。何度かアクセスしてみたのですが、「BBS管理者のページ
>からリンクしてください。アクセスは拒否されました。」というメッセージが出
>てしまい入れませんでした。

パーソナルファイアーウォール等の設定で、ブラウザ側が送信する
Referer 情報(どのページからリンクを辿ってきたかの情報)
が遮断されてしまうと上記の症状になります。
これはホームページを置いているDTIさん提供の
会議室システムの仕様なので、僕にはどうすることもできません。
#以前同じような話があったときに要望として出してはいますが。。。

ご迷惑をおかけしてすみませんm(_ _)m。

[ ]
RE:00132 田楽DLLの「RUN」関数についてNo.00133
vickwei さん 04/02/06 09:06
 
 杉浦 さま、わざわざどうもありがとうございました。

 ふだんはブラウザでReferer のログを無効にしておりまして、いま有効に変更
したらサポート会議室を開くことができました。こちらこそ御迷惑をおかけしま
した。
 今回の件は、h-tom さまのお教えにより解決しましたので、またもし何かあり
ましたら会議室を利用させて頂きたいと思います。

 このたびは本当にどうもありがとうございました。

[ ]