[英]Turning off monitor with JNA in Java doesn't work as expected
使用通過JNA關閉監視器的示例 ,我遇到了以下問題:監視器按預期方式關閉,但立即在一秒鍾內打開。 即使我將睡眠和打開顯示器的部分注釋掉了。 全部都一樣。
我以為當控制權返回主線程時,監視器會打開。 但這不是那樣。 在新線程中運行此代碼段將得到相同的結果。
我也嘗試過Powershell腳本做同樣的事情,並且它很有吸引力。 但不是Java代碼段。
我究竟做錯了什么? 或這到底有什么問題。
可能“未按預期工作”表示您的期望是錯誤的。
值得注意的是, 鏈接代碼存在一些問題,我假設您使用逐字記錄。 SendMessage函數被映射兩次。 第一個映射是正確的,但從未使用過:
LRESULT SendMessageA(HWND paramHWND, int paramInt, WPARAM paramWPARAM,
LPARAM paramLPARAM);
第二個映射將int
替換為WPARAM
,如果這里的某些結果異常,尤其是在64位系統/ JVM上,這也不會令我感到驚訝。 這是代碼中調用的版本。
LRESULT SendMessageA(HWND paramHWND, int paramInt, int paramInt2,
LPARAM paramLPARAM);
除此之外,代碼確實按預期工作,它激活了電源管理功能以關閉顯示器! 您期望的問題在於您尚未考慮過可能會導致顯示器重新打開的問題。 移動或單擊鼠標(或釋放鼠標鍵),按下(或釋放)鍵,網絡活動或其他各種情況,可能會生成系統事件,這些事件表明節電功能會重新打開顯示器 。 (您可能會從Powershell片段中看到相同的結果;在這種情況下,您的鼠標單擊/擊鍵順序可能會有所不同。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.