|
「LANケーブルの抜き差しもチェック」がONの場合は、WindowsのGetIfTableと
いうAPIを呼び出して、それで何か接続してるLANカードが1つでもあればOK、と
いう処理をしています。
DNSサーバーが有効かどうかというのは、果たしてどうやって判定していいの
かどうか、いまいち分からないですけども…。
DNSサーバーが有効かどうかは、例えば
「nslookup www.maruo.co.jp」
とかコマンドを実行して、「を見つけられません」のような文字列が返ってこ
なければOKとかって作戦はどうでしょうか。そういう作戦ならマクロで出来ます。
例えば今ちょっと作ってみた例としては、以下のようなマクロになります。そ
れを例えば「マクロ・マクロ登録・自動起動・送受信の開始直前」に登録してお
く手があるかと思います。
------------------------------------------------------
loaddll "tkinfo.dll";
#browsemode = browsemode;
#readonly = readonly;
#x = x;
#y = y;
#top = dllfunc("hidemaru_screentopy");
#updated = updated;
#searchoption = searchoption;
$searchbuffer = searchbuffer;
disabledraw;
if( #browsemode ) browsemodeswitch;
if( #readonly ) readonlyswitch;
gofiletop;
run "nslookup.exe www.maruo.co.jp >con";
searchup "を見つけられません";
#result = result;
undo;
if( #browsemode ) browsemodeswitch;
if( #readonly ) readonlyswitch;
moveto #x, #y;
if( #updated == 0 ) {
clearupdates;
clearupdated;
}
setsearch $searchbuffer, #searchoption;
enabledraw #top;
if( #result ) {
#n = dllfunc("SetCancel", 1);
message "送受信をキャンセルしました。";
}
------------------------------------------------------
あるいは、上記の「SetCancel」としている所の処理を、例えば定期受信のON/
OFF切り替えをするように書き換えて、マクロの自動実行タイミングを秀丸メー
ル起動時にしたらいいかもしれないです。
マクロの例としては、上記マクロの一番最後のif文以降が、
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
#autodown = getregnum("AutoDown");
if( #result ) {
if( #autodown > 0 ) {
message "autodown off";
writeregnum "AutoDown", - #autodown;
#n = dllfunc("EnvChanged");
}
} else {
if( #autodown < 0 ) {
message "autodown on";
writeregnum "AutoDown", - #autodown;
#n = dllfunc("EnvChanged");
}
}
closereg;
のようになります。
(message文は動作確認用なので、動作が確認出来た後は削除すればいいで
す)
あと、実は僕のマシンは最近Windows7になって、WindowsXP Modeも使っている
んですが、これだと、「ipconfig /all」とした時に、
Tunnel adapter isatap....
Tunnel adapter ローカルエリア接続...
のようなLANカードが追加されたようになってます。それの情報をよく見ると、
LANカードの物理アドレス(Macアドレス?)が「00-00-00-00-」で始まる形にな
ってるようです。例えばMacアドレスがそういう形になっていたら、ケーブル抜
き差しチェックから除外する、みたいなことをしたらいいのかもしれませんけど。
(誰か詳しい人がいたら教えて欲しいです)
|
|