言語 Visual Basic 6.0(SP5)
自殺プログラム-条件が成立したら自分自身を消去するプログラム-として
タイマー条件付 「MsgBox 関数」モドキを作りたい(実際に作る内容はオーバーレイプログラムとして通信関係資源を含む外部資源の操作等も含みます)のですが
経過時間表示をしない「MsgBox 関数モドキ」
と
タイマーで終了(unload)せず手作業が必須な「MsgBox 関数モドキ」(非表示には成功しました)
と
親frmまで殺す「MsgBox 関数モドキ」
の作成には成功しました。
MsgBoxModoki.Show
等で参照した MsgBoxModoki.frm が
1.手作業を伴わずに何かしらの表示を伴う手続きを実行する命令(ヘルプメッセージの検索用語すらわかりません)等
2.自らunloadするようにする命令等
ご存知の方いらっしゃいませんか。いらっしゃったらば命令や検索語をお知らせください。
No.1ベストアンサー
- 回答日時:
1.タイマ処理のことでしょうか?違ってたら回答にならないのですが、
Timerオブジェクトを使用してタイマイベントを発生させ、そのイベントメソッド内で処理を記述する。
(Timerオブジェクトでヘルプ検索)
2.MsgBoxModoki.frm が発行する命令という解釈で、
"Unload Me"
(そういうことを質問されているのではないですか?)
※見当違いなことをいってたら無視してください。
この回答への補足
6割がた解決しました。
終了処理関係の情報がわかりません。
Timer処理内ルーチンで事象待ち状態(例.DNSにアクセスし接続先IP番号を決定するまでの最大20秒間, 相手先IPにECHOを送り応答があるまでの約0.3秒*4回等)にあるときに
左上「X」を使用した強制終了をオペレーターが命じるとUnload等のルーチンに移動します。
Unload 内で Timer1.E(なんとか)=Faile を実行してもTimer処理ルーチンの最後のExit sub又はEnd SUb が実行されるまで処理が継続します。終了処理として関係ファイルのClose等を先に実行してしまう等の関係でエラー処理から無限ループに陥ってイます。
結果としてUnload後もTimer処理ルーチンが生き残っています。親FormからのUnload命令でもTimer処理が停止しません。適当なところでV.B.の実行をブレークポイントでとめて追跡した結果いじょうの内容が判明しました。
待ち状態にないのであれば簡単にとまります。
Unload Me 等Unload の処理は
Form_QueryUnload()
Form_Unload()
Form_Terminate()
の順番で発生するようです。
Unload()の処理中に
Sub Form_QueryUnload(適当に)
if (タイマー処理フラグ) then 強制終了フラグ = True Cancel = 1
end sub
Sub Form_Unload()
Timer.Enabled = False: 'Timer動作停止
end sub
Sub Timer_Timer()
if (タイマー処理フラグ) then exit sub
タイマー処理フラグ = True
call 適当な処理
タイマー処理フラグ = False
if (強制終了フラグ) then
Timer.Enabled = False: 'Timer動作停止
unload Me
end if
end sub
Sub 適当な処理
do
call 適当にpingの実行
DoEvents
if (強制終了フラグ) then Call TCP/IPの終了処理: exit do
loop (ping が通るまで待つ)
end sub
のように
1.Unloda処理ルーチン内でタイマーが動作している場合(Sub 適当な処理内DoEventの処理としてUnload処理が開始された場合)にはunloadを中断し、強制終了フラグを立てる
2.タイマー処理ルーチン内で強制終了フラグを見て処理を中断し
3.タイマー処理内に戻ったところでタイマーを終了して
4.再度unload が実行されるのをひたすら待つ。自らunload できる場合があるのでunload を一応かけておく。
5.unloadが失敗することがある(TCP/IPの終了処理が失敗した場合など)ので親formでもう一回unloadを実行する(TCP/IPが正常終了したことを信じで)
の処理が必要なようです。
特権命令を使える普通のマルチタスクならば、タイマー処理であろうとも何であろうとも特権命令を自ら実行する(一般ユーザーであっても自分自身に対しては特権命令が実行可能)のですがWindows では終了命令を自ら検出して正常終了する必要があるようです。これでは、ハングアップが多いのも納得できます。
それらしきソフトが完成しました。なおSP5を使用しています。SP6ではTCP/IPサーバーソフトが動きませんので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pentium 4とPentium Mの性能差...
-
任天堂64の64 CPUの仕...
-
PICマイコンのプログラムについ...
-
組み込みCプログラムで実数型
-
プログラム言語FortranとCの違...
-
XMLのテキスト情報をHTMLに読み...
-
arduino
-
【有効数字について】 授業で、...
-
KBのMB違いって
-
文字の容量(サイズ)についての...
-
もしコンピューターが2進数か...
-
KBとMB
-
エクセルVBAで xlOn xlOff の切替
-
EXCELでの16進数取り出し、上...
-
1秒は何ミリ秒とか、単位変換の...
-
基本情報処理技術者試験問題が...
-
1Mbpsって毎秒何キロバイト?
-
Excelの累乗について式とVBAで...
-
ffftpのサイズの単位は何でしょ...
-
マトリックスサイズが512×512で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでのコントロール操作
-
プログラム言語FortranとCの違...
-
組み込みCプログラムで実数型
-
命令網羅率の計算問題です
-
CPU、Z80からステート数から...
-
COM1(RS232C)とUSB仮想COMポー...
-
+=と÷=の処理速度の謎を教え...
-
MIPS と クロック周波数の換算方法
-
私は
-
アセンブリ言語で。
-
arduino
-
H8Sで割り込み発生時の飛び先ア...
-
x86系のCPUとは?
-
なぜ、i++なのか?(ものすごく...
-
CPUのHTについて教えてください。
-
処理時間の計算 PICアセンブラ
-
シーケンスプログラムについて...
-
応用情報技術者試験問題の解き...
-
VB.net2010 割り込みの共通化
-
PICマイコンのプログラムについ...
おすすめ情報