Added wallpaper support on Windows

Bryan Roe committed Nov 13, 2019 at 14:45 UTC 70d26f1c256edf170c7d4ca9c18914b63f5eaf0e
1 file changed +45
agents/meshcore.js
+45
@@ -1788,6 +1788,51 @@ function createMeshCore(agent) {
1788 response = 'Available commands: \r\n' + fin + '.';
1789 break;
1790 }
1791 + case 'wallpaper':
1792 + if (process.platform != 'win32')
1793 + {
1794 + response = 'wallpaper only supported on Windows Platforms'
1795 + }
1796 + else
1797 + {
1798 + if (args['_'].length != 1)
1799 + {
1800 + response = 'Proper usage: wallpaper (GET|TOGGLE)'; // Display usage
1801 + }
1802 + else
1803 + {
1804 + switch (args['_'][0].toUpperCase())
1805 + {
1806 + default:
1807 + response = 'Proper usage: wallpaper (GET|TOGGLE)'; // Display usage
1808 + break;
1809 + case 'GET':
1810 + case 'TOGGLE':
1811 + var id = require('user-sessions').getProcessOwnerName(process.pid).tsid == 0 ? 1 : 0;
1812 + var child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0='], { type: id });
1813 + child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
1814 + child.stderr.on('data', function () { });
1815 + child.waitExit();
1816 + var current = child.stdout.str.trim();
1817 + if(args['_'][0].toUpperCase() == 'GET')
1818 + {
1819 + response = current;
1820 + break;
1821 + }
1822 + if (current != '')
1823 + {
1824 + require('MeshAgent')._wallpaper = current;
1825 + }
1826 + child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0=', current != '' ? '""' : require('MeshAgent')._wallpaper], { type: id });
1827 + child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
1828 + child.stderr.on('data', function () { });
1829 + child.waitExit();
1830 + response = 'OK';
1831 + break;
1832 + }
1833 + }
1834 + }
1835 + break;
1836 case 'safemode':
1837 if (process.platform != 'win32')
1838 {