Windows 7で画面をロックしたときにプログラムを自動的に終了するにはどうすればよいですか?


6

画面をロックするたびにWindows 7でプログラムを自動終了する方法はありますか?


念頭に置いている特定のプログラムはありますか?使用せずにプログラムを終了する良い方法はありtaskkillますか?
ウィリアムジャクソン

私の質問を無視して、答えを投稿しました。
ウィリアムジャクソン

回答:


4

grawityの提案に従って、この回答の最後に付けたバッチファイルを使用しないください。これは、Win32 API関数の呼び出し規則と一致rundll32.exe しないためLockWorkStationです(詳細については、このMSDNブログエントリを参照してください)。そうは言っても、より多くの作業を必要としない、より良い代替手段があります。

AutoItスクリプト言語DllCall関数を使用して、呼び出しスタックを破損することなくWin32 API関数を呼び出すことができます。のProcessClose代わりにを使用することもできますTASKKILL。あなたの参考のために、ここにあるLockWorkStation MSDNからの参照。

次の2行をファイルに配置し、exitandlock.au3(または同様の)として保存します。AutoItで実行できます(または、必要に応じて.exeにコンパイルすることもできます)。

ProcessClose("yourapp.exe")
DllCall("user32.dll", "BOOL", "LockWorkStation")

これにより、呼び出しスタックが破損することなく、必要なものが提供されます。その後、そのファイルをホットキーにバインドし、それを使用してワークステーションをロックできます。または、それを.exeファイルにコンパイルし、コンピューターが非アクティブになった後にスケジュールされたタスクとして実行するように設定できます。

最後に、WinClose関数をの代替として使用することもできますProcessClose


私が言ったように、このメソッドを使用しないでください。これはインターネット上で最も広く使用されている方法の1つであるため、完全を期してここに保管しています。TASKKILL次のコマンドを使用して、簡単なバッチファイルを使用してこれを行うことができます。

@ECHO OFF
TASKKILL /IM yourapp.exe
Rundll32.exe User32.dll,LockWorkStation

次に、ワークステーションをロックするときにバッチファイルを実行します。または、ホットキーを割り当ててバッチファイルを実行し、ロックするときにそのキーの組み合わせを押すこともできます。TASKKILLコマンドの詳細については、Microsoftのこの記事を参照してください。


1
@KCotreau:WM_CLOSEをtaskkill送信するだけです。を使用しない限り、プロセスは終了しません/f
-grawity

@grawityありがとうございます。これは知っておくと良いことです。
KCotreau

@Breakthrough:の呼び出しには使用しないでくださいrundll32LockWorkStation()
-grawity

@grawity知っておくといいのですが、私はそれを知りませんでした。別のソリューションを考えていますが、すぐに投稿します。
ブレークスルー

3

ステップ1:プログラムを終了するスクリプトを作成する

terminate.vbs次の内容で名前が付けられたファイルを作成します。

set objwmiservice = getobject("winmgmts:\\.\root\cimv2")
strprocessname = wscript.arguments.item(0)
strquery = "select * from win32_process where name='" & strprocessname & "'"
set colitems = objwmiservice.execquery(strquery,,48)
for each objitem in colitems
    objitem.terminate
next

このスクリプトをテストするには、コマンドプロンプトを開いてを実行しcscript.exe "C:\path\to\terminate.vbs" notepad.exeます。notepad.exe終了するプロセス名に置き換えます。

手順2:画面をロックしたときに実行するスクリプトをスケジュールする

タスクスケジューラを開き([スタート]メニューで検索できます)、[ タスクスケジューラライブラリ ]を右クリックして[ タスクの作成... ] を選択します。で全般 ]タブ、タスクの名前と説明を与えます。あなたは変更することができます:のための設定をするのWindows 7は、Windows Server 2008 R2したい場合は、それは必要ありません。

タスクの作成-一般タブ

上のトリガータブ、新しいトリガーを作成し、設定作業を開始します:オンワークステーションロック。残りのデフォルト設定は問題ありません。

タスクの作成-新しいトリガー

上のアクションタブ、新アクション作成プログラムを起動しますプログラム/スクリプト:cscript.exeである必要があります。[ 引数terminate.vbs追加(オプション):]ボックスに、終了するパスとプロセス名を入力します。私の議論は"C:\Users\Public\Documents\terminate.vbs" notepad.exe

タスクの作成-新しいアクション

[ 条件]タブと[設定]タブでその他のオプションを確認できますが、ここではそれらのいずれも必要ありません。タスクを保存すれば完了です。画面をロックすると、プロセスは終了するはずです。

画面をロックしてからすぐにロックを解除すると、コマンドプロンプトウィンドウが表示されるか、終了するプロセスで終了するプロセスが表示される場合があります。これは、プロセスが正常に終了するまでの時間に依存します。


手書きのvbscriptの代わりに、taskkill / IM notepad.exeと言うことができます。とにかく、トリガーに関するヒントをありがとう-以前は見つかりませんでした。
Trailmax

1

イベントを待って必要なことを行うためにを使用してプログラムを作成できます。WTSRegisterSessionNotification()WTS_SESSION_LOCK

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.