現在のユーザーが自分のPCをロックした場合に自動チェックする方法はありますか? (通常Win+L
によって活性化される)。私が見る1つのハッキーな方法は、何とかすべてのキーの組み合わせをキャッチしていますが、その後、ユーザーが返されたことを知る方法が問題です。Windowsの画面がロックされていることを確認してください
多分、PythonやWindows端末からアクセスできるフラグがありますか?
編集:私はここからのコードを試してみました:Detect when computer is unlocked Windows
画面がロックされているときには、検出したが、それがアンロックされますないとき、それは書き込み続け無期限「画面がまだロックされています」。それでは、何が問題なのでしょうか?私はPython 3.4、64ビットWin7を持っています。
EDIT2:実際にはresult
は私にとってはロックされていなくても常に0
であるため、実際には何も検出されません。
import ctypes
user32 = ctypes.windll.User32
OpenDesktop = user32.OpenDesktopA
SwitchDesktop = user32.SwitchDesktop
DESKTOP_SWITCHDESKTOP = 0x0100
hDesktop = OpenDesktop ("default", 0, False, DESKTOP_SWITCHDESKTOP)
result = SwitchDesktop (hDesktop)
print(result)
[コンピュータのロックが解除されたときに検出する](http://stackoverflow.com/questions/26599462/detect-when-computer-is-unlocked- windows) – asongtoruin
私は試して、それは部分的にしか動作しません。 – Nik
このコードはPython 3では動作しません。なぜならあなたは[W] ide-character APIの 'OpenDesktopW(OpenDesktopW) 'の代わりに(すべて廃止され、避けがたく避けられる)[A] NSI API' OpenDesktopA'にユニコードを渡しているからです。 '。 'restype'と' argtypes'も設定していないので、Pythonを簡単にクラッシュさせる可能性があります。それはエラーを処理していません。それはハンドルを漏らしている。現在の入力デスクトップを副作用として修正する可能性があります。これは 'ctypes.WinDLL'の代わりにライブラリ間の競合に脆弱な' ctypes.windll'を使用しており、スレッドの最後のエラー値を保護する 'use_last_error = True'も使用していません。 – eryksun