して全終了する機能を実装中なんすが、あれこれ試してだいぶいい感じにはなってきているもののこれでええのか不安。
問答無用に全終了なので変なものを終了させないかが物凄く不安なのん。


まずはCreateToolhelp32Snapshotで試したけれどこれやとプロセス全部取って来てしまうので止め。

続いてCALLBACK関数とIsWindowVisibleとGetWindowTextで表示ウィンドウのウィンドウ名を取ってくるもウィンドウ名の無いアプリが存在してそれまで表示してしまうのでウィンドウが無いアプリは除外するように。後はreset_Time自身とIME(?)も出てきてしまうのでそれも除外。あーそういえばATOKはどうなるのやら。

でいろいろ調べているとアイコンを持ってるかどうかで判別しているってのがあってGetClassLong(hWnd, GCL_HICON)を判別条件にして試してみたがこれやとAcitiveSyncやOutlookも何故か除外される(引数がマズイ?)。
も少しこれは調査してみたいところ。

とりあえず現状では
・IsWindowVisibleでまず非表示ウィンドウアプリを除外してさらにGetWindowTextで除外したいアプリを決め打ち
or
・GetClassLongでアイコンを持たないアプリを除外してさらにGetWindowTextで除外されたくないアプリを追加
かなと思ってますがユーザーが自分で除外したいアプリを追加できる仕様にするならば前者の方が汎用性ありそやね。

画面イメージはこんな感じです。
null
公開しても使えるレベルにするにはとりあえず終了されては困るアプリを終了しないようにしないと。。。

とかなんとか言ってる内に十字キーでカーソル移動出来るようにしようと思ったらやり方がわからんくてハマってもた・・・。
PostMessageでWM_NEXTDLGCTL投げたりとかしてみたんやが。