簡體   English   中英

用Java中的JNA關閉監視器無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM