mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-15 15:53:55 +00:00
1. Updated win-message-pump to support dispatch queueing
2. Added initial version of enhanced user-consent dialog on windows
This commit is contained in:
@@ -2358,7 +2358,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx)
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('PE_Parser', Buffer.from('eJytV0tz2kgQvlPFf+j1RSjL8rJCEVM+EOxUqPWCC4FTOQ7SCKYsZrSjkTGbyn/fHkkIiad2KzogNNPzdffXL6n5oVoZimAr2XKloNNq92DEFfVhKGQgJFFM8GqlWnliDuUhdSHiLpWgVhQGAXHwlu7U4YXKEKWh02hBTQvcpFs3Zr9a2YoI1mQLXCiIQooILASP+RTou0MDBYyDI9aBzwh3KGyYWsVaUoxGtfI9RRALRVCYoHiAT15eDIjS1gJeK6WCu2Zzs9k0SGxpQ8hl00/kwubTaPg4th//QGv1iTn3aRiCpH9HTKKbiy2QAI1xyAJN9MkGhASylBT3lNDGbiRTjC/rEApPbYik1YrLQiXZIlIFnnamob95AWSKcLgZ2DCyb+DzwB7Z9Wrl22j2dTKfwbfBdDoYz0aPNkymMJyMH0az0WSMT19gMP4Of47GD3WgyBJqoe+B1NajiUwzSF2ky6a0oN4TiTlhQB3mMQed4suILCksxRuVHH2BgMo1C3UUQzTOrVZ8tmYqToLw2CNU8qGpyWs2YUpVJDnygmrW8QEgCxGpJM70nTqR0lRWK17EnXg/IDKkNdx6JmplVis/kri9EYlhUC/Eh3v48bO/X/VCXEkjVDO80DDzmy5uemFDBJTbW+7sgOtgyEVBcrFVNJxS4ubWXBF+xRX07x4+R55HZYP4vnBqXSt/lKvTUp2ClAhSsf4uF2OCiBuT9zCxYRVvJ3uZOYn9Ev/F9ntufW9WHVp16Fp42yliHtSy7fjUHAu33X16rLXMhhI2Jhpf1tpd/TAPMLJDgnSb8Ns9GB8H1oNhJkAp7fpSKyk2UDMiLqkjlpz9oyuBcSK3kMQ1I/LnKdfGs9Ke7ZiMHds9NHzKlzpkx47ddtCxbsvMu58dC3VV1xDIynlurOi7kbrbsj628Lrgsm5LBJ4f45aU91LfQuxGziqnsEC3VaT7WIeDxIPRthzjTtN120FO1X5bX0nCNxKSkS7jvdc1+kWZBWp97R/C9rpdK8HtWmVwUfoKrks9EvkqxpzzVy42/DKobgwe49S9AJzlS3oYawR7APETQm3MNAQ6zW8ny/mzZweuGzfA+wuZA7/jeDtZkTu8QvJmRXxY62eN3Fl5Ke0z1Djvs6cSia/NL/aiaD19GRzQX+BpuKLOqx2tn8V1Ziz86VpFnjWzE28oXB2bva2F45Z56syI42wkvu4fD0SR88d7J4/PeWmAdsfM3N6V6bHo9bZ4tmpbn/NVm3bDYp5nkThj46eO2T9ZQUMqlR7FRNGZHo77ND7rba8kVFpR53Buy5qkccrmD6KeBpVvxFZEqrJlqsE+dUu1v84uPkn3+1/xabfKsno9QJb1awJk/ZdAlw6Q1ft1AWq3D6N9bpAUpXYTNx0tgPoj/XaKbSx+R53suvFfZMmcOzBQ15mea12s6MvTqOj9ENXrUZakStZR9FvG5VQ47hv5yUIi/OWKObqHOnsEbP3cx28Xnqxiy9KP+oTHZKgAz8itucfU/X7lHo2iQo4cjhqUj4cM3rPxcsWXHFoqmbP5ULnGLeRGy7xkzjFgbN3xckljMSv2nl21/ISa/YviAvMFX4sugzxsnmJVCHbC82Jeoe+OL0KaOp+bcfobKc0ovRq/Fa2FG/m0gR9xQipde/GHUZyD1cq/OIedMw==', 'base64'));");
|
||||
|
||||
// Windows Message Pump, refer to modules/win-message-pump.js
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('win-message-pump', Buffer.from('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', 'base64'));");
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('win-message-pump', Buffer.from('eJztGmtv4zbye4D8B3Y/1HLhKokbHIIE20KWlURYv85S4t0rikCxaFtdWdJJdOzcIvfbb0hRMinJtrzb3gM4I4gtzoPz4nCG1NkPpyd6GL3G3nxBUPv84gqZAcE+0sM4CmOHeGFwenJ60vOmOEiwi1aBi2NEFhhpkTOFLw5poUccJ4CN2uo5UijCOw5617w5PXkNV2jpvKIgJGiVYODgJWjm+RjhzRRHBHkBmobLyPecYIrR2iMLNgvnoZ6efOIcwmfiALID6BE8zUQ05BAqLYLPgpDo+uxsvV6rDpNUDeP5mZ/iJWc9UzcGlvEjSEspHgIfJwmK8d9XXgxqPr8iJwJhps4ziOg7axTGyJnHGGAkpMKuY494wbyFknBG1k6MT09cLyGx97wikp0y0UBfEQEs5QTonWYh03qHOpplWq3Tk4lp3w8fbDTRxmNtYJuGhYZjpA8HXdM2hwN4ukXa4BP6YA66LYTBSjAL3kQxlR5E9KgFsQvmsjCWpp+FqThJhKfezJuCUsF85cwxmocvOA5AFxTheOkl1IsJCOeenvje0iMsCJKyRjDJD2fUeC9OjCb3T7rW600G3dF4qKP36PKGA/pPf30wbRhB55vz84v2dlzvDS0DAGz8nI/f9WGE+0FpPN3hAMfetO/EycLxGzSUTk9mq2BKhUITL3DDddIH7UGT0WoZKWHExG2ennxJA4FGmvo0fP4dT4nZBeaNtRf8uExJfoyApnEjYnIGgMh/cSgVDoM5CI4fiOcnopj4BQckaTRVLwCHeCRRKK8mpxSp1GmMHYINSqA0FuvAbRxGw3EcxjXwuFJ1OG48wo251XyZzEGpu76qM9RHJ/Zo+CswMgo9SAux5f0Do/fgXPQLal+ha3R51ZSM9xkiCfs/tUU+AwigFzyKw82r0vjAEVTX9xvVtOoyAnI6Vg1OufYxWYSu0rjDpOckxJBMdIiiH7orH99DjPtYK9kB8lO8R4UHBq5QIKXbIT4HyqJ08NwLRpDOSDUrGTt9SmPe2EzqkHTxLMUH2ac1KSBHha8pVS0CL4kcMl3wRVhrEiNwa2t96/n+GNZuHVxwrQ75LyBHEHT1mojHKGgGL47vuTCSSnKQYBQm2QRanQnGEDkJrEjdd5KkZjBYOHCPUcLChAdPmNTCX4Tr+nFjvYL8y5ETO0sMiiRmMAtrqW7HTpD4bGCb7g57JOn6886KkDDQF3j6Gbu1lhxFzQlLM81db0+iuKPQijzBqHakiRRWte5vw4AU3bYb2woh/DrxKlnUIAFHdz7roV/KoDuRIYHierg23pAta5EggnCEqiOlAFv8+puMAHvjlEb3EXvSJd2Trs4lwTI21QbPoQsvSAirPd8Xt4/ihqHkE5ydyUymAQRzpbyNPuS7yWTC1qtgCm+GspIFff99VnKoa7aMyiPqszP9PI9DKMbQd+9RsPJ9nlt4tUM/U8APfQzFyCy8ACcYtm0O7qDG1D/cjYcPgy7qjB+s+9x/ZWM8f36moZObQvTtNrKUnbId5KxGqfM6q9kMx0pTpcW8IqN2cYxnOxwNq44WHy0kg5sqCTOW3C5vlTGVempdw1Ut9AW6ERdfIxKvMHqrji34EcEOm/KDeOFl650fPju+7vg+tY1yuZf4QIBuNVNp74EfoFH7qd0zClZ7SqgdKjmkOn+r6S/PwfR/udxr+r1q1p5/v3v3r+Jv1bJNtWx/g5ZhABuA5H4IpbxxCYMJlECAp2xoD9BCGyi+W2gd0e2whXz2XV7ZtAeh3GHjgxbyPZo5foKFtUazCRNnGalPlHGWJGgmkQDqo+NTXTfZQ3PLRZgwTXLIpt06bdihiVwlMliUhy6RGxlMRXazRGIRJyZZwUhtWEDORKSNy7adoUuQ/75mhqLyZsa65t/pmM/H/NLY0wJv8vFicJDQgsY8mENHhjeNZk4TO+uMpoWopa4R95ebK3EN6r1tE7qoN4g6xiRTnuv1FGOyigMQbYXLLZvoyYxcyvM7nMQdNcEo4GcUUwg7JNX/Wgs94+nKyY5f+Nxo7STsXGbBtje3zJiFnaBGVivJ3YXqJK/BVKHBvCemb8rsI3VrTTkDylhkgQMlX0IK2LFZRquwSx5Z22lU6ECEOKSsKqZ8Kw6+yY8YVt9BrxR247FhP4wH6FHrPRioa9iGbhtdCPHU2duDiip5tkEhHmi8R8VjEjXbyxpHGki2SjpVpWHKQ2Vb7JmMBlQsbr48xZYSQvaJ03zFrbQDqUKFuIb0wqPwk+oDBi+k0/eFdEpzO+QNewFauEqTwouLpNippcsEgpmSmG5eqFSYK8u84kKdU0879ARxFodLFK5iJJ8LaIBOq++DWfrIPP1fmqn/81n5/5n4fyQTH5V1DmacOtlGTi1ynZavyCYsmicXP6/mdzqIkhG9FfvlvflELm2bRQ+VS0kqwneMKNieWbCQyk7QAT2bewcKmOfL242k5kG2vFmkStdA4zMUJqhBqOJNQl59nOQLtd6EAh27l6CfqyuQgM5N83EY9cOEwHfo8+uH42Vb0y7la4QTCJl0V0w+Jh1NOdZTZzjuGuPjJdocK8mGSvBVjnk9dqrXr54K+nayON7GjAhdnH/dpAvM7lKPnDWjyqctHKCI5IV7ADEBiGjViaJ11Cqoxi6cKLQqSoMD/IlHfJxXU78g2m2XT2Jqcyod0tTTMl9O9dA39dBev8IeLOjqsU8jpYXO87/C3ivnfmVxuHGkob3ITgSK7HbQ8HzI7t0Qu1ukN8gLz3VxgNaFxHjIHGkVmV5ztlBjH9NSTUY/39qPVNo9LfjRYl+3UakHu9WFynRXM1M5W0JLbnaDXadlyXDk48gnx3U1usjT83fanNBDoqwKKENZlLSQE8+TnYdNSy/B4l03H5L8wCorVlMHeJ0RKfxbdfHMWfnEDDwiV+QV9wBqRA+WvzChr9FWvGv2v4WiazaRVA+mpTsSa8e3glXklCkapQxVXPhn0bxAS2WWPQeQ5uhDipI+uWuO87GFPrVQMEmXcHDP1+eCnvA5MQ7o7z4OVvBl8tNJymu0+4iPqppdiGTj9OhNoUCPvn0CGKslfedgd/NImaTWzJF/9X4T7fZWNuGuMFIq7sgKGxAPo0oP5MH9NA0DWNMr9k6J5IZqlDx7fSlEzcwLHD8LsBgnof+CFWnF1Vxl1XJWi7ajjK4KYx8HcygjfpbSacFD1Ju/53csMn2y8GaklAqE4PhdpT9uKny+ClLiGl1DFf+ozbhT9VX6DtSrxIh7uUAXtSWHMAZRGYdtTPsiosg3DcvqkJXUE67nxXJov/at7Xsv2c+0XWabaqnJ3e1Ib6ak7eLPpd2zYsMpBWbxQvsPKehAqV1d4AH5KmUsvuXx75Rxj5yVsh7eTumndKRQOfg15wzp6c88JMhBDfryWyM74KkRDNL7N3+IlWlM/5GhsONA03kO43LGyj4u9jHBuwU8ushib7DRdVo649tHW7qmi/EyfMGa7/eoTgGOk9K13TFlXMWFMO1wjoy0N+GmUIGqeFcTmZAwYidGwmYmbGcULG5kKfqeLYxFys4sJ2VU8X0lRcyd/H1PnkSr7vdCKIBy/wkRmSlZ8tHUD6GabMomy07JxPqXIYoac8o/X2X2KuufoPPNYaVT1v+U+VYXTTxehNaBBcySvdwCPX8EK5jWFuXXam+KWGqKY/HTqNJ8+VnUtXBQ1aLDujairzKn47owfm/2unT0Mj11E0Yn5qA7nJRhPXPE4GMjZdfmQEkMimWZnZ45uLMY1qXAomtaWqdnsHm5kBzQu7sda30jFfNyC6Bv0IzS0XQ+Nnpv6eNhr3fN32UuS2Hqw4GpU3hbVKGvfTT75t/SaS4qAJ3hRz7ZxRZmDnIimRsHbInaZUmGj8a4p41GXGmRfjQcpbpdiaOWxPFyO/7J6huDBz5+lY/bWseyhyNJbEkC+97UPwjWFXjaZq9CrkeTOpBhX0jjotVTS2wXyJ54pR1gVcQaH580XTdG9i2IYW3FuEino+DRaBuMkuQAhEgzBrbRvTNy0rYAHfZHQ8u0uX6VscrQgMVH+97ojXIulyKXgQ06jzSIebsUGYAAgdsfdrWeaF+mQ4bQ0z4Z49zIV1UyAMrwwR7bvVL0U6Bxa5c8xMdTf3S0cYZwKSLY47GhdWEdSuTFyftdM08F51z9jMVgqOm2+ajZRmnBMqg5uDfGpp3KLy3GHCW13GBom7efBDkuS3IMhmAlc2zoNFt1TLuvjcRAyziOzbv73B4XRUDJIBKp3SsYpF1lEMvWbFMXwqotMrGHw54UksypW+ioP7REf13loLE2sKQ4YqwzcMpTCuYLcXn9C9lhUL8=', 'base64'), '2021-12-10T08:38:50.000-08:00');");
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('win-console', Buffer.from('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', 'base64'));");
|
||||
|
||||
// Windows Cert Store, refer to modules/win-certstore.js
|
||||
|
||||
@@ -37,22 +37,50 @@ function WindowsMessagePump(options)
|
||||
|
||||
this._user32 = GM.CreateNativeProxy('User32.dll');
|
||||
this._user32.mp = this;
|
||||
this._user32.CreateMethod('BeginPaint');
|
||||
this._user32.CreateMethod('CreateWindowExW');
|
||||
this._user32.CreateMethod('DefWindowProcW');
|
||||
this._user32.CreateMethod('DestroyWindow');
|
||||
this._user32.CreateMethod('DispatchMessageW');
|
||||
this._user32.CreateMethod('EndPaint');
|
||||
this._user32.CreateMethod('FillRect');
|
||||
this._user32.CreateMethod('GetClientRect');
|
||||
this._user32.CreateMethod('GetDC');
|
||||
this._user32.CreateMethod('GetMessageW');
|
||||
this._user32.CreateMethod('InvalidateRect')
|
||||
this._user32.CreateMethod('PostMessageA');
|
||||
this._user32.CreateMethod('RegisterClassExW');
|
||||
this._user32.CreateMethod('SendMessageW');
|
||||
this._user32.CreateMethod('SetWindowPos');
|
||||
this._user32.CreateMethod('ShowWindow');
|
||||
this._user32.CreateMethod('SystemParametersInfoA');
|
||||
this._user32.CreateMethod('TranslateMessage');
|
||||
|
||||
this._user32.CreateMethod('IsDlgButtonChecked');
|
||||
this._user32.CreateMethod('CheckDlgButton');
|
||||
|
||||
this._gdi32 = GM.CreateNativeProxy('Gdi32.dll');
|
||||
this._gdi32.mp = this;
|
||||
this._gdi32.CreateMethod('CreateFontW');
|
||||
this._gdi32.CreateMethod('CreateSolidBrush');
|
||||
this._gdi32.CreateMethod('SetBkColor');
|
||||
this._gdi32.CreateMethod('SetBkMode');
|
||||
this._gdi32.CreateMethod('SetTextColor');
|
||||
|
||||
this._pendingCreate = [];
|
||||
|
||||
this.wndclass = GM.CreateVariable(GM.PointerSize == 4 ? 48 : 80);
|
||||
this.wndclass.mp = this;
|
||||
this.wndclass.hinstance = this._kernel32.GetModuleHandleA(0);
|
||||
//this.wndclass.cname = GM.CreateVariable('MainWWWClass');
|
||||
|
||||
if (options && options.window && options.window.background != null)
|
||||
{
|
||||
console.info1('SETTING BACKGROUND BRUSH');
|
||||
this.wndclass.bkbrush = this._gdi32.CreateSolidBrush(options.window.background);
|
||||
this.wndclass.bkbrush.pointerBuffer().copy(this.wndclass.Deref(GM.PointerSize == 4 ? 32 : 48, GM.PointerSize).toBuffer())
|
||||
}
|
||||
|
||||
this.wndclass.cnamew = GM.CreateVariable('MainWWWClass', { wide: true });
|
||||
this.wndclass.wndproc = GM.GetGenericGlobalCallback(4);
|
||||
this.wndclass.wndproc.mp = this;
|
||||
@@ -83,9 +111,17 @@ function WindowsMessagePump(options)
|
||||
}
|
||||
else
|
||||
{
|
||||
var r = GM.CreatePointer();
|
||||
r.Val = msgRet;
|
||||
this.EndDispatcher(r);
|
||||
console.info1('RETURN VALUE DETECTED', msgRet._ObjectID);
|
||||
if (msgRet._ObjectID == '_GenericMarshal.Variable')
|
||||
{
|
||||
this.EndDispatcher(msgRet);
|
||||
}
|
||||
else
|
||||
{
|
||||
var r = GM.CreatePointer();
|
||||
r.Val = msgRet;
|
||||
this.EndDispatcher(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(this.mp._hwnd == null && this.CallingThread() == this.mp._user32.RegisterClassExW.async.threadId())
|
||||
@@ -148,8 +184,40 @@ function WindowsMessagePump(options)
|
||||
}
|
||||
});
|
||||
});
|
||||
this._addAsyncMethodCall = function addAsyncMethodCall(func, args)
|
||||
{
|
||||
var promise = require('promise');
|
||||
var ret = new promise(promise.defaultInit);
|
||||
|
||||
this._pendingCreate.push({ func: func, args: args, p: ret });
|
||||
return (ret);
|
||||
}
|
||||
this._addCreateWindowEx = function _addCreateWindowEx(dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
|
||||
{
|
||||
var args = [];
|
||||
for (var i in arguments)
|
||||
{
|
||||
args.push(arguments[i]);
|
||||
}
|
||||
return (this._addAsyncMethodCall(this._user32.CreateWindowExW.async, args));
|
||||
}
|
||||
this._startPump_continuation = function _startPump_continuation(h)
|
||||
{
|
||||
this.finalpromise.resolve(h);
|
||||
this.nativeProxy.mp._startPump();
|
||||
}
|
||||
this._startPump = function _startPump()
|
||||
{
|
||||
if (this._pendingCreate.length > 0)
|
||||
{
|
||||
var j = this._pendingCreate.shift();
|
||||
var args = j.args;
|
||||
args.unshift(this._user32.RegisterClassExW.async);
|
||||
var p2 = j.func.apply(this._user32, args);
|
||||
p2.finalpromise = j.p;
|
||||
p2.then(this._startPump_continuation);
|
||||
return;
|
||||
}
|
||||
this._user32.GetMessageW.async(this._user32.RegisterClassExW.async, this._msg, this._hwnd, 0, 0).then(function (r)
|
||||
{
|
||||
if(r.Val > 0)
|
||||
|
||||
380
modules/win-userconsent.js
Normal file
380
modules/win-userconsent.js
Normal file
@@ -0,0 +1,380 @@
|
||||
/*
|
||||
Copyright 2021 Intel Corporation
|
||||
@author Bryan Roe
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
const WM_SETFONT = 0x0030;
|
||||
const WM_CTLCOLORSTATIC = 0x0138;
|
||||
const WM_CREATE = 0x0001;
|
||||
const WS_TABSTOP = 0x00010000;
|
||||
const WS_VISIBLE = 0x10000000;
|
||||
const WS_CHILD = 0x40000000;
|
||||
const BS_DEFPUSHBUTTON = 0x00000001;
|
||||
const BS_CHECKBOX = 0x00000002;
|
||||
const WM_ERASEBKGND = 0x0014;
|
||||
const WM_USER = 0x0400;
|
||||
const EM_SETBKGNDCOLOR = (WM_USER + 67);
|
||||
const WM_COMMAND = 0x0111;
|
||||
|
||||
const SPI_GETWORKAREA = 0x0030;
|
||||
|
||||
const BST_UNCHECKED = 0x0000;
|
||||
const BST_CHECKED = 0x0001;
|
||||
const SS_BLACKRECT = 0x00000004;
|
||||
const SS_GRAYRECT = 0x00000005;
|
||||
|
||||
const SS_LEFT = 0x00000000;
|
||||
const SS_CENTER = 0x00000001;
|
||||
const SS_RIGHT = 0x00000002;
|
||||
const SS_REALSIZECONTROL = 0x00000040;
|
||||
const DS_CENTER = 0x0800;
|
||||
|
||||
|
||||
const FW_DONTCARE = 0;
|
||||
const FW_THIN = 100;
|
||||
const FW_EXTRALIGHT = 200;
|
||||
const FW_LIGHT = 300;
|
||||
const FW_NORMAL = 400;
|
||||
const FW_MEDIUM = 500;
|
||||
const FW_SEMIBOLD = 600;
|
||||
const FW_BOLD = 700;
|
||||
const FW_EXTRABOLD = 800;
|
||||
const FW_HEAVY = 900;
|
||||
|
||||
const DEFAULT_CHARSET = 1;
|
||||
|
||||
const OUT_DEFAULT_PRECIS = 0;
|
||||
const OUT_STRING_PRECIS = 1;
|
||||
const OUT_CHARACTER_PRECIS = 2;
|
||||
const OUT_STROKE_PRECIS = 3;
|
||||
const OUT_TT_PRECIS = 4;
|
||||
const OUT_DEVICE_PRECIS = 5;
|
||||
const OUT_RASTER_PRECIS = 6;
|
||||
const OUT_TT_ONLY_PRECIS = 7;
|
||||
const OUT_OUTLINE_PRECIS = 8;
|
||||
const OUT_SCREEN_OUTLINE_PRECIS = 9;
|
||||
const OUT_PS_ONLY_PRECIS = 10;
|
||||
|
||||
const CLIP_DEFAULT_PRECIS = 0;
|
||||
const CLIP_CHARACTER_PRECIS = 1;
|
||||
const CLIP_STROKE_PRECIS = 2;
|
||||
const CLIP_MASK = 0xf;
|
||||
const CLIP_LH_ANGLES = (1 << 4);
|
||||
const CLIP_TT_ALWAYS = (2 << 4);
|
||||
|
||||
const DEFAULT_QUALITY = 0;
|
||||
const DRAFT_QUALITY = 1;
|
||||
const PROOF_QUALITY = 2;
|
||||
|
||||
const DEFAULT_PITCH = 0;
|
||||
const FIXED_PITCH = 1;
|
||||
const VARIABLE_PITCH = 2;
|
||||
|
||||
const FF_DONTCARE = (0 << 4); /* Don't care or don't know. */
|
||||
const FF_ROMAN = (1 << 4); /* Variable stroke width, serifed. */
|
||||
const FF_SWISS = (2 << 4); /* Variable stroke width, sans-serifed. */
|
||||
const FF_MODERN = (3 << 4); /* Constant stroke width, serifed or sans-serifed. */
|
||||
const FF_SCRIPT = (4 << 4); /* Cursive, etc. */
|
||||
const FF_DECORATIVE = (5 << 4); /* Old English, etc. */
|
||||
|
||||
const ES_LEFT = 0x0000;
|
||||
const ES_CENTER = 0x0001;
|
||||
const ES_RIGHT = 0x0002;
|
||||
const ES_MULTILINE = 0x0004;
|
||||
const ES_UPPERCASE = 0x0008;
|
||||
const ES_LOWERCASE = 0x0010;
|
||||
const ES_PASSWORD = 0x0020;
|
||||
const ES_AUTOVSCROLL = 0x0040;
|
||||
const ES_AUTOHSCROLL = 0x0080;
|
||||
const ES_NOHIDESEL = 0x0100;
|
||||
const ES_OEMCONVERT = 0x0400;
|
||||
const ES_READONLY = 0x0800;
|
||||
const ES_WANTRETURN = 0x1000;
|
||||
|
||||
const STM_SETIMAGE = 0x0172;
|
||||
const STM_GETIMAGE = 0x0173;
|
||||
const IMAGE_BITMAP = 0;
|
||||
const SS_BITMAP = 0x0000000E;
|
||||
|
||||
|
||||
const TRANSPARENT = 1;
|
||||
const OPAQUE = 2;
|
||||
const COLOR_BACKGROUND = 1;
|
||||
|
||||
var promise = require('promise');
|
||||
var GM = require('_GenericMarshal');
|
||||
var MessagePump = require('win-message-pump');
|
||||
|
||||
var SHM = GM.CreateNativeProxy('Shlwapi.dll');
|
||||
var gdip = GM.CreateNativeProxy('Gdiplus.dll');
|
||||
|
||||
SHM.CreateMethod('SHCreateMemStream');
|
||||
gdip.CreateMethod('GdipLoadImageFromStream');
|
||||
gdip.CreateMethod('GdipCreateBitmapFromStream');
|
||||
gdip.CreateMethod('GdipCreateHBITMAPFromBitmap');
|
||||
gdip.CreateMethod('GdiplusStartup');
|
||||
gdip.CreateMethod('GdiplusShutdown');
|
||||
|
||||
function RGB(r, g, b)
|
||||
{
|
||||
return (r | (g << 8) | (b << 16));
|
||||
}
|
||||
function CENTER(w, cx, cw)
|
||||
{
|
||||
var a = cw / 2;
|
||||
var b = w / 2;
|
||||
return (Math.floor(cx + (a - b)));
|
||||
}
|
||||
function pump_onTimeout(pump)
|
||||
{
|
||||
pump.promise.reject('TIMEOUT');
|
||||
pump.close();
|
||||
}
|
||||
function pump_onExit()
|
||||
{
|
||||
console.info1('message pump exited');
|
||||
this.promise.reject('CLOSED');
|
||||
}
|
||||
function pump_onMessage(msg)
|
||||
{
|
||||
switch (msg.message)
|
||||
{
|
||||
case WM_COMMAND:
|
||||
switch(msg.wparam)
|
||||
{
|
||||
case 0xFFF0:
|
||||
this._addAsyncMethodCall(this._user32.IsDlgButtonChecked.async, [this._HANDLE, 0xFFF0]).then(function (v)
|
||||
{
|
||||
if (v.Val == 0)
|
||||
{
|
||||
this.pump.autoAccept = true;
|
||||
this.pump._addAsyncMethodCall(this.pump._user32.CheckDlgButton.async, [this.pump._HANDLE, 0xFFF0, BST_CHECKED]);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.pump.autoAccept = false;
|
||||
this.pump._addAsyncMethodCall(this.pump._user32.CheckDlgButton.async, [this.pump._HANDLE, 0xFFF0, BST_UNCHECKED]);
|
||||
}
|
||||
}).parentPromise.pump = this;
|
||||
break;
|
||||
case 0xFFF2: // Allow
|
||||
if (this.timeout != null) { clearTimeout(this.timeout); this.timeout = null; }
|
||||
this.promise.resolve(this.autoAccept);
|
||||
this.close();
|
||||
break;
|
||||
case 0xFFF3: // Deny
|
||||
if (this.timeout != null) { clearTimeout(this.timeout); this.timeout = null; }
|
||||
this.promise.reject('DENIED');
|
||||
this.close();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WM_CTLCOLORSTATIC:
|
||||
console.info1('WM_CTLCOLORSTATIC => ' + msg.lparam, msg.wparam);
|
||||
var hdcStatic = msg.wparam;
|
||||
this._gdi32.SetTextColor(hdcStatic, RGB(200, 200, 200));
|
||||
this._gdi32.SetBkColor(hdcStatic, RGB(0, 54, 105));
|
||||
return (this.brush);
|
||||
break;
|
||||
case WM_CREATE:
|
||||
console.info1('WM_CREATE');
|
||||
break;
|
||||
case WM_ERASEBKGND:
|
||||
console.info1('WM_ERASEBKGND');
|
||||
break;
|
||||
default:
|
||||
//console.log(msg.message);
|
||||
break;
|
||||
}
|
||||
}
|
||||
function pump_onHwnd(h)
|
||||
{
|
||||
this._HANDLE = h;
|
||||
|
||||
this._addCreateWindowEx(0, GM.CreateVariable('BUTTON', { wide: true }), GM.CreateVariable(this.translations.Allow, { wide: true }), WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
|
||||
345, // x position
|
||||
225, // y position
|
||||
100, // Button width
|
||||
30, // Button height
|
||||
h, // Parent window
|
||||
0xFFF2, // Child ID
|
||||
0,
|
||||
0);
|
||||
this._addCreateWindowEx(0, GM.CreateVariable('BUTTON', { wide: true }), GM.CreateVariable(this.translations.Deny, { wide: true }), WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
|
||||
455, // x position
|
||||
225, // y position
|
||||
100, // Button width
|
||||
30, // Button height
|
||||
h, // Parent window
|
||||
0xFFF3, // Child ID
|
||||
0,
|
||||
0);
|
||||
this._addCreateWindowEx(0, GM.CreateVariable('BUTTON', { wide: true }), GM.CreateVariable(this.translations.Auto, { wide: true }), WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_CHECKBOX,
|
||||
210, // x position
|
||||
180, // y position
|
||||
335, // Button width
|
||||
30, // Button height
|
||||
h, // Parent window
|
||||
0xFFF0, // Child ID
|
||||
0,
|
||||
0);
|
||||
this._addCreateWindowEx(0, GM.CreateVariable('STATIC', { wide: true }), GM.CreateVariable('NONE', { wide: true }), WS_TABSTOP | WS_VISIBLE | WS_CHILD | SS_BLACKRECT | SS_BITMAP | SS_REALSIZECONTROL,
|
||||
10, // x position
|
||||
10, // y position
|
||||
192, // Button width
|
||||
192, // Button height
|
||||
h, // Parent window
|
||||
0xFFF1, // Child ID
|
||||
0,
|
||||
0).then(function (h)
|
||||
{
|
||||
this.pump._addAsyncMethodCall(this.pump._user32.SendMessageW.async, [h, STM_SETIMAGE, IMAGE_BITMAP, this.pump.options.bitmap.Deref()]);
|
||||
}).parentPromise.pump = this;
|
||||
this._addCreateWindowEx(0, GM.CreateVariable('STATIC', { wide: true }), GM.CreateVariable(this.username, { wide: true }), WS_TABSTOP | WS_VISIBLE | WS_CHILD | SS_LEFT,
|
||||
10, // x position
|
||||
225, // y position
|
||||
192, // Button width
|
||||
30, // Button height
|
||||
h, // Parent window
|
||||
0xFFF2, // Child ID
|
||||
0,
|
||||
0);
|
||||
this._addCreateWindowEx(0, GM.CreateVariable('STATIC', { wide: true }), GM.CreateVariable(this.translations.Caption, { wide: true }), WS_TABSTOP | WS_VISIBLE | WS_CHILD | SS_LEFT,
|
||||
210, // x position
|
||||
10, // y position
|
||||
350, // Button width
|
||||
150, // Button height
|
||||
h, // Parent window
|
||||
0xFFF3, // Child ID
|
||||
0,
|
||||
0).then(function (h)
|
||||
{
|
||||
this.pump._addAsyncMethodCall(this.pump._user32.SendMessageW.async, [h, WM_SETFONT, this.pump.font, 1]);
|
||||
}).parentPromise.pump = this;
|
||||
}
|
||||
function createLocal(title, caption, username, options)
|
||||
{
|
||||
if (options == null) { options = {}; }
|
||||
if (!options.translations)
|
||||
{
|
||||
options.translations =
|
||||
{
|
||||
Allow: 'Allow',
|
||||
Deny: 'Deny',
|
||||
Auto: 'Auto accept all connections for next 5 minutes',
|
||||
Caption: 'User "' + username + '" is requesting remote desktop control of this computer. Click allow to grant access'
|
||||
};
|
||||
}
|
||||
if (!options.font) { options.font = 'Arial'; }
|
||||
if (!options.background) { options.background = RGB(0, 54, 105); }
|
||||
|
||||
var ret = new promise(promise.defaultInit);
|
||||
ret.opt =
|
||||
{
|
||||
window:
|
||||
{
|
||||
winstyles: MessagePump.WindowStyles.WS_VISIBLE | MessagePump.WindowStyles.WS_BORDER | MessagePump.WindowStyles.WS_CAPTION | MessagePump.WindowStyles.WS_SYSMENU,
|
||||
x: 300, y: 300, left: 0, right: 300, width: 580, height: 305, title: title, background: options.background
|
||||
},
|
||||
};
|
||||
|
||||
var rect = GM.CreateVariable(16);
|
||||
var startupinput = require('_GenericMarshal').CreateVariable(24);
|
||||
ret.gdipToken = require('_GenericMarshal').CreateVariable(4);
|
||||
ret.pump = new MessagePump(ret.opt);
|
||||
|
||||
if (ret.pump._user32.SystemParametersInfoA(SPI_GETWORKAREA, 0, rect, 0).Val != 0)
|
||||
{
|
||||
var r = { x: rect.toBuffer().readInt32LE(0), y: rect.toBuffer().readInt32LE(4), w: rect.toBuffer().readInt32LE(8), h: rect.toBuffer().readInt32LE(12) };
|
||||
r.w = r.w - r.x;
|
||||
r.h = r.h - r.y;
|
||||
console.info1('Primary Display: ' + JSON.stringify(r));
|
||||
console.info1(' => x: ' + CENTER(580, r.x, r.w) + ', y: ' + CENTER(305, r.y, r.h));
|
||||
ret.opt.window.x = CENTER(580, r.x, r.w);
|
||||
ret.opt.window.y = CENTER(305, r.y, r.h);
|
||||
}
|
||||
|
||||
ret.pump.autoAccept = false;
|
||||
ret.pump.promise = ret;
|
||||
ret.pump.brush = ret.pump._gdi32.CreateSolidBrush(options.background);
|
||||
ret.pump.translations = options.translations;
|
||||
ret.pump.username = username;
|
||||
ret.pump.options = options;
|
||||
ret.pump.font = ret.pump._gdi32.CreateFontW(20, 0, 0, 0, FW_DONTCARE, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, GM.CreateVariable(options.font, { wide: true }));
|
||||
|
||||
if (options.b64Image)
|
||||
{
|
||||
startupinput.toBuffer().writeUInt32LE(1);
|
||||
gdip.GdiplusStartup(ret.gdipToken, startupinput, 0);
|
||||
|
||||
var raw = Buffer.from(options.b64Image, 'base64');
|
||||
|
||||
var nbuff = require('_GenericMarshal').CreateVariable(raw.length);
|
||||
raw.copy(nbuff.toBuffer());
|
||||
var istream = SHM.SHCreateMemStream(nbuff, raw.length);
|
||||
|
||||
var pimage = require('_GenericMarshal').CreatePointer();
|
||||
var hbitmap = require('_GenericMarshal').CreatePointer();
|
||||
var status = gdip.GdipCreateBitmapFromStream(istream, pimage);
|
||||
status = gdip.GdipCreateHBITMAPFromBitmap(pimage.Deref(), hbitmap, options.background);
|
||||
if (status.Val == 0) { options.bitmap = hbitmap; }
|
||||
|
||||
}
|
||||
|
||||
ret.pump.on('message', pump_onMessage);
|
||||
ret.pump.on('hwnd', pump_onHwnd);
|
||||
ret.pump.on('exit', pump_onExit);
|
||||
|
||||
if (options.timeout != null)
|
||||
{
|
||||
ret.pump.timeout = setTimeout(pump_onTimeout, options.timeout, ret.pump);
|
||||
}
|
||||
return (ret);
|
||||
}
|
||||
|
||||
function create(title, caption, username, options)
|
||||
{
|
||||
if (options.uid == null) { return (createLocal(title, caption, username, options)); }
|
||||
var self = require('user-sessions').getProcessOwnerName(process.pid).tsid;
|
||||
if (self != 0)
|
||||
{
|
||||
if(options.uid == self)
|
||||
{
|
||||
// No need to dispatch, we can do this locally
|
||||
return (createLocal(title, caption, username, options));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Need to dispatch, but we don't have enough permissions to do that
|
||||
var ret = new promise(promise.defaultInit);
|
||||
ret.reject('Insufficient permission to dispatch to different user session');
|
||||
return (ret);
|
||||
}
|
||||
}
|
||||
if (options.uid == 0)
|
||||
{
|
||||
// TSID 0 doesn't have access to draw on the desktop
|
||||
var ret = new promise(promise.defaultInit);
|
||||
ret.reject('Cannot create dialog on this session');
|
||||
return (ret);
|
||||
}
|
||||
|
||||
// Need to dispatch to user session to display dialog
|
||||
}
|
||||
|
||||
module.exports =
|
||||
{
|
||||
create: create
|
||||
};
|
||||
Reference in New Issue
Block a user