下のようなソースで、FTPサイトに接続しようとしているんですけど、
…
addr:= mAddress;
hHost := ConnectedURL(addr);
mConnected := Assigned(hHost);
…
function TWinFTP.ConnectedURL(HostAddr:String): HINTERNET;
begin
Result := InternetConnect(hSession,PChar(HostAddr),mPort,
PChar(mUserName),PChar(mPassword),INTERNET_SERVICE_FTP,
IfThen(mPassive,INTERNET_FLAG_PASSIVE),0);
end.
(mPortにはINTERNET_DEFAULT_FTP_PORT、mAddressにはFTPサイトアドレス、mUserNameには、ユーザー名、mPasswordにはパスワード、mPassiveには、パッシブモードフラグ(Trueにしてテストしてます)、hSessionには、internetOpenの戻り値が入っています)
接続自体はうまくいくんですけど、ZoneAlermを使用している場合、
"インターネットのアクセスを許可してもいいですか?"の問いに"はい"と答えると、
そのまま自作ソフトのほうが応答なしになってしまい、タスクマネージャからのプロセス終了すらできない状態になってしまいます。
(ZoneAlermを終了すると、終了できるようになります)
デバッガをつかうとならないうえ、条件がそろってもとまらないことがあるようなので、確認のしようがなく困っています。
どうすればいいでしょうか?
(ちなみに、あらかじめZoneAlermの中で、自作ソフトの接続を常に許可しておくと、止まらなかったです、なのでたぶん、確認に答える時間が問題になっているんだと思いますけど…)
OS: WindowsXP Home
Delphi: 6 Personal
ZoneAlerm: バージョン3.1.291
ShowMessageをはさんで、どこで止まるか確認はしました?
APIの実行で止まっているようなら、ZoneAlermの不具合か、WinInet自体の不具合だと思います。
うちはOutpost Firewallですが、止まったことなかったですよ。
# 今は環境が違うので確かめられません
ConnnectedURL部分をShowMessageではさむと、
とたんに何も起らなくなってしまいました。
なので、Sleepで接続前二百ミリ秒待ってみたら、問題なかったようです。
にしのさん、いつもありがとうございます。
ツイート | ![]() |