사용자가 워크 스테이션을 잠금 해제 할 때를 감지하려고합니다. 다음 코드는 WTSRegisterSessionNotification()을 사용하여 세션 변경 메시지를 수신하기 위해 창을 등록하려고 시도합니다. 이 후 필자는 WTS_SESSION_UNLOCK을 매개 변수로 포함 할 수있는 WM_WTSSESSION_CHANGE를 수신 할 수 있습니다.사용자가 워크 스테이션을 잠금 해제 할 때 감지합니다.
문제 : 현재 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...?
인스 턴 트 가능 권장 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 –
허. 그리고 누군가는 문제를 해결하는 데 어려움을 겪었고, 수정본은 결코 프로젝트에 통합되지 않았습니다. 나는 그것이 당신이 장님으로 날아간다는 것을 의미합니다. 아마도 당신을 대신하여 WTSRegisterSessionNotification을 호출하고 오류 코드를 반환하는 간단한 C DLL을 작성할 수 있습니까? –