Я делаю настольное приложение (node.js электронный сервер).
Я хочу добиться чего-то вроде блокнота в окне 10! когда мы не сохраняем файл блокнота и пытаемся выполнить перезагрузку / выход из системы / завершение работы, появляется следующий экран:
- Можно ли выполнить очистку, когда пользователь выполняет END TASK из диспетчера задач?
можно ли выполнить очистку при закрытии / перезапуске / выходе из системы по какой-либо причине?
Я пробовал перед выходом, будет выход, quit, et c ... но этот обработчик событий не запускается из-за закрытия приложения до этого.
В данный момент я пытаюсь решить проблему с помощью собственного кода node.js аддон. (WM_QUERYENDSESSION возвращает false и затем выполняет очистку.)
Могу ли я достичь цели, продвигаясь таким образом?
#include <node.h>
#include <windows.h>
#include <iostream>
LRESULT CALLBACK WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// I am stuck here I don't know what to do next I have tried many things but nothing seems to work
if (message == WM_ENDSESSION)
{
if (lParam == ENDSESSION_LOGOFF)
{
/*Handle event*/
}
}
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED);
return false; //WindowProc(message, wParam, lParam);
}
namespace demo
{
using v8::FunctionCallbackInfo;
using v8::Isolate;
using v8::Local;
using v8::NewStringType;
using v8::Object;
using v8::String;
using v8::Value;
void Method(const FunctionCallbackInfo<Value> &args)
{
Isolate *isolate = args.GetIsolate();
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms686227(v=vs.85).aspx
if (!SetProcessShutdownParameters(0x4ff, 0)) // greedy highest documented System reserved FirstShutdown
{
// Fallback
if (!SetProcessShutdownParameters(0x3ff, 0)) // highest notification range for applications
{
// shouldn't happen
}
}
args.GetReturnValue().Set(String::NewFromUtf8(
isolate, "worhgjhbh h uhb-oi0990909 ld", NewStringType::kNormal)
.ToLocalChecked());
}
void Initialize(Local<Object> exports)
{
NODE_SET_METHOD(exports, "hello", Method);
}
NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
}
{
"targets":[
{
"target_name":"test",
"sources":["test.cc"]
}
]
}
- app. js (файл узла) В этом файле много строк кода, но у меня есть пропуск
const addon = require('./build/Release/test')
console.log(addon);
console.log(addon.hello());
Есть ли другой способ очистки?