接続しているかどうかを確認するには、
InternetAttemptConnectというAPIを使うそうですけど、
そのAPIを呼び出しても、いつも0しか返ってきません。
0が返ってきたらインターネットに接続しているというサインだそうですけど…。
そこで、かわりの方法として、インターネット接続時にだけ起動されてるらしい、
"Rnaapp"というアプリケーション(?)があるかどうかを調べて結果を返したいと思います。
(よくわからないんですけど、これを強制終了させると回線が切れるので…)
で、なんですけど、どんな環境でもRnaappの在否を確かめれば、
接続は確認できるでしょうか?
強制終了ダイアログでのみ現れるようですけど…。
回線を切断している時に
InternetAttemptConnectを呼び出せば
接続ダイアログが開かれません?
キャンセルすれば、0以外の値が
こちらでは帰ってきましたが・・・。
引数は0を指定するようにMSDNに記載されていましたが
その辺は問題ないんですよね?
確かにダイヤルアップネットワークとかその辺で
接続されている場合、Rnaappを使用しているみたいですが
LAN環境から接続している人もいるわけで
そういった環境でRnaappが起動しているかは・・・
今は自宅なのでちょっと確認できません。。。
Winsockでコネクトさせれば接続されているなら出ないし、接続されてないならダイアルアップが出てきますけど、ルーター接続だとだめですね。
あらら…、やっぱりAPIを使ったほうが確実なんですね^^;
うーん…。説明をしっかり読んで、やってみたつもりですけど…。
なぜかどうやっても、どんなときでも0しか返ってきません。
InternetAttemptConnect(0) ですよねぇ…。
BASP21という、インターネットとかその他いろいろのライブラリがあるときいて、
ダウンロードはそれを使うことにしましたけど、接続しているかどうかはこれでしか取得できないようなので…。
ところで、Winsockでやるならどうやって確認するんでしょう?
それができればそれでもいいんですけど…。
>接続されている場合、Rnaappを使用しているみたいですが
あ、よく調べてみたら、強制終了させない限りずっとRnaappって残ってましたね^^;
> なぜかどうやっても、どんなときでも0しか返ってきません。
例えば、インターネットに接続していない状態で
IEを起動するとどうなるんでしょうか?
こちらの環境ではInternetAttemptConnectを呼び出したときと同じように
接続確認用のダイアログが表示されます。
IE系のAPIなので、当然IEもこれで接続確認していると思います。
なので、IEでできて、自分はできないのであれば
API宣言等を見直す(程の宣言ではないですが)とかするしかないですが。
InternetAttemptConnectは接続を確認するというより
接続を確保するためのものみたいなので
オフライン接続とかされていると0返しそうですねぇ・・・。
(試したわけではないですが・・・)
試してみたらオフラインでも同じでした。
っていうか、IEの場合、オフライン接続があるけど
InternetAttemptConnectで表示される奴は
キャンセルになってるし。
IEはInternetAttemptConnectは使ってないんでしょうかねぇ・・・。
それとも、ダイアログのフックみたいな拡張機能が
あるんでしょうか・・・。
もしかしたら、0以外を指定するとそうなったりして。。。
単純にInternetOpenが失敗すれば
接続できないとかでもいいんじゃないでしょうか?
どういう用途で接続確認をされようとしているのかが
わからないので、この方法が最善かはわかりませんが・・・。
>API宣言等を見直す(程の宣言ではないですが)とかするしかないですが。
うーん、正式文章から持ってきたものではないので、あやしいかもしれません…。
けどこれって、引数は0でそれ以外ないですよね^^;
それとも、あそこになにかいれてみればいいのかな…。
>単純にInternetOpenが失敗すれば
>接続できないとかでもいいんじゃないでしょうか?
接続とファイルのダウンロードは、
その見つけたライブラリのBASP21(http://www.hi-ho.ne.jp/babaq/)でやっているので、
InternetOpenは使ってないんですよぅ…。
けど、いったんOpenして、すぐ閉じればおなじことかな…。
>どういう用途で接続確認をされようとしているのかが
>わからないので、この方法が最善かはわかりませんが・・・。
接続していないのにもかかわらず、ダウンロードしようとして、
ふつうにダウンロードが失敗したような処理はどうかなと思ったので…。
別に確認しなくても、いいのはいいんですけどねぇ…。
ツイート | ![]() |