日本語プログラミング言語なでしこの公式掲示板

なでしこ の 掲示板

トップ 新規 検索

2023-02-22 19:02:34

Re①:窓ハンドルの強制終了

TKI さん

毎度お世話になります。

ウィンドウを強制終了させたいのですが、どうもうまくいきません。
2種類の方法を搭載させたいのですが、すみませんがご教示いただけませんでしょうか。

①クリックした窓ハンドルを終了させたい
②母艦をクリックしたら、起動させたそのファイルを終了させたい


#①の場合----------------------
1でループ
  HANDLEは窓アクティブハンドル取得
  もし、HANDLEが母艦ハンドルでなければ
    HANDLEの窓ハンドルテキスト取得
    それをEndWindowに代入
    抜ける
母艦をクリックした時は~
  EndWindowを窓ハンドルアクティブ
  EndWindowに『%{F4}』を窓ハンドルキー送信 #強制終了させたい → ALT+F4で良い? or プロセス強制終了?

//窓をクリックしたら、その窓を終了させるだけでも良いです。
 よくわからなかったので、母艦クリックの操作を含めましたが、省略したいです・・・


#②の場合----------------------
「{母艦パス}test.xlsx」を起動 #←実際はファイルを選択して起動させるので、毎回任意のファイルです。

//母艦をクリックしたら、上記ファイルを終了させたい。



>母艦をクリックした時は~
>  EndWindowを窓ハンドルアクティブ
>  EndWindowに『%{F4}』を窓ハンドルキー送信

このサンプルでは「窓ハンドルアクティブ」「窓ハンドルキー送信」の引数に窓ハンドルではなく窓ハンドルテキスト(窓名)を渡しています
窓ハンドルを渡しましょう


「アクティブになったウィンドウにALT+F4を送る」でよければこんな感じ
#-----------------------------------------------------------------------
1でループ
  HANDLEは窓アクティブハンドル取得
  もし、HANDLEが母艦ハンドルでなければ
    HANDLEに『%{F4}』を窓ハンドルキー送信
    母艦ハンドルを窓アクティブ
  0.1秒待つ //ちょっと待つ
#-----------------------------------------------------------------------
ループにウェイトを入れてキー送信後に母艦をアクティブにすればうっかり大暴れはしないはず

「プロセス強制終了」は引数にプロセス名を指定で、「notepad.exe」とか「EXCEL.EXE」とかを指定するらしいのですが、
ハンドルやファイル名や窓名から取得する方法はちょっとわからないです。


> ②母艦をクリックしたら、起動させたそのファイルを終了させたい

起動したときに窓ハンドルが取れれば出来そうだけど、絶対的なものは難しいかも。

「起動」のあと絶対パソコンを触らない想定なら次にアクティブになった窓を窓アクティブハンドル取得で記録して紐づけができそう。
汎用的ではありませんが、エクセルのファイルだったら「エクセル起動」「エクセル開く」したファイルを「エクセル終了」で終了できそう。
exeファイルを起動したならそのまま「プロセス強制終了」が使えるかも。

その他のファイルに「プロセス強制終了」を使うとしたら
起動したファイルの拡張子を見て、拡張子ごとのEXEファイル名の対応表をつくっておくくらいしか思い浮かびませんでした。
どなたかの補足を待ちましょう。

あと「プロセス強制終了」はなでしこを管理者権限で実行する必要があるかもしれません。


(編集パスワード送信)

子記事

親記事 (No.1609)
返信した記事(元) (No.1609)

この内容(No.1611)に返信

この内容(No.1611)をダウンロード

この内容(No.1611)のテキスト表示





www.eznavi.net