IPアドレスが変わった事を検出したい

解決


ひろんた  2005-06-22 23:55:02  No: 122922  IP: [192.*.*.*]

こんばんは

会社にてLAN回線が2つあります。
社内LANとインターネットです。
それぞれDHCPより自動取得しています。
社内LANの時はプロキシを使いインターネットの時は
空白にしています。

それぞれを切り替えた時にプロキシを一回一回設定するのは
大変なので自動で切り替えしようとしています。

インターネットセットオプションは動いていますが
IPが変わった時に検出で悩んでいます。

Winsock1.localipでIP取得して5秒ごとにIPを見に行って
変化したらプロキシの設定を変えるようにしています。

ところがいったんIPを取得するとキャッシュに残ってるらしく(推測)
IPが変わっているのに取得されるIPは変わりません。

しょうがないので違うEXEでIPをテキストに出して
変化を見ていますが5秒ごとに砂時計がでて
全然スマートじゃないです

なにか良い方法はないでしょうか?
よろしくお願いします。

編集 削除
通ってみた  2005-06-23 09:57:48  No: 122923  IP: [192.*.*.*]

キャッシュに残っているとすれば、キャッシュを削除してからアクセスすればOKだと思われ
そんなAPIがあるので検索してけれ

※原因がそれでなければ他の視点で・・・

編集 削除
ひろんた  2005-06-23 12:12:20  No: 122924  IP: [192.*.*.*]

こんにちは
通ってみたさん
早速の御助言ありがとうございます。

キャッシュクリアやってみましたが
残念ながら結果は同じでした。

Winsock1.closeとかも書いてみたのですが
変わらず。。。

なにか取得方法に問題あるのでしょうか?
よろしくお願いします。

タイマーのなかのコードはこんな感じです。

    iptxt = Left(Winsock1.LocalIP, 3)
    MsgBox iptxt
    If a = iptxt Then
        Exit Sub
    End If
        a = iptxt
    
    If iptxt = "172" Then
        Call Command1_Click
    Else
        Call Command2_Click
    End If

編集 削除
ななし  2005-06-23 13:06:01  No: 122925  IP: [192.*.*.*]

GetIpAddrTable()
NotifyAddrChange()
API 等でどうでしょ。

編集 削除
ひろんた  2005-06-23 13:52:17  No: 122926  IP: [192.*.*.*]

ななし様

御助言ありがとうございました。
GetIpAddrTable()で完璧にうまくいきました。
一応APIはWebで一通り見たつもりだったのですが
こんないい命令もあるんですね

今回はありがとうございました。

編集 削除