diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index c2b63e6..ba14183 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2368,8 +2368,15 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) // Windows Message Pump, refer to modules/win-message-pump.js duk_peval_string_noresult(ctx, "addCompressedModule('win-userconsent', Buffer.from('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', 'base64'), '2022-01-19T20:11:35.000-08:00');"); - duk_peval_string_noresult(ctx, "addCompressedModule('win-message-pump', Buffer.from('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', 'base64'), '2021-12-10T11:39:27.000-08:00');"); + duk_peval_string_noresult(ctx, "addCompressedModule('win-message-pump', Buffer.from('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', 'base64'), '2022-01-24T15:21:02.000-08:00');"); duk_peval_string_noresult(ctx, "addCompressedModule('win-console', Buffer.from('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', 'base64'));"); + char *_windialog = ILibMemory_Allocate(34645, 0, NULL, NULL); + memcpy_s(_windialog + 0, 34644, "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", 16000); + memcpy_s(_windialog + 16000, 18644, "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", 16000); + memcpy_s(_windialog + 32000, 2644, "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", 2644); + ILibDuktape_AddCompressedModuleEx(ctx, "win-dialog", _windialog, "2022-01-25T15:47:41.000-08:00"); + free(_windialog); + // Windows Cert Store, refer to modules/win-certstore.js duk_peval_string_noresult(ctx, "addCompressedModule('win-certstore', Buffer.from('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', 'base64'));"); diff --git a/modules/win-dialog.js b/modules/win-dialog.js new file mode 100644 index 0000000..673704e --- /dev/null +++ b/modules/win-dialog.js @@ -0,0 +1,534 @@ +/* +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 HALFTONE = 4; +const SmoothingModeAntiAlias = 5; +const InterpolationModeBicubic = 8; + +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 EM_SETCHARFORMAT = (WM_USER + 68); +const SCF_SELECTION = 0x0001; +const SCF_ALL = 0x0004; +const CFM_STRIKEOUT = 0x00000008; +const CFE_STRIKEOUT = 0x00000008; + + +const WM_COMMAND = 0x0111; +const WS_VSCROLL = 0x00200000; +const WS_HSCROLL = 0x00100000; +const CFM_COLOR = 0x40000000; + +const SPI_GETWORKAREA = 0x0030; + +const BS_MULTILINE = 0x00002000; +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 SS_CENTERIMAGE = 0x00000200; + + +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; + +var defaultImage = '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'; + +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 rich = GM.CreateNativeProxy('Msftedit.dll'); + +var SHM = GM.CreateNativeProxy('Shlwapi.dll'); +SHM.CreateMethod('SHCreateMemStream'); +var gdip = GM.CreateNativeProxy('Gdiplus.dll'); + +gdip.CreateMethod('GdipBitmapSetResolution'); +gdip.CreateMethod('GdipCreateBitmapFromStream'); +gdip.CreateMethod('GdipCreateBitmapFromScan0'); +gdip.CreateMethod('GdipCreateHBITMAPFromBitmap'); +gdip.CreateMethod('GdipDisposeImage'); +gdip.CreateMethod('GdipDrawImageRectI'); +gdip.CreateMethod('GdipFree'); +gdip.CreateMethod('GdipLoadImageFromStream'); +gdip.CreateMethod('GdipGetImageGraphicsContext'); +gdip.CreateMethod('GdipGetImageHorizontalResolution'); +gdip.CreateMethod('GdipGetImagePixelFormat'); +gdip.CreateMethod('GdipGetImageVerticalResolution'); +gdip.CreateMethod('GdipSetInterpolationMode'); +gdip.CreateMethod('GdipSetSmoothingMode'); +gdip.CreateMethod('GdiplusStartup'); +gdip.CreateMethod('GdiplusShutdown'); + +function RGB(r, g, b) +{ + return (r | (g << 8) | (b << 16)); +} +function gdip_RGB(r, g, b) +{ + if (g != null && b != null) + { + return (b | (g << 8) | (r << 16)); + } + else + { + var _r = (r & 0xFF); + var _g = ((r >> 8) & 0xFF); + var _b = ((r >> 16) & 0xFF); + return (RGB(_b, _g, _r)); + } +} + +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.resolve(); + pump.close(); +} +function pump_onExit() +{ + console.info1('message pump exited'); + this.promise.resolve(); +} +function pump_onMessage(msg) +{ + switch (msg.message) + { + case WM_COMMAND: + switch(msg.wparam) + { + case 0xFFF3: // OK + if (this.timeout != null) { clearTimeout(this.timeout); this.timeout = null; } + this.promise.resolve(); + this.close(); + break; + } + break; + case WM_CTLCOLORSTATIC: + console.info1('WM_CTLCOLORSTATIC => ' + msg.lparam, msg.wparam); + var hdcStatic = msg.wparam; + this._gdi32.SetTextColor(hdcStatic, this.options.foreground); + this._gdi32.SetBkColor(hdcStatic, this.options.background); + 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.OK, { wide: true }), WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, + 455, // x position + 215, // y position + 100, // Button width + 30, // Button height + h, // Parent window + 0xFFF3, // 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) + { + if (this.pump.options.bitmap != null) + { + 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 + 215, // y position + 335, // Button width + 30, // Button height + h, // Parent window + 0xFFF2, // Child ID + 0, + 0); + + this._addCreateWindowEx(0, GM.CreateVariable('RICHEDIT50W', { wide: true }), GM.CreateVariable(this.translations.Caption, { wide: true }), ES_READONLY | WS_TABSTOP | WS_VISIBLE | WS_CHILD | SS_LEFT | ES_MULTILINE | WS_VSCROLL, + 210, // x position + 10, // y position + 350, // Button width + 192, // Button height + h, // Parent window + 0xFFF3, // Child ID + 0, + 0).then(function (h) + { + this.pump._captionHwnd = h; + this.pump._addAsyncMethodCall(this.pump._user32.SendMessageW.async, [h, WM_SETFONT, this.pump.font, 1]); + this.pump._addAsyncMethodCall(this.pump._user32.SendMessageW.async, [h, EM_SETBKGNDCOLOR, 0, this.pump.options.background]).then(function () + { + var fmt = GM.CreateVariable(92); + fmt.toBuffer().writeUInt32LE(92); + fmt.toBuffer().writeUInt32LE(CFM_COLOR, 4); + fmt.toBuffer().writeUInt32LE(this._vars.pump.options.foreground, 20); + this._vars.pump._addAsyncMethodCall(this._vars.pump._user32.SendMessageW.async, [this._vars.hwnd, EM_SETCHARFORMAT, SCF_ALL, fmt]); + if(this._vars.pump.messages.length>1) + { + // A new message was added before we finished setting up + this._vars.pump._addAsyncMethodCall(this._vars.pump._user32.SetWindowTextW.async, [this._vars.pump._captionHwnd, GM.CreateVariable(this._vars.pump.messages.join('\r\n'), { wide: true })]); + } + }).parentPromise._vars = { hwnd: h, pump: this.pump }; + + }).parentPromise.pump = this; +} +function createLocal(title, caption, username, options) +{ + if (options == null) { options = {}; } + if (!options.translations) + { + options.translations = + { + OK: 'OK', + Caption: caption + }; + } + if (!options.font) { options.font = 'Arial'; } + if (!options.background) { options.background = RGB(0, 54, 105); } + if (!options.foreground) { options.foreground = RGB(200, 200, 200); } + var ret = new promise(promise.defaultInit); + ret.messages = [options.translations.Caption]; + 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: 295, title: title, background: options.background + }, + }; + + var rect = GM.CreateVariable(16); + var startupinput = require('_GenericMarshal').CreateVariable(24); + ret.gdipToken = require('_GenericMarshal').CreatePointer(); + ret.pump = new MessagePump(ret.opt); + ret.pump.messages = ret.messages; + + 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); // RGB(0, 54, 105); + if (status.Val == 0) + { + options.bitmap = hbitmap; + var format = GM.CreateVariable(4); + console.info1('PixelFormatStatus: ' + gdip.GdipGetImagePixelFormat(pimage.Deref(), format).Val); + console.info1('PixelFormat: ' + format.toBuffer().readInt32LE()); + var nb = GM.CreatePointer(); + + console.info1('FromScan0: ' + gdip.GdipCreateBitmapFromScan0(192, 192, 0, format.toBuffer().readInt32LE(), 0, nb).Val); + + var REAL_h = GM.CreateVariable(4); + var REAL_w = GM.CreateVariable(4); + console.info1('GetRes_W: ' + gdip.GdipGetImageHorizontalResolution(pimage.Deref(), REAL_w).Val); + console.info1('GetRes_H: ' + gdip.GdipGetImageVerticalResolution(pimage.Deref(), REAL_h).Val); + console.info1('Source DPI: ' + REAL_w.toBuffer().readFloatLE() + ' X ' + REAL_h.toBuffer().readFloatLE()); + console.info1('SetRes: ' + gdip.GdipBitmapSetResolution(nb.Deref(), REAL_w.toBuffer().readFloatLE(), REAL_h.toBuffer().readFloatLE()).Val); + + var graphics = GM.CreatePointer(); + console.info1('GdipGetImageGraphicsContext: ' + gdip.GdipGetImageGraphicsContext(nb.Deref(), graphics).Val); + console.info1('GdipSetSmoothingMode: ' + gdip.GdipSetSmoothingMode(graphics.Deref(), SmoothingModeAntiAlias).Val); + console.info1('InterpolationModeBicubic: ' + gdip.GdipSetInterpolationMode(graphics.Deref(), InterpolationModeBicubic).Val); + console.info1('DrawImage: ' + gdip.GdipDrawImageRectI(graphics.Deref(), pimage.Deref(), 0, 0, 192, 192).Val); + + var scaledhbitmap = GM.CreatePointer(); + console.info1('GetScaledHBITMAP: ' + gdip.GdipCreateHBITMAPFromBitmap(nb.Deref(), scaledhbitmap, gdip_RGB(options.background)).Val); + options.bitmap = scaledhbitmap; + + console.info1('ImageDispose: ' + gdip.GdipDisposeImage(pimage.Deref()).Val); + } + } + + 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); + } + ret.close = function close() + { + this.pump.close(); + } + ret.addMessage = function addMessage(msg) + { + this.messages.push(msg); + if (this.pump._HANDLE && this.pump._captionHwnd) + { + this.pump._addAsyncMethodCall(this.pump._user32.SetWindowTextW.async, [this.pump._captionHwnd, GM.CreateVariable(this.messages.join('\r\n'), { wide: true })]); + this.pump._user32.PostMessageA(this.pump._HANDLE, WM_USER, 0, 0); + } + } + return (ret); +} + +function create(title, caption, username, options) +{ + if (username == null) { username = ''; } + if (options == null) { options = {}; } + if (!options.b64Image) { options.b64Image = defaultImage; } + if (options.uid == null) { options.uid = require('user-sessions').consoleUid(); } + 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 + var ret = new promise(promise.defaultInit); + ret._qmsg = []; + ret._childready = false; + ret.options = { launch: { module: 'win-dialog', method: '_child', args: [] }, uid: options.uid }; + + ret._ipc = require('child-container').create(ret.options); + ret._ipc.master = ret; + ret._ipc.once('exit', function () { console.info1('user consent child exited'); }); + ret._ipc.on('ready', function () + { + this.master._childready = true; + this.descriptorMetadata = 'win-dialog'; + this.message({ command: 'dialog', title: title, caption: caption, username: username, options: options }); + while(this.master._qmsg.length>0) + { + this.message({ command: 'appendMessage', message: this.master._qmsg.shift() }); + } + }); + ret._ipc.on('message', function (msg) + { + try + { + switch (msg.command) + { + case 'ok': + this.master.resolve(msg.always); + break; + case 'log': + console.log(msg.text); + break; + default: + break; + } + } + catch (ff) + { + } + }); + ret.close = function close() + { + this._ipc.exit(); + } + ret.addMessage = function addMessage(msg) + { + if(this._childready) + { + this._ipc.message({ command: 'appendMessage', message: msg }); + } + else + { + this._qmsg.push(msg); + } + } + return (ret); +} + +function _child() +{ + global.master = require('child-container'); + global.master.on('message', function (msg) + { + switch (msg.command) + { + case 'dialog': + global.dialogPromise = createLocal(msg.title, msg.caption, msg.username, msg.options); + global.dialogPromise.then(function (always) + { + global.master.message({ command: 'ok' }); + }, function (msg) + { + global.master.message({ command: 'ok' }); + }).finally(function (msg) + { + process._exit(); + }); + break; + case 'appendMessage': + if (global.dialogPromise) + { + global.dialogPromise.addMessage(msg.message); + } + break; + } + }); +} + +module.exports = + { + create: create, _child: _child + }; diff --git a/modules/win-message-pump.js b/modules/win-message-pump.js index 910b883..7caaa0b 100644 --- a/modules/win-message-pump.js +++ b/modules/win-message-pump.js @@ -42,6 +42,7 @@ function WindowsMessagePump(options) this._user32.CreateMethod('DefWindowProcW'); this._user32.CreateMethod('DestroyWindow'); this._user32.CreateMethod('DispatchMessageW'); + this._user32.CreateMethod('DrawTextExW'); this._user32.CreateMethod('EndPaint'); this._user32.CreateMethod('FillRect'); this._user32.CreateMethod('GetClientRect'); @@ -52,6 +53,7 @@ function WindowsMessagePump(options) this._user32.CreateMethod('RegisterClassExW'); this._user32.CreateMethod('SendMessageW'); this._user32.CreateMethod('SetWindowPos'); + this._user32.CreateMethod('SetWindowTextW'); this._user32.CreateMethod('ShowWindow'); this._user32.CreateMethod('SystemParametersInfoA'); this._user32.CreateMethod('TranslateMessage');