こんにちは。
FireFoxの設定なのか、Curlプログラムになにか書けば回避できるのか、そもそも誰も発生していない事象なのか
ご存知でしたら教えてください。
現在、サーバのhtdocs以下にフォルダを作って、.curlを配置しています。
FireFoxからそのCurlを呼ぶと、1度目は起動するのですが、2度目が起動しません。
3度目は起動するが、4度目が起動しない・・というように順番に起動する/しない状態となっています。
※Firefox:16.0.2
Curl :7.0
OS :Windows7
同じ事象が発生する方、原因・回避方法をご存知の方いらっしゃいますでしょうか?
※FireFoxで起動しているWebシステムからCurlを起動しています。
Curl7RTEのシステム要件ではFireFox16は対応とありますが、16.0.2はCurl7サポート外でしょうか?
もしサポート外のため発生している事象である可能性が高いなら、WebシステムからIEでCurl起動させる方法を教えていただきたく。
よろしくお願いいたします。
追記情報です。
サーバにある.curlの処理内容として、ローカルにあるVBSファイルを起動する以下の処理をしております。
この処理があると該当事象が発生します。
|| VBS起動
{spawn-host-process "rundll32.exe", args}
つまり、以下の条件で発生します。
FireFox × Curl × {spawn-host-process "rundll32.exe", args}
私の個人的な環境では、FireFoxを日常的に使っていますが、再現したことはないです。
rundll32.exe で何かDLLを実行しているのでしょうか?
実行しているのであれば、そのDLLの情報、
また、「Curlが起動しない」という現象の、具体的な情報(エラーメッセージが出る、
フリーズするなど)を挙げられるとよいかも知れません。
umemuraさま
ありがとうございます。
どうやら原因がわかってきました。
umemuraさまのコメントから、rundll32.exe で実行しているtest.VBSをシンプルにして原因追及できました。
-test.VBS---------------------------------
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://google.co.jp")
-----------------------------------------
わかっていた再現条件は以下でした。
・Curlを毎回シャットダウンすると問題ない
・FireFoxをいったん終了させると問題ない
色々と検証していくと、Curlの処理の最後にhtmlを呼んで自分のウィンドウを閉じている箇所があるのですが
ウィンドウを閉じることができずなにか命令だけ残っていて、それとHostProcessが影響していたのでしょうか・・?
※ウィンドウを閉じる処理はJavaScriptですが・・。
ひとまず、ウィンドウを閉じるhtml、FireFoxの設定等を見直します。
失礼しました。
-------以下、余談です--------------------
ちなみに、Curlが起動しない というのはエラーメッセージもフリーズもしません。
以下のようなstart.curlを動かしていますが
2回目に実行したときは、画面には「起動中です..」の文字が表示されていますが、{output "start"}がコンソールに表示されません。
そのため、起動していないと考えています。
※「起動中です..」はキャッシュで表示されているだけだったんでしょうか・・?
-------------------------------
{curl 7.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}
{document-style PlainDocument}
{import * from CURL.RUNTIME.HOST-PROCESS}
{output "start"}
{text 起動中です..}
{let query:String = {get-the-applet}.url.query}
{let hash-param:{HashTable-of String, String} = {new {HashTable-of String, String}}}
~~省略~~
|| VBS起動
{{spawn-host-shell "C:\\xxx\\test.vbs"}}
{browse-url target = "_self", {url "http://128.1.xxx.xxx/images/exit.html"}}
-------------------------------