我試圖檢測用戶何時解鎖他們的工作站。以下代碼嘗試使用WTSRegisterSessionNotification()註冊窗口以接收會話更改消息。據說在此之後,我可以監聽WM_WTSSESSION_CHANGE,它可以包含WTS_SESSION_UNLOCK作爲參數。當用戶解鎖工作站時檢測
問題:目前WTSRegisterSessionNotification()總是返回false。
任何人都知道我可以做到這一點?我在Windows 10 btw。
var {remote} = require('electron');
var ffi = require('ffi');
var winctl = require('winctl');
var NOTIFY_FOR_ALL_SESSIONS = 1;
var WM_WTSSESSION_CHANGE = parseInt('0x02B1', 16);
var hwnd = remote.getCurrentWindow().getNativeWindowHandle();
var wtsapi32 = ffi.Library('wtsapi32', {
'WTSRegisterSessionNotification': [ 'bool', [ 'int', 'int' ] ]
});
// Attempt to register
var isregistered = wtsapi32.WTSRegisterSessionNotification(hwnd, NOTIFY_FOR_ALL_SESSIONS);
console.log(isregistered); // <----- RETURNS 0...?
IInspectable recommended GetLastError()。 這不是node-ffi不支持的東西。 https://github.com/node-ffi/node-ffi/issues/261
從[documentation](https://msdn.microsoft.com/en-us/library/aa383841.aspx):*「如果函數成功,則返回值爲TRUE,否則爲FALSE。* *要獲得擴展錯誤信息,請調用[GetLastError](https://msdn.microsoft.com/en-us/library/ms679360.aspx)。**「* – IInspectable
嗨,感謝您的評論。看起來這不幸的是,當使用node-ffi時,這不是一個選項。我修改了這個問題,只是爲了確保。還發現這個:https://github.com/node-ffi/node-ffi/issues/261 –
呵呵。有人甚至去解決問題的麻煩,而且修復程序從未融入到項目中。恐怕這意味着你失明瞭。也許你可以編寫一個簡單的C DLL來代表你調用WTSRegisterSessionNotification並返回錯誤代碼? –