![]() |
zunbe |
![]() |
|
![]() |
不思議に思うこと - 自転車のカギ | 愛知県知事選挙 | ![]() |
2007/02/02
久しぶりのプログラミングねた。 IIS上でわかち書きをするプログラムを作成した。 まっとうな方法としては… (1).KAKASI Win32 に含まれているライブラリを呼び出す ActiveX を作成し、 であろうが、サーバ機は手元にあるわけではないし、Administrator 権限をもっているわけでもないので、ActiveX から呼び出す方法は選択したくない。 実行プログラムをIIS上から起動する方法はいろいろあるのだが、どうも、うまくいかない。 KAKASI.EXE は、標準入力から文章を読み込んで、標準出力に吐き出すフィルタである。 KAKASI.EXE のオプションに、入力ファイル、出力ファイルを指定するオプションは無い。 ■方法1…BASP21の Execute() を使用する とりあえず、もっとも簡単そうなので、試してみた。 が、BASP21 の Execute() は、標準入力からデータを流し込む事ができない。 Set objBASP = Server.CreateObject("basp21") このコードを実行すると、見事にフリーズした。 cat 延々と標準入力がクローズされるのを待ちつづけている感じ。 もしかして、標準出力へ吐き出せないのかと疑って、以下のコードも試してみた。 Set objBASP = Server.CreateObject("basp21") 「出力.txt」は作成されるが、サイズは0バイト。 cat > 出力.txt 出力ファイルを作成して、延々と標準入力がクローズされるのを待ちつづけている状態か。 ちなみに、以下のコードは、きちんと「入力.txt」の内容を出力できる。 Set objBASP = Server.CreateObject("basp21") つまり、「入力.txt」が読めていないわけではない。 ■方法2…WshShell の Exec() を使用する。 Exec() は、標準入力からデータを流し込んで、標準出力から取り出す流れになるので、もっとも望んでいる形なのだが、やはりうまく動かない。 Set objShell = Server.CreateObject("WScript.Shell") フリーズはしないが、出力は常に空。 困ったゾ。 ■方法3…WshShell の Run() を使用する。 Run() は、標準入出力を扱えないので、入力、出力とも、テンポラリ・ファイルを介するようにするしかない。 Set objShell = Server.CreateObject("WScript.Shell") おっ! しかし、IIS上でパイプラインがどうにもうまく働かないのは、少し解せない。
投稿者 zunbe : 2007/02/02 09:50:16
【プログラマ ずんべ の日記】 IIS で KAKASI.EXE を実行する(2) トラックバック時刻: 2007/04/14 11:06:52
このKAKASI Win32って、Apacheが前提になってたりして。 やはり、ASP.NETで記述してもらわないと・・。 パイプの機能は、無理矢理くっつけた感じがあるから、謎になるのは当たり前だと思う。 投稿者 チャーリー栗原 : 2007/02/03 03:38:46 ●チャーリー栗原さん > このKAKASI Win32って、Apacheが前提になってたりして。 なはは。 > やはり、ASP.NETで記述してもらわないと・・。 現在稼動しているお客様のマシンの環境に依存なので、ASP.NET 化はちょっと無理だす。 > パイプの機能は、無理矢理くっつけた感じがあるから、謎になるのは当たり前だと思う。 それは確かにそうだと思いますが、システムとして片手落ちな感はちょっとしますです。 投稿者 ずんべ : 2007/02/03 14:04:33
|
|
|