繁体   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