diff --git a/README.md b/README.md index 9bf8a157..6219a7a3 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,7 @@ 4. **【--screen-scale】** 屏幕图片缩放比例 **0.2** 默认1/5 ###### 客户端 +1. **【--name】** 机器名 1. **【--server】** 服务器ip **192.168.1.18** 2. **【--service】** 服务端口 **1802** 3. **【--share-key】** 自定数据共享 **cmonitor/share**,每项数据长度255,klen+key+vlen+value @@ -104,7 +105,8 @@ ## 安装示例 ##### windows计划任务,客户端、服务端 -也可以运行 comitor.install.win.exe 进行安装操作 +1. 也可以运行 comitor.install.win.exe 进行安装操作 +2. 计划任务可以用ONLOGON以在用户登录系统后运行任务,但是有时候需要在登录前就启动程序,以远程操作解锁系统,那就需要以ONSTART创建任务,但是某些系统下,ONSTART无法运行,因此,在 **Ctrl+Alt+Delete 服务**中有第四参数,填入主程序启动参数,可以在此服务中启动主程序 ``` params = " --report-delay 30 --screen-delay 200 --screen-scale 0.2"; //client @@ -116,6 +118,16 @@ params = " --mode server --web 1800 --api 1801 --service 1802"; schtasks.exe /create /tn "cmonitor" /rl highest /sc ONSTART /delay 0000:30 /tr "\"{exePath}\"{params}" /f ``` + +##### Ctrl+Alt+Delete 服务 +必须以windows service方式运行cmonitor.sas.service.exe 才能使用**SendSAS**模拟**Ctrl+Alt+Delete**,{params}为主程序启动参数,不填则不在此服务内启动主程序 +``` +sc create "cmonitor.sas.service" +binpath="xx\xx\cmonitor.sas.service.exe {--share-key} {--share-len} 3 {params}" +start=AUTO +``` + + ##### linux服务端 systemd ``` //1、下载linux版本程序,放到 /usr/local/cmonitor 文件夹,并在文件夹下创建一个 log 目录 @@ -153,13 +165,6 @@ snltty/cmonitor-alpine-x64 \ --entrypoint ./cmonitor.run --mode server --web 1800 --api 1801 --service 1802 ``` -##### Ctrl+Alt+Delete 服务 -由于使用**SendSAS**模拟**Ctrl+Alt+Delete**,需要以windows service方式运行,所以需要将 cmonitor.sas.service.exe 安装到服务中,可以使用 sc create创建服务,不需要此功能可以不安装 -``` -sc create "cmonitor.sas.service" -binpath="xx\xx\cmonitor.sas.service.exe {--share-key} {--share-len} 3" -start=AUTO -``` ## 发布项目 1. nodejs 16.17.0 vue3.0 web diff --git a/cmonitor.install.win/MainForm.Designer.cs b/cmonitor.install.win/MainForm.Designer.cs index d0396285..80664cca 100644 --- a/cmonitor.install.win/MainForm.Designer.cs +++ b/cmonitor.install.win/MainForm.Designer.cs @@ -63,6 +63,7 @@ this.installBtn = new System.Windows.Forms.Button(); this.label15 = new System.Windows.Forms.Label(); this.runBtn = new System.Windows.Forms.Button(); + this.sasStart = new System.Windows.Forms.CheckBox(); this.SuspendLayout(); // // serverIP @@ -152,11 +153,11 @@ // sasService // this.sasService.AutoSize = true; - this.sasService.Location = new System.Drawing.Point(234, 51); + this.sasService.Location = new System.Drawing.Point(261, 53); this.sasService.Name = "sasService"; - this.sasService.Size = new System.Drawing.Size(168, 16); + this.sasService.Size = new System.Drawing.Size(66, 16); this.sasService.TabIndex = 10; - this.sasService.Text = "ctrl+alt+delete(SAS)服务"; + this.sasService.Text = "SAS服务"; this.sasService.UseVisualStyleBackColor = true; // // label5 @@ -348,11 +349,23 @@ this.runBtn.UseVisualStyleBackColor = true; this.runBtn.Click += new System.EventHandler(this.RunClick); // + // sasStart + // + this.sasStart.AutoSize = true; + this.sasStart.Location = new System.Drawing.Point(328, 53); + this.sasStart.Name = "sasStart"; + this.sasStart.Size = new System.Drawing.Size(66, 16); + this.sasStart.TabIndex = 34; + this.sasStart.Text = "SAS启动"; + this.sasStart.UseVisualStyleBackColor = true; + this.sasStart.CheckedChanged += new System.EventHandler(this.sasStart_CheckedChanged); + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(416, 401); + this.ClientSize = new System.Drawing.Size(411, 401); + this.Controls.Add(this.sasStart); this.Controls.Add(this.runBtn); this.Controls.Add(this.label15); this.Controls.Add(this.installBtn); @@ -432,6 +445,7 @@ private System.Windows.Forms.Button installBtn; private System.Windows.Forms.Label label15; private System.Windows.Forms.Button runBtn; + private System.Windows.Forms.CheckBox sasStart; } } diff --git a/cmonitor.install.win/MainForm.cs b/cmonitor.install.win/MainForm.cs index ce1838b5..0b56d845 100644 --- a/cmonitor.install.win/MainForm.cs +++ b/cmonitor.install.win/MainForm.cs @@ -16,7 +16,7 @@ namespace cmonitor.install.win { InitializeComponent(); - this.FormBorderStyle = FormBorderStyle.FixedSingle; + this.FormBorderStyle = FormBorderStyle.FixedSingle; this.MaximizeBox = false; } @@ -127,23 +127,32 @@ namespace cmonitor.install.win string paramStr = string.Join(" ", installParams); bool installSas = sasService.Checked; + bool _sasStart = sasStart.Checked; string filename = Process.GetCurrentProcess().MainModule.FileName; string dir = Path.GetDirectoryName(filename); string exePath = Path.Combine(dir, "cmonitor.win.exe"); string sasPath = Path.Combine(dir, "cmonitor.sas.service.exe"); + string sasIndexStr = sasIndex.Text; + Task.Run(() => { if (installed == false) { + string str = CommandHelper.Windows(string.Empty, new string[] { $"schtasks.exe /create /tn \"cmonitorService\" /rl highest /sc ONSTART /delay 0000:30 /tr \"\"{exePath}\" {paramStr}\" " }); if (installSas) { + string taskStr = $"sc create \"cmonitor.sas.service\" binpath=\"{sasPath} {shareKey} {shareLen} {sasIndexStr} \\\"{paramStr}\\\"\" start=AUTO"; + if (_sasStart == false) + { + taskStr = $"sc create \"cmonitor.sas.service\" binpath=\"{sasPath} {shareKey} {shareLen} {sasIndexStr}\" start=AUTO"; + } str = CommandHelper.Windows(string.Empty, new string[] { - $"sc create \"cmonitor.sas.service\" binpath=\"{sasPath}\" start=AUTO", + taskStr, "net start cmonitor.sas.service", }); } @@ -167,6 +176,7 @@ namespace cmonitor.install.win CheckInstall(); }); } + private bool CheckMode(List installParams) { if (modeClient.Checked == false && modeServer.Checked == false) @@ -345,7 +355,7 @@ namespace cmonitor.install.win else { Run(); - for (int i = 0; i < 15 && running==false; i++) + for (int i = 0; i < 15 && running == false; i++) { CheckRunning(); System.Threading.Thread.Sleep(1000); @@ -379,5 +389,18 @@ namespace cmonitor.install.win running = Process.GetProcessesByName("cmonitor").Length > 0; CheckLoading(loading); } + + private void sasStart_CheckedChanged(object sender, EventArgs e) + { + if (sasStart.Checked) + { + sasService.Checked = true; + sasService.Enabled = false; + } + else + { + sasService.Enabled = true; + } + } } } diff --git a/cmonitor.install.win/Program.cs b/cmonitor.install.win/Program.cs index e0e2273d..f8d33171 100644 --- a/cmonitor.install.win/Program.cs +++ b/cmonitor.install.win/Program.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; @@ -14,6 +15,12 @@ namespace cmonitor.install.win [STAThread] static void Main() { + Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out bool isAppRunning); + if (isAppRunning == false) + { + Environment.Exit(1); + } + Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); diff --git a/cmonitor.sas.service/CmonitorSasService.cs b/cmonitor.sas.service/CmonitorSasService.cs index f30a0dfb..888b60c5 100644 --- a/cmonitor.sas.service/CmonitorSasService.cs +++ b/cmonitor.sas.service/CmonitorSasService.cs @@ -5,6 +5,8 @@ using System.Threading.Tasks; using System.Threading; using System; using System.Runtime.InteropServices; +using System.Diagnostics; +using System.IO; namespace cmonitor.sas.service { @@ -22,6 +24,8 @@ namespace cmonitor.sas.service int shareMLength = 10; int shareItemMLength = 255; int shareIndex = 3; + string mainArgs = string.Empty; + string mainExeName = "cmonitor"; byte[] keyBytes = Encoding.UTF8.GetBytes("cmonitor.sas.service"); MemoryMappedFile mmf2; MemoryMappedViewAccessor accessor2; @@ -36,6 +40,11 @@ namespace cmonitor.sas.service shareMkey = args[0]; shareMLength = int.Parse(args[1]); shareIndex = int.Parse(args[2]); + + if (args.Length >= 4) + { + mainArgs = args[3]; + } } mmf2 = MemoryMappedFile.CreateOrOpen($"Global\\{shareMkey}", shareMLength * shareItemMLength); accessor2 = mmf2.CreateViewAccessor(); @@ -44,8 +53,8 @@ namespace cmonitor.sas.service catch (Exception) { } + CheckMainProcess(); } - protected override void OnStop() { cancellationTokenSource?.Cancel(); @@ -118,7 +127,6 @@ namespace cmonitor.sas.service UpdatedState(index); } - private void UpdatedState(int updatedOffset) { accessor2.Write((shareMLength - 1) * shareItemMLength, (byte)1); @@ -126,5 +134,85 @@ namespace cmonitor.sas.service [DllImport("sas.dll")] public static extern void SendSAS(bool asUser); + + + Process proc; + private void CheckMainProcess() + { + if (string.IsNullOrWhiteSpace(mainArgs)) + { + return; + } + Task.Factory.StartNew(() => + { + while (true) + { + try + { + if (Process.GetProcessesByName(mainExeName).Length <= 0) + { + KillExe(); + OpenExe(); + } + } + catch (Exception) + { + } + Thread.Sleep(30000); + } + }, TaskCreationOptions.LongRunning); + } + private bool OpenExe() + { + try + { + string filename = Process.GetCurrentProcess().MainModule.FileName; + string dir = Path.GetDirectoryName(filename); + string file = Path.Combine(dir, mainExeName); + ProcessStartInfo processStartInfo = new ProcessStartInfo() + { + WorkingDirectory = dir, + FileName = file, + CreateNoWindow = false, + ErrorDialog = false, + UseShellExecute = true, + WindowStyle = ProcessWindowStyle.Hidden, + Arguments = string.Join(" ", this.args), + Verb = "runas", + }; + proc = Process.Start(processStartInfo); + + return true; + } + catch (Exception) + { + try + { + proc.Kill(); + proc.Dispose(); + } + catch (Exception) + { + } + proc = null; + } + return false; + } + private void KillExe() + { + try + { + proc?.Close(); + proc?.Dispose(); + + } + catch (Exception) + { + } + finally + { + proc = null; + } + } } } diff --git a/cmonitor.share.receiver.win/App.config b/cmonitor.share.receiver.win/App.config new file mode 100644 index 00000000..8e156463 --- /dev/null +++ b/cmonitor.share.receiver.win/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/cmonitor.share.receiver.win/MainForm.Designer.cs b/cmonitor.share.receiver.win/MainForm.Designer.cs new file mode 100644 index 00000000..76779566 --- /dev/null +++ b/cmonitor.share.receiver.win/MainForm.Designer.cs @@ -0,0 +1,50 @@ +namespace cmonitor.share.receiver.win +{ + partial class MainForm + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.SuspendLayout(); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "MainForm"; + this.Text = "屏幕共享"; + this.Load += new System.EventHandler(this.OnLoad); + this.ResumeLayout(false); + + } + + #endregion + } +} + diff --git a/cmonitor.share.receiver.win/MainForm.cs b/cmonitor.share.receiver.win/MainForm.cs new file mode 100644 index 00000000..56312386 --- /dev/null +++ b/cmonitor.share.receiver.win/MainForm.cs @@ -0,0 +1,19 @@ +using cmonitor.server.client.reports.screen; +using System; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace cmonitor.share.receiver.win +{ + public partial class MainForm : Form + { + public MainForm() + { + InitializeComponent(); + } + + private void OnLoad(object sender, EventArgs e) + { + } + } +} diff --git a/cmonitor.share.receiver.win/MainForm.resx b/cmonitor.share.receiver.win/MainForm.resx new file mode 100644 index 00000000..7baa8237 --- /dev/null +++ b/cmonitor.share.receiver.win/MainForm.resx @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + + + \ No newline at end of file diff --git a/cmonitor.share.receiver.win/Program.cs b/cmonitor.share.receiver.win/Program.cs new file mode 100644 index 00000000..2c13fcbc --- /dev/null +++ b/cmonitor.share.receiver.win/Program.cs @@ -0,0 +1,26 @@ +using System; +using System.Threading; +using System.Windows.Forms; + +namespace cmonitor.share.receiver.win +{ + internal static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main(string[] args) + { + Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out bool isAppRunning); + if (isAppRunning == false) + { + Environment.Exit(1); + } + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} diff --git a/cmonitor.share.receiver.win/Properties/AssemblyInfo.cs b/cmonitor.share.receiver.win/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..bf9ec48b --- /dev/null +++ b/cmonitor.share.receiver.win/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("cmonitor.share.receiver.win")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("cmonitor.share.receiver.win")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("59fcffa4-aab7-423a-ae01-dcde47b2c9c1")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/cmonitor.share.receiver.win/Properties/Resources.Designer.cs b/cmonitor.share.receiver.win/Properties/Resources.Designer.cs new file mode 100644 index 00000000..2eecd075 --- /dev/null +++ b/cmonitor.share.receiver.win/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本: 4.0.30319.42000 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace cmonitor.share.receiver.win.Properties +{ + + + /// + /// 强类型资源类,用于查找本地化字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 返回此类使用的缓存 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("cmonitor.share.receiver.win.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/cmonitor.share.receiver.win/Properties/Resources.resx b/cmonitor.share.receiver.win/Properties/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/cmonitor.share.receiver.win/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/cmonitor.share.receiver.win/Properties/Settings.Designer.cs b/cmonitor.share.receiver.win/Properties/Settings.Designer.cs new file mode 100644 index 00000000..c592c468 --- /dev/null +++ b/cmonitor.share.receiver.win/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace cmonitor.share.receiver.win.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/cmonitor.share.receiver.win/Properties/Settings.settings b/cmonitor.share.receiver.win/Properties/Settings.settings new file mode 100644 index 00000000..39645652 --- /dev/null +++ b/cmonitor.share.receiver.win/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/cmonitor.share.receiver.win/Win32Interop.cs b/cmonitor.share.receiver.win/Win32Interop.cs new file mode 100644 index 00000000..e7c5511d --- /dev/null +++ b/cmonitor.share.receiver.win/Win32Interop.cs @@ -0,0 +1,306 @@ +using cmonitor.server.client.reports.screen.winapis; +using cmonitor.server.client.reports.screen.winapiss; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.InteropServices; +using System.Security.Principal; +using System.Text; +using static cmonitor.server.client.reports.screen.winapis.ADVAPI32; +using static cmonitor.server.client.reports.screen.winapiss.User32; + +namespace cmonitor.server.client.reports.screen +{ + public class Win32Interop + { + private static IntPtr lastInputDesktop; + + public static bool GetCurrentDesktop(out string desktopName) + { + var inputDesktop = OpenInputDesktop(); + try + { + byte[] deskBytes = new byte[256]; + if (!GetUserObjectInformationW(inputDesktop, UOI_NAME, deskBytes, 256, out uint lenNeeded)) + { + desktopName = string.Empty; + return false; + } + + desktopName = Encoding.Unicode.GetString(deskBytes.Take((int)lenNeeded).ToArray()).Replace("\0", ""); + return true; + } + finally + { + CloseDesktop(inputDesktop); + } + } + public static List GetActiveSessions() + { + List sessions = new List(); + uint consoleSessionId = Kernel32.WTSGetActiveConsoleSessionId(); + sessions.Add(new WindowsSession() + { + Id = consoleSessionId, + Type = WindowsSessionType.Console, + Name = "Console", + Username = GetUsernameFromSessionId(consoleSessionId) + }); + + IntPtr ppSessionInfo = IntPtr.Zero; + int count = 0; + int enumSessionResult = WTSAPI32.WTSEnumerateSessions(WTSAPI32.WTS_CURRENT_SERVER_HANDLE, 0, 1, ref ppSessionInfo, ref count); + int dataSize = Marshal.SizeOf(typeof(WTSAPI32.WTS_SESSION_INFO)); + IntPtr current = ppSessionInfo; + + if (enumSessionResult != 0) + { + for (int i = 0; i < count; i++) + { + object wtsInfo = Marshal.PtrToStructure(current, typeof(WTSAPI32.WTS_SESSION_INFO)); + if (wtsInfo is null) + { + continue; + } + WTSAPI32.WTS_SESSION_INFO sessionInfo = (WTSAPI32.WTS_SESSION_INFO)wtsInfo; + current += dataSize; + if (sessionInfo.State == WTSAPI32.WTS_CONNECTSTATE_CLASS.WTSActive && sessionInfo.SessionID != consoleSessionId) + { + + sessions.Add(new WindowsSession() + { + Id = sessionInfo.SessionID, + Name = sessionInfo.pWinStationName, + Type = WindowsSessionType.RDP, + Username = GetUsernameFromSessionId(sessionInfo.SessionID) + }); + } + } + } + + return sessions; + } + public static string GetUsernameFromSessionId(uint sessionId) + { + var username = string.Empty; + + if (WTSAPI32.WTSQuerySessionInformation(IntPtr.Zero, sessionId, WTSAPI32.WTS_INFO_CLASS.WTSUserName, out var buffer, out var strLen) && strLen > 1) + { + username = Marshal.PtrToStringAnsi(buffer); + WTSAPI32.WTSFreeMemory(buffer); + } + + return username ?? string.Empty; + } + + public static IntPtr OpenInputDesktop() + { + return User32.OpenInputDesktop(0, true, ACCESS_MASK.GENERIC_ALL); + } + public static bool SwitchToInputDesktop() + { + try + { + CloseDesktop(lastInputDesktop); + + IntPtr inputDesktop = OpenInputDesktop(); + if (inputDesktop == IntPtr.Zero) + { + return false; + } + + bool result = SetThreadDesktop(inputDesktop); + result &= SwitchDesktop(inputDesktop); + + lastInputDesktop = inputDesktop; + return result; + } + catch (Exception) + { + return false; + } + } + + + private static uint GetWinLogonPid(uint dwSessionId) + { + uint winlogonPid = 0; + Process[] processes = Process.GetProcessesByName("winlogon"); + foreach (Process p in processes) + { + if ((uint)p.SessionId == dwSessionId) + { + winlogonPid = (uint)p.Id; + } + } + return winlogonPid; + } + private static uint GetDwSessionId(int targetSessionId, bool forceConsoleSession) + { + uint dwSessionId = Kernel32.WTSGetActiveConsoleSessionId(); + if (forceConsoleSession == false) + { + List activeSessions = GetActiveSessions(); + if (activeSessions.Any(x => x.Id == targetSessionId)) + { + dwSessionId = (uint)targetSessionId; + } + else + { + dwSessionId = activeSessions.Last().Id; + } + } + return dwSessionId; + } + private static STARTUPINFO GetStartUpInfo(bool hiddenWindow, string desktopName, out uint dwCreationFlags) + { + STARTUPINFO si = new STARTUPINFO(); + si.cb = Marshal.SizeOf(si); + si.lpDesktop = @"winsta0\" + desktopName; + if (hiddenWindow) + { + dwCreationFlags = NORMAL_PRIORITY_CLASS | CREATE_UNICODE_ENVIRONMENT | CREATE_NO_WINDOW; + si.dwFlags = STARTF_USESHOWWINDOW; + si.wShowWindow = 0; + } + else + { + dwCreationFlags = NORMAL_PRIORITY_CLASS | CREATE_UNICODE_ENVIRONMENT | CREATE_NEW_CONSOLE; + } + return si; + } + public static bool CreateInteractiveSystemProcess(string commandLine, int targetSessionId, bool forceConsoleSession, string desktopName, bool hiddenWindow, out PROCESS_INFORMATION procInfo) + { + IntPtr hPToken = IntPtr.Zero; + procInfo = new PROCESS_INFORMATION(); + + uint dwSessionId = GetDwSessionId(targetSessionId, forceConsoleSession); + uint winlogonPid = GetWinLogonPid(dwSessionId); + + IntPtr hProcess = Kernel32.OpenProcess(MAXIMUM_ALLOWED, false, winlogonPid); + if (OpenProcessToken(hProcess, TOKEN_DUPLICATE, ref hPToken) == false) + { + Kernel32.CloseHandle(hProcess); + return false; + } + + SECURITY_ATTRIBUTES sa = new SECURITY_ATTRIBUTES(); + sa.Length = Marshal.SizeOf(sa); + if (DuplicateTokenEx(hPToken, MAXIMUM_ALLOWED, ref sa, SECURITY_IMPERSONATION_LEVEL.SecurityIdentification, TOKEN_TYPE.TokenPrimary, out IntPtr hUserTokenDup) == false) + { + Kernel32.CloseHandle(hProcess); + Kernel32.CloseHandle(hPToken); + return false; + } + + STARTUPINFO si = GetStartUpInfo(hiddenWindow, desktopName, out uint dwCreationFlags); + bool result = CreateProcessAsUser(hUserTokenDup, null, commandLine, ref sa, ref sa, false, dwCreationFlags, IntPtr.Zero, null, ref si, out procInfo); + + Kernel32.CloseHandle(hProcess); + Kernel32.CloseHandle(hPToken); + Kernel32.CloseHandle(hUserTokenDup); + + return result; + } + + public static string GetCommandLine() + { + IntPtr commandLinePtr = Kernel32.GetCommandLine(); + return Marshal.PtrToStringAuto(commandLinePtr) ?? string.Empty; + } + public static void RelaunchElevated() + { + try + { + string commandLine = GetCommandLine(); + bool result = CreateInteractiveSystemProcess($"{commandLine} --elevated", -1, false, "default", false, out PROCESS_INFORMATION procInfo); + uint code = Kernel32.GetLastError(); + if (result) + { + Environment.Exit(0); + } + } + catch + { + } + } + + private static string currentUsername = string.Empty; + public static string GetCurrentUserSid() + { + + WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent(); + currentUsername = currentIdentity.Name; + if (IsSystemUser() == false) + { + return currentIdentity.User.Value; + } + + IntPtr hToken; + int sessionId = (int)Kernel32.WTSGetActiveConsoleSessionId(); + if (WTSAPI32.WTSQueryUserToken(sessionId, out hToken)) + { + try + { + IntPtr tokenInformation; + int returnLength; + if (GetTokenInformation(hToken, TOKEN_INFORMATION_CLASS.TokenUser, IntPtr.Zero, 0, out returnLength) || returnLength == 0) + { + return string.Empty; + } + + tokenInformation = Marshal.AllocHGlobal(returnLength); + try + { + if (GetTokenInformation(hToken, TOKEN_INFORMATION_CLASS.TokenUser, tokenInformation, returnLength, out returnLength) == false) + { + return string.Empty; + } + + var user = (TOKEN_USER)Marshal.PtrToStructure(tokenInformation, typeof(TOKEN_USER)); + string stringSid; + if (ConvertSidToStringSid(user.User.Sid, out stringSid)) + { + return stringSid; + } + } + finally + { + Marshal.FreeHGlobal(tokenInformation); + } + } + finally + { + if (hToken != IntPtr.Zero) + { + Marshal.FreeHGlobal(hToken); + } + } + } + return string.Empty; + } + public static bool IsSystemUser() + { + return currentUsername == "NT AUTHORITY\\SYSTEM"; + } + + } + + + public enum WindowsSessionType + { + Console = 1, + RDP = 2 + } + + public class WindowsSession + { + public uint Id { get; set; } + public string Name { get; set; } = string.Empty; + public WindowsSessionType Type { get; set; } + public string Username { get; set; } = string.Empty; + } + + +} diff --git a/cmonitor.share.receiver.win/app.manifest b/cmonitor.share.receiver.win/app.manifest new file mode 100644 index 00000000..75867c29 --- /dev/null +++ b/cmonitor.share.receiver.win/app.manifest @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cmonitor.share.receiver.win/cmonitor.share.receiver.win.csproj b/cmonitor.share.receiver.win/cmonitor.share.receiver.win.csproj new file mode 100644 index 00000000..25bcf9bc --- /dev/null +++ b/cmonitor.share.receiver.win/cmonitor.share.receiver.win.csproj @@ -0,0 +1,102 @@ + + + + + Debug + AnyCPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1} + WinExe + cmonitor.share.receiver.win + cmonitor.share.receiver.win + v4.5 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + app.manifest + + + favicon.ico + + + + + + + + + + + + + + + + + Form + + + MainForm.cs + + + + + + + + + + + + + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + \ No newline at end of file diff --git a/cmonitor.share.receiver.win/favicon.ico b/cmonitor.share.receiver.win/favicon.ico new file mode 100644 index 00000000..91b5da80 Binary files /dev/null and b/cmonitor.share.receiver.win/favicon.ico differ diff --git a/cmonitor.share.receiver.win/winapis/ADVAPI32.cs b/cmonitor.share.receiver.win/winapis/ADVAPI32.cs new file mode 100644 index 00000000..33c1c427 --- /dev/null +++ b/cmonitor.share.receiver.win/winapis/ADVAPI32.cs @@ -0,0 +1,381 @@ +using System; +using System.Runtime.InteropServices; +using System.Security; + +namespace cmonitor.server.client.reports.screen.winapis +{ + public static class ADVAPI32 + { + #region Structs + public struct TOKEN_PRIVILEGES + { + public struct LUID + { + public uint LowPart; + public int HighPart; + } + [StructLayout(LayoutKind.Sequential, Pack = 4)] + public struct LUID_AND_ATTRIBUTES + { + public LUID Luid; + public uint Attributes; + } + public int PrivilegeCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = ANYSIZE_ARRAY)] + public LUID_AND_ATTRIBUTES[] Privileges; + } + public class USEROBJECTFLAGS + { + public int fInherit = 0; + public int fReserved = 0; + public int dwFlags = 0; + } + [StructLayout(LayoutKind.Sequential)] + public struct SECURITY_ATTRIBUTES + { + public int Length; + public IntPtr lpSecurityDescriptor; + public bool bInheritHandle; + } + [StructLayout(LayoutKind.Sequential)] + public struct PROCESS_INFORMATION + { + public IntPtr hProcess; + public IntPtr hThread; + public int dwProcessId; + public int dwThreadId; + } + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + public struct STARTUPINFO + { + public int cb; + public string lpReserved; + public string lpDesktop; + public string lpTitle; + public int dwX; + public int dwY; + public int dwXSize; + public int dwYSize; + public int dwXCountChars; + public int dwYCountChars; + public int dwFillAttribute; + public int dwFlags; + public short wShowWindow; + public short cbReserved2; + public IntPtr lpReserved2; + public IntPtr hStdInput; + public IntPtr hStdOutput; + public IntPtr hStdError; + } + #endregion + + #region Enums + public enum TOKEN_INFORMATION_CLASS + { + /// +     /// The buffer receives a TOKEN_USER structure that contains the user account of the token. +     /// + TokenUser = 1, + + /// +     /// The buffer receives a TOKEN_GROUPS structure that contains the group accounts associated with the token. +     /// + TokenGroups, + + /// +     /// The buffer receives a TOKEN_PRIVILEGES structure that contains the privileges of the token. +     /// + TokenPrivileges, + + /// +     /// The buffer receives a TOKEN_OWNER structure that contains the default owner security identifier (SID) for newly created objects. +     /// + TokenOwner, + + /// +     /// The buffer receives a TOKEN_PRIMARY_GROUP structure that contains the default primary group SID for newly created objects. +     /// + TokenPrimaryGroup, + + /// +     /// The buffer receives a TOKEN_DEFAULT_DACL structure that contains the default DACL for newly created objects. +     /// + TokenDefaultDacl, + + /// +     /// The buffer receives a TOKEN_SOURCE structure that contains the source of the token. TOKEN_QUERY_SOURCE access is needed to retrieve this information. +     /// + TokenSource, + + /// +     /// The buffer receives a TOKEN_TYPE value that indicates whether the token is a primary or impersonation token. +     /// + TokenType, + + /// +     /// The buffer receives a SECURITY_IMPERSONATION_LEVEL value that indicates the impersonation level of the token. If the access token is not an impersonation token, the function fails. +     /// + TokenImpersonationLevel, + + /// +     /// The buffer receives a TOKEN_STATISTICS structure that contains various token statistics. +     /// + TokenStatistics, + + /// +     /// The buffer receives a TOKEN_GROUPS structure that contains the list of restricting SIDs in a restricted token. +     /// + TokenRestrictedSids, + + /// +     /// The buffer receives a DWORD value that indicates the Terminal Services session identifier that is associated with the token. +     /// + TokenSessionId, + + /// +     /// The buffer receives a TOKEN_GROUPS_AND_PRIVILEGES structure that contains the user SID, the group accounts, the restricted SIDs, and the authentication ID associated with the token. +     /// + TokenGroupsAndPrivileges, + + /// +     /// Reserved. +     /// + TokenSessionReference, + + /// +     /// The buffer receives a DWORD value that is nonzero if the token includes the SANDBOX_INERT flag. +     /// + TokenSandBoxInert, + + /// +     /// Reserved. +     /// + TokenAuditPolicy, + + /// +     /// The buffer receives a TOKEN_ORIGIN value. +     /// + TokenOrigin, + + /// +     /// The buffer receives a TOKEN_ELEVATION_TYPE value that specifies the elevation level of the token. +     /// + TokenElevationType, + + /// +     /// The buffer receives a TOKEN_LINKED_TOKEN structure that contains a handle to another token that is linked to this token. +     /// + TokenLinkedToken, + + /// +     /// The buffer receives a TOKEN_ELEVATION structure that specifies whether the token is elevated. +     /// + TokenElevation, + + /// +     /// The buffer receives a DWORD value that is nonzero if the token has ever been filtered. +     /// + TokenHasRestrictions, + + /// +     /// The buffer receives a TOKEN_ACCESS_INFORMATION structure that specifies security information contained in the token. +     /// + TokenAccessInformation, + + /// +     /// The buffer receives a DWORD value that is nonzero if virtualization is allowed for the token. +     /// + TokenVirtualizationAllowed, + + /// +     /// The buffer receives a DWORD value that is nonzero if virtualization is enabled for the token. +     /// + TokenVirtualizationEnabled, + + /// +     /// The buffer receives a TOKEN_MANDATORY_LABEL structure that specifies the token's integrity level. +     /// + TokenIntegrityLevel, + + /// +     /// The buffer receives a DWORD value that is nonzero if the token has the UIAccess flag set. +     /// + TokenUIAccess, + + /// +     /// The buffer receives a TOKEN_MANDATORY_POLICY structure that specifies the token's mandatory integrity policy. +     /// + TokenMandatoryPolicy, + + /// +     /// The buffer receives the token's logon security identifier (SID). +     /// + TokenLogonSid, + + /// +     /// The maximum value for this enumeration +     /// + MaxTokenInfoClass + } + public enum LOGON_TYPE + { + LOGON32_LOGON_INTERACTIVE = 2, + LOGON32_LOGON_NETWORK, + LOGON32_LOGON_BATCH, + LOGON32_LOGON_SERVICE, + LOGON32_LOGON_UNLOCK = 7, + LOGON32_LOGON_NETWORK_CLEARTEXT, + LOGON32_LOGON_NEW_CREDENTIALS + } + public enum LOGON_PROVIDER + { + LOGON32_PROVIDER_DEFAULT, + LOGON32_PROVIDER_WINNT35, + LOGON32_PROVIDER_WINNT40, + LOGON32_PROVIDER_WINNT50 + } + [Flags] + public enum CreateProcessFlags + { + CREATE_BREAKAWAY_FROM_JOB = 0x01000000, + CREATE_DEFAULT_ERROR_MODE = 0x04000000, + CREATE_NEW_CONSOLE = 0x00000010, + CREATE_NEW_PROCESS_GROUP = 0x00000200, + CREATE_NO_WINDOW = 0x08000000, + CREATE_PROTECTED_PROCESS = 0x00040000, + CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000, + CREATE_SEPARATE_WOW_VDM = 0x00000800, + CREATE_SHARED_WOW_VDM = 0x00001000, + CREATE_SUSPENDED = 0x00000004, + CREATE_UNICODE_ENVIRONMENT = 0x00000400, + DEBUG_ONLY_THIS_PROCESS = 0x00000002, + DEBUG_PROCESS = 0x00000001, + DETACHED_PROCESS = 0x00000008, + EXTENDED_STARTUPINFO_PRESENT = 0x00080000, + INHERIT_PARENT_AFFINITY = 0x00010000 + } + public enum TOKEN_TYPE : int + { + TokenPrimary = 1, + TokenImpersonation = 2 + } + + public enum SECURITY_IMPERSONATION_LEVEL : int + { + SecurityAnonymous = 0, + SecurityIdentification = 1, + SecurityImpersonation = 2, + SecurityDelegation = 3, + } + + #endregion + + #region Constants + public const int TOKEN_DUPLICATE = 0x0002; + public const uint MAXIMUM_ALLOWED = 0x2000000; + public const int CREATE_NEW_CONSOLE = 0x00000010; + public const int CREATE_NO_WINDOW = 0x08000000; + public const int CREATE_UNICODE_ENVIRONMENT = 0x00000400; + public const int STARTF_USESHOWWINDOW = 0x00000001; + public const int DETACHED_PROCESS = 0x00000008; + public const int TOKEN_ALL_ACCESS = 0x000f01ff; + public const int PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF; + public const int STANDARD_RIGHTS_REQUIRED = 0x000F0000; + public const int SYNCHRONIZE = 0x00100000; + + public const int IDLE_PRIORITY_CLASS = 0x40; + public const int NORMAL_PRIORITY_CLASS = 0x20; + public const int HIGH_PRIORITY_CLASS = 0x80; + public const int REALTIME_PRIORITY_CLASS = 0x100; + public const uint SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001; + public const uint SE_PRIVILEGE_ENABLED = 0x00000002; + public const uint SE_PRIVILEGE_REMOVED = 0x00000004; + public const uint SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; + public const int ANYSIZE_ARRAY = 1; + + public const int UOI_FLAGS = 1; + public const int UOI_NAME = 2; + public const int UOI_TYPE = 3; + public const int UOI_USER_SID = 4; + public const int UOI_HEAPSIZE = 5; + public const int UOI_IO = 6; + #endregion + + #region DLL Imports + [DllImport("advapi32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool AdjustTokenPrivileges(IntPtr tokenHandle, + [MarshalAs(UnmanagedType.Bool)] bool disableAllPrivileges, + ref TOKEN_PRIVILEGES newState, + uint bufferLengthInBytes, + ref TOKEN_PRIVILEGES previousState, + out uint returnLengthInBytes); + [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)] + public static extern bool CreateProcessAsUser( + IntPtr hToken, + string lpApplicationName, + string lpCommandLine, + ref SECURITY_ATTRIBUTES lpProcessAttributes, + ref SECURITY_ATTRIBUTES lpThreadAttributes, + bool bInheritHandles, + uint dwCreationFlags, + IntPtr lpEnvironment, + string lpCurrentDirectory, + ref STARTUPINFO lpStartupInfo, + out PROCESS_INFORMATION lpProcessInformation); + + [DllImport("advapi32.dll", SetLastError = true)] + public static extern bool AllocateLocallyUniqueId(out IntPtr pLuid); + + [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = false)] + public static extern SECUR32.WinErrors LsaNtStatusToWinError(SECUR32.WinStatusCodes status); + + [DllImport("advapi32.dll", SetLastError = true)] + public static extern bool GetTokenInformation( + IntPtr TokenHandle, + TOKEN_INFORMATION_CLASS TokenInformationClass, + IntPtr TokenInformation, + int TokenInformationLength, + out int ReturnLength); + + [DllImport("advapi32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool LogonUser( + [MarshalAs(UnmanagedType.LPStr)] string pszUserName, + [MarshalAs(UnmanagedType.LPStr)] string pszDomain, + [MarshalAs(UnmanagedType.LPStr)] string pszPassword, + int dwLogonType, + int dwLogonProvider, + out IntPtr phToken); + + [DllImport("advapi32", SetLastError = true), SuppressUnmanagedCodeSecurity] + public static extern bool OpenProcessToken(IntPtr ProcessHandle, int DesiredAccess, ref IntPtr TokenHandle); + [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern bool DuplicateTokenEx( + IntPtr hExistingToken, + uint dwDesiredAccess, + ref SECURITY_ATTRIBUTES lpTokenAttributes, + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, + TOKEN_TYPE TokenType, + out IntPtr phNewToken); + + [DllImport("advapi32.dll", SetLastError = false)] + public static extern uint LsaNtStatusToWinError(uint status); + #endregion + + [DllImport("advapi32", CharSet = CharSet.Auto, SetLastError = true), SuppressUnmanagedCodeSecurity] + public static extern bool ConvertSidToStringSid(IntPtr sid, out string stringSid); + + [StructLayout(LayoutKind.Sequential)] + public struct TOKEN_USER + { + public SID_AND_ATTRIBUTES User; + } + [StructLayout(LayoutKind.Sequential)] + public struct SID_AND_ATTRIBUTES + { + public IntPtr Sid; + public int Attributes; + } + } +} diff --git a/cmonitor.share.receiver.win/winapis/GDI32.cs b/cmonitor.share.receiver.win/winapis/GDI32.cs new file mode 100644 index 00000000..9b90b6f9 --- /dev/null +++ b/cmonitor.share.receiver.win/winapis/GDI32.cs @@ -0,0 +1,81 @@ +using System; +using System.Runtime.InteropServices; + +namespace cmonitor.server.client.reports.screen.winapis +{ + public static class GDI32 + { + #region Enums + /// + /// Specifies a raster-operation code. These codes define how the color data for the + /// source rectangle is to be combined with the color data for the destination + /// rectangle to achieve the final color. + /// + public enum TernaryRasterOperations : uint + { + /// dest = source + SRCCOPY = 0x00CC0020, + /// dest = source OR dest + SRCPAINT = 0x00EE0086, + /// dest = source AND dest + SRCAND = 0x008800C6, + /// dest = source XOR dest + SRCINVERT = 0x00660046, + /// dest = source AND (NOT dest) + SRCERASE = 0x00440328, + /// dest = (NOT source) + NOTSRCCOPY = 0x00330008, + /// dest = (NOT src) AND (NOT dest) + NOTSRCERASE = 0x001100A6, + /// dest = (source AND pattern) + MERGECOPY = 0x00C000CA, + /// dest = (NOT source) OR dest + MERGEPAINT = 0x00BB0226, + /// dest = pattern + PATCOPY = 0x00F00021, + /// dest = DPSnoo + PATPAINT = 0x00FB0A09, + /// dest = pattern XOR dest + PATINVERT = 0x005A0049, + /// dest = (NOT dest) + DSTINVERT = 0x00550009, + /// dest = BLACK + BLACKNESS = 0x00000042, + /// dest = WHITE + WHITENESS = 0x00FF0062, + /// + /// Capture window as seen on screen. This includes layered windows + /// such as WPF windows with AllowsTransparency="true" + /// + CAPTUREBLT = 0x40000000 + } + #endregion + + #region DLL Imports + + [DllImport("gdi32.dll", EntryPoint = "BitBlt", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool BitBlt([In] IntPtr hdc, int nXDest, int nYDest, int nWidth, int nHeight, [In] IntPtr hdcSrc, int nXSrc, int nYSrc, TernaryRasterOperations dwRop); + + [DllImport("gdi32.dll")] + public static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, IntPtr lpInitData); + + [DllImport("GDI32.dll")] + public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight); [DllImport("GDI32.dll")] + public static extern IntPtr CreateCompatibleDC(IntPtr hdc); + + [DllImport("GDI32.dll")] + public static extern bool DeleteDC(IntPtr hdc); + + [DllImport("GDI32.dll")] + public static extern bool DeleteObject(IntPtr hObject); + + [DllImport("GDI32.dll")] + public static extern IntPtr GetDeviceCaps(IntPtr hdc, int nIndex); + + [DllImport("GDI32.dll")] + public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj); + + #endregion + } +} diff --git a/cmonitor.share.receiver.win/winapis/Kernel32.cs b/cmonitor.share.receiver.win/winapis/Kernel32.cs new file mode 100644 index 00000000..ac2715f1 --- /dev/null +++ b/cmonitor.share.receiver.win/winapis/Kernel32.cs @@ -0,0 +1,93 @@ +using System; +using System.Runtime.InteropServices; + +namespace cmonitor.server.client.reports.screen.winapis +{ + public static class Kernel32 + { + [DllImport("kernel32.dll", SetLastError = true)] + public static extern bool CloseHandle(IntPtr hSnapshot); + + [DllImport("kernel32.dll", CharSet = CharSet.Auto)] + public static extern IntPtr GetCommandLine(); + + [DllImport("kernel32.dll")] + public static extern IntPtr GetConsoleWindow(); + + [return: MarshalAs(UnmanagedType.Bool)] + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern bool GlobalMemoryStatusEx([In, Out] MEMORYSTATUSEX lpBuffer); + + [DllImport("kernel32.dll")] + public static extern IntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, uint dwProcessId); + + [DllImport("kernel32.dll")] + public static extern bool ProcessIdToSessionId(uint dwProcessId, ref uint pSessionId); + + [DllImport("kernel32.dll")] + public static extern uint WTSGetActiveConsoleSessionId(); + + [DllImport("kernel32.dll")] + public static extern uint GetLastError(); + + /// + /// contains information about the current state of both physical and virtual memory, including extended memory + /// + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] + public class MEMORYSTATUSEX + { + /// + /// Size of the structure, in bytes. You must set this member before calling GlobalMemoryStatusEx. + /// + public uint dwLength; + + /// + /// Number between 0 and 100 that specifies the approximate percentage of physical memory that is in use (0 indicates no memory use and 100 indicates full memory use). + /// + public uint dwMemoryLoad; + + /// + /// Total size of physical memory, in bytes. + /// + public ulong ullTotalPhys; + + /// + /// Size of physical memory available, in bytes. + /// + public ulong ullAvailPhys; + + /// + /// Size of the committed memory limit, in bytes. This is physical memory plus the size of the page file, minus a small overhead. + /// + public ulong ullTotalPageFile; + + /// + /// Size of available memory to commit, in bytes. The limit is ullTotalPageFile. + /// + public ulong ullAvailPageFile; + + /// + /// Total size of the user mode portion of the virtual address space of the calling process, in bytes. + /// + public ulong ullTotalVirtual; + + /// + /// Size of unreserved and uncommitted memory in the user mode portion of the virtual address space of the calling process, in bytes. + /// + public ulong ullAvailVirtual; + + /// + /// Size of unreserved and uncommitted memory in the extended portion of the virtual address space of the calling process, in bytes. + /// + public ulong ullAvailExtendedVirtual; + + /// + /// Initializes a new instance of the class. + /// + public MEMORYSTATUSEX() + { + dwLength = (uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX)); + } + } + } +} diff --git a/cmonitor.share.receiver.win/winapis/NetApi32.cs b/cmonitor.share.receiver.win/winapis/NetApi32.cs new file mode 100644 index 00000000..0c9ac4fd --- /dev/null +++ b/cmonitor.share.receiver.win/winapis/NetApi32.cs @@ -0,0 +1,25 @@ +using System.Runtime.InteropServices; + +namespace cmonitor.server.client.reports.screen.winapis +{ + public static class NetApi32 + { + [DllImport("Netapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern uint NetUserChangePassword( + [MarshalAs(UnmanagedType.LPWStr)] string domainname, + [MarshalAs(UnmanagedType.LPWStr)] string username, + [MarshalAs(UnmanagedType.LPWStr)] string oldpassword, + [MarshalAs(UnmanagedType.LPWStr)] string newpassword + ); + + public static bool ChangePassword( + [MarshalAs(UnmanagedType.LPWStr)] string domainname, + [MarshalAs(UnmanagedType.LPWStr)] string username, + [MarshalAs(UnmanagedType.LPWStr)] string oldpassword, + [MarshalAs(UnmanagedType.LPWStr)] string newpassword + ) + { + return NetUserChangePassword(domainname, username, oldpassword, newpassword) == 0; + } + } +} diff --git a/cmonitor.share.receiver.win/winapis/Powrprof.cs b/cmonitor.share.receiver.win/winapis/Powrprof.cs new file mode 100644 index 00000000..6cf646bd --- /dev/null +++ b/cmonitor.share.receiver.win/winapis/Powrprof.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace cmonitor.server.client.reports.screen.winapis +{ + internal class Powrprof + { + + [DllImport("powrprof.dll")] + public static extern uint GetActivePwrScheme(out IntPtr pActivePolicy); + [DllImport("powrprof.dll", SetLastError = true)] + public static extern UInt32 PowerGetActiveScheme(IntPtr UserRootPowerKey, out IntPtr ActivePolicyGuid); + + [DllImport("powrprof.dll")] + public static extern uint PowerWriteACValueIndex(IntPtr RootPowerKey, ref Guid SchemeGuid, ref Guid SubGroupOfPowerSettingsGuid, + ref Guid PowerSettingGuid, uint AcValueIndex); + + public static Guid powerButtonGuid = new Guid("4f971e89-eebd-4455-a8de-9e59040e7347"); // 电源按钮设置的GUID + public static Guid sleepButtonGuid = new Guid("96996bc0-ad50-47ec-923b-6f418386bca1"); // 睡眠按钮设置的GUID + } +} diff --git a/cmonitor.share.receiver.win/winapis/SECUR32.cs b/cmonitor.share.receiver.win/winapis/SECUR32.cs new file mode 100644 index 00000000..87d120e8 --- /dev/null +++ b/cmonitor.share.receiver.win/winapis/SECUR32.cs @@ -0,0 +1,379 @@ +using Microsoft.Win32.SafeHandles; +using System; +using System.Runtime.InteropServices; +using System.Runtime.Versioning; + + +namespace cmonitor.server.client.reports.screen.winapis +{ + public static class SECUR32 + { + public enum WinStatusCodes : uint + { + STATUS_SUCCESS = 0 + } + + public enum WinErrors : uint + { + NO_ERROR = 0, + } + public enum WinLogonType + { + LOGON32_LOGON_INTERACTIVE = 2, + LOGON32_LOGON_NETWORK = 3, + LOGON32_LOGON_BATCH = 4, + LOGON32_LOGON_SERVICE = 5, + LOGON32_LOGON_UNLOCK = 7, + LOGON32_LOGON_NETWORK_CLEARTEXT = 8, + LOGON32_LOGON_NEW_CREDENTIALS = 9 + } + + // SECURITY_LOGON_TYPE + public enum SecurityLogonType + { + Interactive = 2, // Interactively logged on (locally or remotely) + Network, // Accessing system via network + Batch, // Started via a batch queue + Service, // Service started by service controller + Proxy, // Proxy logon + Unlock, // Unlock workstation + NetworkCleartext, // Network logon with cleartext credentials + NewCredentials, // Clone caller, new default credentials + RemoteInteractive, // Remote, yet interactive. Terminal server + CachedInteractive, // Try cached credentials without hitting the net. + CachedRemoteInteractive, // Same as RemoteInteractive, this is used internally for auditing purpose + CachedUnlock // Cached Unlock workstation + } + + [StructLayout(LayoutKind.Sequential)] + public struct LSA_UNICODE_STRING + { + public UInt16 Length; + public UInt16 MaximumLength; + public IntPtr Buffer; + } + + [StructLayout(LayoutKind.Sequential)] + public struct TOKEN_SOURCE + { + public TOKEN_SOURCE(string name) + { + SourceName = new byte[8]; + System.Text.Encoding.GetEncoding(1252).GetBytes(name, 0, name.Length, SourceName, 0); + if (!ADVAPI32.AllocateLocallyUniqueId(out SourceIdentifier)) + throw new System.ComponentModel.Win32Exception(); + } + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public byte[] SourceName; + public IntPtr SourceIdentifier; + } + [StructLayout(LayoutKind.Sequential)] + public struct KERB_INTERACTIVE_LOGON + { + public KERB_LOGON_SUBMIT_TYPE MessageType; + public string LogonDomainName; + public string UserName; + public string Password; + } + public enum KERB_LOGON_SUBMIT_TYPE + { + KerbInteractiveLogon = 2, + KerbSmartCardLogon = 6, + KerbWorkstationUnlockLogon = 7, + KerbSmartCardUnlockLogon = 8, + KerbProxyLogon = 9, + KerbTicketLogon = 10, + KerbTicketUnlockLogon = 11, + KerbS4ULogon = 12, + KerbCertificateLogon = 13, + KerbCertificateS4ULogon = 14, + KerbCertificateUnlockLogon = 15 + } + public enum TOKEN_INFORMATION_CLASS + { + /// +     /// The buffer receives a TOKEN_USER structure that contains the user account of the token. +     /// + TokenUser = 1, + + /// +     /// The buffer receives a TOKEN_GROUPS structure that contains the group accounts associated with the token. +     /// + TokenGroups, + + /// +     /// The buffer receives a TOKEN_PRIVILEGES structure that contains the privileges of the token. +     /// + TokenPrivileges, + + /// +     /// The buffer receives a TOKEN_OWNER structure that contains the default owner security identifier (SID) for newly created objects. +     /// + TokenOwner, + + /// +     /// The buffer receives a TOKEN_PRIMARY_GROUP structure that contains the default primary group SID for newly created objects. +     /// + TokenPrimaryGroup, + + /// +     /// The buffer receives a TOKEN_DEFAULT_DACL structure that contains the default DACL for newly created objects. +     /// + TokenDefaultDacl, + + /// +     /// The buffer receives a TOKEN_SOURCE structure that contains the source of the token. TOKEN_QUERY_SOURCE access is needed to retrieve this information. +     /// + TokenSource, + + /// +     /// The buffer receives a TOKEN_TYPE value that indicates whether the token is a primary or impersonation token. +     /// + TokenType, + + /// +     /// The buffer receives a SECURITY_IMPERSONATION_LEVEL value that indicates the impersonation level of the token. If the access token is not an impersonation token, the function fails. +     /// + TokenImpersonationLevel, + + /// +     /// The buffer receives a TOKEN_STATISTICS structure that contains various token statistics. +     /// + TokenStatistics, + + /// +     /// The buffer receives a TOKEN_GROUPS structure that contains the list of restricting SIDs in a restricted token. +     /// + TokenRestrictedSids, + + /// +     /// The buffer receives a DWORD value that indicates the Terminal Services session identifier that is associated with the token. +     /// + TokenSessionId, + + /// +     /// The buffer receives a TOKEN_GROUPS_AND_PRIVILEGES structure that contains the user SID, the group accounts, the restricted SIDs, and the authentication ID associated with the token. +     /// + TokenGroupsAndPrivileges, + + /// +     /// Reserved. +     /// + TokenSessionReference, + + /// +     /// The buffer receives a DWORD value that is nonzero if the token includes the SANDBOX_INERT flag. +     /// + TokenSandBoxInert, + + /// +     /// Reserved. +     /// + TokenAuditPolicy, + + /// +     /// The buffer receives a TOKEN_ORIGIN value. +     /// + TokenOrigin, + + /// +     /// The buffer receives a TOKEN_ELEVATION_TYPE value that specifies the elevation level of the token. +     /// + TokenElevationType, + + /// +     /// The buffer receives a TOKEN_LINKED_TOKEN structure that contains a handle to another token that is linked to this token. +     /// + TokenLinkedToken, + + /// +     /// The buffer receives a TOKEN_ELEVATION structure that specifies whether the token is elevated. +     /// + TokenElevation, + + /// +     /// The buffer receives a DWORD value that is nonzero if the token has ever been filtered. +     /// + TokenHasRestrictions, + + /// +     /// The buffer receives a TOKEN_ACCESS_INFORMATION structure that specifies security information contained in the token. +     /// + TokenAccessInformation, + + /// +     /// The buffer receives a DWORD value that is nonzero if virtualization is allowed for the token. +     /// + TokenVirtualizationAllowed, + + /// +     /// The buffer receives a DWORD value that is nonzero if virtualization is enabled for the token. +     /// + TokenVirtualizationEnabled, + + /// +     /// The buffer receives a TOKEN_MANDATORY_LABEL structure that specifies the token's integrity level. +     /// + TokenIntegrityLevel, + + /// +     /// The buffer receives a DWORD value that is nonzero if the token has the UIAccess flag set. +     /// + TokenUIAccess, + + /// +     /// The buffer receives a TOKEN_MANDATORY_POLICY structure that specifies the token's mandatory integrity policy. +     /// + TokenMandatoryPolicy, + + /// +     /// The buffer receives the token's logon security identifier (SID). +     /// + TokenLogonSid, + + /// +     /// The maximum value for this enumeration +     /// + MaxTokenInfoClass + } + [StructLayout(LayoutKind.Sequential)] + public struct QUOTA_LIMITS + { + readonly UInt32 PagedPoolLimit; + readonly UInt32 NonPagedPoolLimit; + readonly UInt32 MinimumWorkingSetSize; + readonly UInt32 MaximumWorkingSetSize; + readonly UInt32 PagefileLimit; + readonly Int64 TimeLimit; + } + + [StructLayout(LayoutKind.Sequential)] + public struct LSA_STRING + { + public UInt16 Length; + public UInt16 MaximumLength; + public /*PCHAR*/ IntPtr Buffer; + } + + + [DllImport("secur32.dll", SetLastError = true)] + public static extern WinStatusCodes LsaLogonUser( + [In] IntPtr LsaHandle, + [In] ref LSA_STRING OriginName, + [In] SecurityLogonType LogonType, + [In] UInt32 AuthenticationPackage, + [In] IntPtr AuthenticationInformation, + [In] UInt32 AuthenticationInformationLength, + [In] /*PTOKEN_GROUPS*/ IntPtr LocalGroups, + [In] ref TOKEN_SOURCE SourceContext, + [Out] /*PVOID*/ out IntPtr ProfileBuffer, + [Out] out UInt32 ProfileBufferLength, + [Out] out Int64 LogonId, + [Out] out IntPtr Token, + [Out] out QUOTA_LIMITS Quotas, + [Out] out WinStatusCodes SubStatus + ); + + [DllImport("secur32.dll", SetLastError = true)] + public static extern WinStatusCodes LsaRegisterLogonProcess( + IntPtr LogonProcessName, + out IntPtr LsaHandle, + out ulong SecurityMode + ); + + [DllImport("secur32.dll", SetLastError = false)] + public static extern WinStatusCodes LsaLookupAuthenticationPackage([In] IntPtr LsaHandle, [In] ref LSA_STRING PackageName, [Out] out UInt32 AuthenticationPackage); + + [DllImport("secur32.dll", CharSet = CharSet.Auto, SetLastError = true)] + [ResourceExposure(ResourceScope.None)] + internal static extern int LsaConnectUntrusted( + [In, Out] ref SafeLsaLogonProcessHandle LsaHandle); + + [DllImport("secur32.dll", SetLastError = false)] + public static extern WinStatusCodes LsaConnectUntrusted([Out] out IntPtr LsaHandle); + + [System.Security.SecurityCritical] // auto-generated + internal sealed class SafeLsaLogonProcessHandle : SafeHandleZeroOrMinusOneIsInvalid + { + private SafeLsaLogonProcessHandle() : base(true) { } + + // 0 is an Invalid Handle + internal SafeLsaLogonProcessHandle(IntPtr handle) : base(true) + { + SetHandle(handle); + } + + internal static SafeLsaLogonProcessHandle InvalidHandle + { + get { return new SafeLsaLogonProcessHandle(IntPtr.Zero); } + } + + [System.Security.SecurityCritical] + protected override bool ReleaseHandle() + { + // LsaDeregisterLogonProcess returns an NTSTATUS + return LsaDeregisterLogonProcess(handle) >= 0; + } + } + + [DllImport("secur32.dll", SetLastError = true)] + [ResourceExposure(ResourceScope.None)] + internal static extern int LsaDeregisterLogonProcess(IntPtr handle); + + + public static void CreateNewSession() + { + var kli = new SECUR32.KERB_INTERACTIVE_LOGON() + { + MessageType = SECUR32.KERB_LOGON_SUBMIT_TYPE.KerbInteractiveLogon, + UserName = "", + Password = "" + }; + IntPtr kerbLogInfo; + SECUR32.LSA_STRING logonProc = new SECUR32.LSA_STRING + { + Buffer = Marshal.StringToHGlobalAuto("InstaLogon"), + Length = (ushort)Marshal.SizeOf(Marshal.StringToHGlobalAuto("InstaLogon")), + MaximumLength = (ushort)Marshal.SizeOf(Marshal.StringToHGlobalAuto("InstaLogon")) + }; + SECUR32.LSA_STRING originName = new SECUR32.LSA_STRING + { + Buffer = Marshal.StringToHGlobalAuto("InstaLogon"), + Length = (ushort)Marshal.SizeOf(Marshal.StringToHGlobalAuto("InstaLogon")), + MaximumLength = (ushort)Marshal.SizeOf(Marshal.StringToHGlobalAuto("InstaLogon")) + }; + SECUR32.LSA_STRING authPackage = new SECUR32.LSA_STRING + { + Buffer = Marshal.StringToHGlobalAuto("MICROSOFT_KERBEROS_NAME_A"), + Length = (ushort)Marshal.SizeOf(Marshal.StringToHGlobalAuto("MICROSOFT_KERBEROS_NAME_A")), + MaximumLength = (ushort)Marshal.SizeOf(Marshal.StringToHGlobalAuto("MICROSOFT_KERBEROS_NAME_A")) + }; + IntPtr hLogonProc = Marshal.AllocHGlobal(Marshal.SizeOf(logonProc)); + Marshal.StructureToPtr(logonProc, hLogonProc, false); + ADVAPI32.AllocateLocallyUniqueId(out IntPtr pluid); + LsaConnectUntrusted(out IntPtr lsaHan); + //SECUR32.LsaRegisterLogonProcess(hLogonProc, out lsaHan, out secMode); + SECUR32.LsaLookupAuthenticationPackage(lsaHan, ref authPackage, out uint authPackID); + + kerbLogInfo = Marshal.AllocHGlobal(Marshal.SizeOf(kli)); + Marshal.StructureToPtr(kli, kerbLogInfo, false); + + var ts = new SECUR32.TOKEN_SOURCE("Insta"); + SECUR32.LsaLogonUser( + lsaHan, + ref originName, + SECUR32.SecurityLogonType.Interactive, + authPackID, + kerbLogInfo, + (uint)Marshal.SizeOf(kerbLogInfo), + IntPtr.Zero, + ref ts, + out IntPtr profBuf, + out uint profBufLen, + out long logonID, + out IntPtr logonToken, + out QUOTA_LIMITS quotas, + out WinStatusCodes subStatus); + } + } +} \ No newline at end of file diff --git a/cmonitor.share.receiver.win/winapis/Shlwapi.cs b/cmonitor.share.receiver.win/winapis/Shlwapi.cs new file mode 100644 index 00000000..43ef4d43 --- /dev/null +++ b/cmonitor.share.receiver.win/winapis/Shlwapi.cs @@ -0,0 +1,52 @@ +using System.Runtime.InteropServices; + +namespace cmonitor.server.client.reports.screen.winapis +{ + // https://docs.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-isos + public class Shlwapi + { + [DllImport("shlwapi.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool IsOS(OsType osType); + } + + public enum OsType + { + OS_WINDOWS = 0, + OS_NT = 1, + OS_WIN95ORGREATER = 2, + OS_NT4ORGREATER = 3, + OS_WIN98ORGREATER = 5, + OS_WIN98_GOLD = 6, + OS_WIN2000ORGREATER = 7, + OS_WIN2000PRO = 8, + OS_WIN2000SERVER = 9, + OS_WIN2000ADVSERVER = 10, + OS_WIN2000DATACENTER = 11, + OS_WIN2000TERMINAL = 12, + OS_EMBEDDED = 13, + OS_TERMINALCLIENT = 14, + OS_TERMINALREMOTEADMIN = 15, + OS_WIN95_GOLD = 16, + OS_MEORGREATER = 17, + OS_XPORGREATER = 18, + OS_HOME = 19, + OS_PROFESSIONAL = 20, + OS_DATACENTER = 21, + OS_ADVSERVER = 22, + OS_SERVER = 23, + OS_TERMINALSERVER = 24, + OS_PERSONALTERMINALSERVER = 25, + OS_FASTUSERSWITCHING = 26, + OS_WELCOMELOGONUI = 27, + OS_DOMAINMEMBER = 28, + OS_ANYSERVER = 29, + OS_WOW6432 = 30, + OS_WEBSERVER = 31, + OS_SMALLBUSINESSSERVER = 32, + OS_TABLETPC = 33, + OS_SERVERADMINUI = 34, + OS_MEDIACENTER = 35, + OS_APPLIANCE = 36, + } +} diff --git a/cmonitor.share.receiver.win/winapis/User32.cs b/cmonitor.share.receiver.win/winapis/User32.cs new file mode 100644 index 00000000..e0e70d65 --- /dev/null +++ b/cmonitor.share.receiver.win/winapis/User32.cs @@ -0,0 +1,1430 @@ +using Microsoft.Win32.SafeHandles; +using System; +using System.Runtime.InteropServices; + +namespace cmonitor.server.client.reports.screen.winapiss +{ + public static class User32 + { + #region Constants + public const int CURSOR_SHOWING = 0x00000001; + public const Int32 DI_NORMAL = 0x0003; + + public const uint MOUSEEVENTF_ABSOLUTE = 0x8000; + public const int MOUSEEVENTF_LEFTDOWN = 0x02; + public const int MOUSEEVENTF_LEFTUP = 0x04; + public const int MOUSEEVENTF_RIGHTDOWN = 0x08; + public const int MOUSEEVENTF_RIGHTUP = 0x10; + public const int MOUSEEVENTF_MOVE = 0x0001; + public const int KEYEVENTF_KEYDOWN = 0x0000; + public const uint KEYEVENTF_EXTENDEDKEY = 0x0001; + public const uint KEYEVENTF_KEYUP = 0x0002; + + public const int SPIF_SENDWININICHANGE = 0x02; + public const int SPI_SETDESKWALLPAPER = 20; + public const int SPIF_UPDATEINIFILE = 1; + public const int SPIF_SENDCHANGE = 2; + + public static readonly int SPI_GETDESKWALLPAPER = 0x73; + public static readonly int MAX_PATH = 260; + #endregion + + #region Enums + [Flags] + public enum MouseEventFlags : uint + { + MOVE = 0x0001, + + LEFTDOWN = 0x0002, + LEFTUP = 0x0004, + + RIGHTDOWN = 0x0008, + RIGHTUP = 0x0010, + + MIDDLEDOWN = 0x0020, + MIDDLEUP = 0x0040, + + XDOWN = 0x0080, + XUP = 0x0100, + + VIRTUALDESK = 0x4000, + ABSOLUTE = 0x8000, + + WHEEL = 0x0800, + HWHEEL = 0x1000, + + } + [Flags] + public enum MOUSEEVENTF : uint + { + ABSOLUTE = 0x8000, + HWHEEL = 0x01000, + MOVE = 0x0001, + MOVE_NOCOALESCE = 0x2000, + LEFTDOWN = 0x0002, + LEFTUP = 0x0004, + RIGHTDOWN = 0x0008, + RIGHTUP = 0x0010, + MIDDLEDOWN = 0x0020, + MIDDLEUP = 0x0040, + VIRTUALDESK = 0x4000, + WHEEL = 0x0800, + XDOWN = 0x0080, + XUP = 0x0100 + } + public enum MonitorState + { + MonitorStateOn = -1, + MonitorStateOff = 2, + MonitorStateStandBy = 1 + } + [Flags] + public enum KEYEVENTF : uint + { + EXTENDEDKEY = 0x0001, + KEYUP = 0x0002, + SCANCODE = 0x0008, + UNICODE = 0x0004 + } + + public enum VirtualKey : short + { + /// +         ///Left mouse button +         /// + LBUTTON = 0x01, + /// +         ///Right mouse button +         /// + RBUTTON = 0x02, + /// +         ///Control-break processing +         /// + CANCEL = 0x03, + /// +         ///Middle mouse button (three-button mouse) +         /// + MBUTTON = 0x04, + /// +         ///Windows 2000/XP: X1 mouse button +         /// + XBUTTON1 = 0x05, + /// +         ///Windows 2000/XP: X2 mouse button +         /// + XBUTTON2 = 0x06, + /// +         ///BACKSPACE key +         /// + BACK = 0x08, + /// +         ///TAB key +         /// + TAB = 0x09, + /// +         ///CLEAR key +         /// + CLEAR = 0x0C, + /// +         ///ENTER key +         /// + RETURN = 0x0D, + /// +         ///SHIFT key +         /// + SHIFT = 0x10, + /// +         ///CTRL key +         /// + CONTROL = 0x11, + /// +         ///ALT key +         /// + MENU = 0x12, + /// +         ///PAUSE key +         /// + PAUSE = 0x13, + /// +         ///CAPS LOCK key +         /// + CAPITAL = 0x14, + /// +         ///Input Method Editor (IME) Kana mode +         /// + KANA = 0x15, + /// +         ///IME Hangul mode +         /// + HANGUL = 0x15, + /// +         ///IME Junja mode +         /// + JUNJA = 0x17, + /// +         ///IME final mode +         /// + FINAL = 0x18, + /// +         ///IME Hanja mode +         /// + HANJA = 0x19, + /// +         ///IME Kanji mode +         /// + KANJI = 0x19, + /// +         ///ESC key +         /// + ESCAPE = 0x1B, + /// +         ///IME convert +         /// + CONVERT = 0x1C, + /// +         ///IME nonconvert +         /// + NONCONVERT = 0x1D, + /// +         ///IME accept +         /// + ACCEPT = 0x1E, + /// +         ///IME mode change request +         /// + MODECHANGE = 0x1F, + /// +         ///SPACEBAR +         /// + SPACE = 0x20, + /// +         ///PAGE UP key +         /// + PRIOR = 0x21, + /// +         ///PAGE DOWN key +         /// + NEXT = 0x22, + /// +         ///END key +         /// + END = 0x23, + /// +         ///HOME key +         /// + HOME = 0x24, + /// +         ///LEFT ARROW key +         /// + LEFT = 0x25, + /// +         ///UP ARROW key +         /// + UP = 0x26, + /// +         ///RIGHT ARROW key +         /// + RIGHT = 0x27, + /// +         ///DOWN ARROW key +         /// + DOWN = 0x28, + /// +         ///SELECT key +         /// + SELECT = 0x29, + /// +         ///PRINT key +         /// + PRINT = 0x2A, + /// +         ///EXECUTE key +         /// + EXECUTE = 0x2B, + /// +         ///PRINT SCREEN key +         /// + SNAPSHOT = 0x2C, + /// +         ///INS key +         /// + INSERT = 0x2D, + /// +         ///DEL key +         /// + DELETE = 0x2E, + /// +         ///HELP key +         /// + HELP = 0x2F, + /// +         ///0 key +         /// + KEY_0 = 0x30, + /// +         ///1 key +         /// + KEY_1 = 0x31, + /// +         ///2 key +         /// + KEY_2 = 0x32, + /// +         ///3 key +         /// + KEY_3 = 0x33, + /// +         ///4 key +         /// + KEY_4 = 0x34, + /// +         ///5 key +         /// + KEY_5 = 0x35, + /// +         ///6 key +         /// + KEY_6 = 0x36, + /// +         ///7 key +         /// + KEY_7 = 0x37, + /// +         ///8 key +         /// + KEY_8 = 0x38, + /// +         ///9 key +         /// + KEY_9 = 0x39, + /// +         ///A key +         /// + KEY_A = 0x41, + /// +         ///B key +         /// + KEY_B = 0x42, + /// +         ///C key +         /// + KEY_C = 0x43, + /// +         ///D key +         /// + KEY_D = 0x44, + /// +         ///E key +         /// + KEY_E = 0x45, + /// +         ///F key +         /// + KEY_F = 0x46, + /// +         ///G key +         /// + KEY_G = 0x47, + /// +         ///H key +         /// + KEY_H = 0x48, + /// +         ///I key +         /// + KEY_I = 0x49, + /// +         ///J key +         /// + KEY_J = 0x4A, + /// +         ///K key +         /// + KEY_K = 0x4B, + /// +         ///L key +         /// + KEY_L = 0x4C, + /// +         ///M key +         /// + KEY_M = 0x4D, + /// +         ///N key +         /// + KEY_N = 0x4E, + /// +         ///O key +         /// + KEY_O = 0x4F, + /// +         ///P key +         /// + KEY_P = 0x50, + /// +         ///Q key +         /// + KEY_Q = 0x51, + /// +         ///R key +         /// + KEY_R = 0x52, + /// +         ///S key +         /// + KEY_S = 0x53, + /// +         ///T key +         /// + KEY_T = 0x54, + /// +         ///U key +         /// + KEY_U = 0x55, + /// +         ///V key +         /// + KEY_V = 0x56, + /// +         ///W key +         /// + KEY_W = 0x57, + /// +         ///X key +         /// + KEY_X = 0x58, + /// +         ///Y key +         /// + KEY_Y = 0x59, + /// +         ///Z key +         /// + KEY_Z = 0x5A, + /// +         ///Left Windows key (Microsoft Natural keyboard) +         /// + LWIN = 0x5B, + /// +         ///Right Windows key (Natural keyboard) +         /// + RWIN = 0x5C, + /// +         ///Applications key (Natural keyboard) +         /// + APPS = 0x5D, + /// +         ///Computer Sleep key +         /// + SLEEP = 0x5F, + /// +         ///Numeric keypad 0 key +         /// + NUMPAD0 = 0x60, + /// +         ///Numeric keypad 1 key +         /// + NUMPAD1 = 0x61, + /// +         ///Numeric keypad 2 key +         /// + NUMPAD2 = 0x62, + /// +         ///Numeric keypad 3 key +         /// + NUMPAD3 = 0x63, + /// +         ///Numeric keypad 4 key +         /// + NUMPAD4 = 0x64, + /// +         ///Numeric keypad 5 key +         /// + NUMPAD5 = 0x65, + /// +         ///Numeric keypad 6 key +         /// + NUMPAD6 = 0x66, + /// +         ///Numeric keypad 7 key +         /// + NUMPAD7 = 0x67, + /// +         ///Numeric keypad 8 key +         /// + NUMPAD8 = 0x68, + /// +         ///Numeric keypad 9 key +         /// + NUMPAD9 = 0x69, + /// +         ///Multiply key +         /// + MULTIPLY = 0x6A, + /// +         ///Add key +         /// + ADD = 0x6B, + /// +         ///Separator key +         /// + SEPARATOR = 0x6C, + /// +         ///Subtract key +         /// + SUBTRACT = 0x6D, + /// +         ///Decimal key +         /// + DECIMAL = 0x6E, + /// +         ///Divide key +         /// + DIVIDE = 0x6F, + /// +         ///F1 key +         /// + F1 = 0x70, + /// +         ///F2 key +         /// + F2 = 0x71, + /// +         ///F3 key +         /// + F3 = 0x72, + /// +         ///F4 key +         /// + F4 = 0x73, + /// +         ///F5 key +         /// + F5 = 0x74, + /// +         ///F6 key +         /// + F6 = 0x75, + /// +         ///F7 key +         /// + F7 = 0x76, + /// +         ///F8 key +         /// + F8 = 0x77, + /// +         ///F9 key +         /// + F9 = 0x78, + /// +         ///F10 key +         /// + F10 = 0x79, + /// +         ///F11 key +         /// + F11 = 0x7A, + /// +         ///F12 key +         /// + F12 = 0x7B, + /// +         ///F13 key +         /// + F13 = 0x7C, + /// +         ///F14 key +         /// + F14 = 0x7D, + /// +         ///F15 key +         /// + F15 = 0x7E, + /// +         ///F16 key +         /// + F16 = 0x7F, + /// +         ///F17 key   +         /// + F17 = 0x80, + /// +         ///F18 key   +         /// + F18 = 0x81, + /// +         ///F19 key   +         /// + F19 = 0x82, + /// +         ///F20 key   +         /// + F20 = 0x83, + /// +         ///F21 key   +         /// + F21 = 0x84, + /// +         ///F22 key, (PPC only) Key used to lock device. +         /// + F22 = 0x85, + /// +         ///F23 key   +         /// + F23 = 0x86, + /// +         ///F24 key   +         /// + F24 = 0x87, + /// +         ///NUM LOCK key +         /// + NUMLOCK = 0x90, + /// +         ///SCROLL LOCK key +         /// + SCROLL = 0x91, + /// +         ///Left SHIFT key +         /// + LSHIFT = 0xA0, + /// +         ///Right SHIFT key +         /// + RSHIFT = 0xA1, + /// +         ///Left CONTROL key +         /// + LCONTROL = 0xA2, + /// +         ///Right CONTROL key +         /// + RCONTROL = 0xA3, + /// +         ///Left MENU key +         /// + LMENU = 0xA4, + /// +         ///Right MENU key +         /// + RMENU = 0xA5, + /// +         ///Windows 2000/XP: Browser Back key +         /// + BROWSER_BACK = 0xA6, + /// +         ///Windows 2000/XP: Browser Forward key +         /// + BROWSER_FORWARD = 0xA7, + /// +         ///Windows 2000/XP: Browser Refresh key +         /// + BROWSER_REFRESH = 0xA8, + /// +         ///Windows 2000/XP: Browser Stop key +         /// + BROWSER_STOP = 0xA9, + /// +         ///Windows 2000/XP: Browser Search key +         /// + BROWSER_SEARCH = 0xAA, + /// +         ///Windows 2000/XP: Browser Favorites key +         /// + BROWSER_FAVORITES = 0xAB, + /// +         ///Windows 2000/XP: Browser Start and Home key +         /// + BROWSER_HOME = 0xAC, + /// +         ///Windows 2000/XP: Volume Mute key +         /// + VOLUME_MUTE = 0xAD, + /// +         ///Windows 2000/XP: Volume Down key +         /// + VOLUME_DOWN = 0xAE, + /// +         ///Windows 2000/XP: Volume Up key +         /// + VOLUME_UP = 0xAF, + /// +         ///Windows 2000/XP: Next Track key +         /// + MEDIA_NEXT_TRACK = 0xB0, + /// +         ///Windows 2000/XP: Previous Track key +         /// + MEDIA_PREV_TRACK = 0xB1, + /// +         ///Windows 2000/XP: Stop Media key +         /// + MEDIA_STOP = 0xB2, + /// +         ///Windows 2000/XP: Play/Pause Media key +         /// + MEDIA_PLAY_PAUSE = 0xB3, + /// +         ///Windows 2000/XP: Start Mail key +         /// + LAUNCH_MAIL = 0xB4, + /// +         ///Windows 2000/XP: Select Media key +         /// + LAUNCH_MEDIA_SELECT = 0xB5, + /// +         ///Windows 2000/XP: Start Application 1 key +         /// + LAUNCH_APP1 = 0xB6, + /// +         ///Windows 2000/XP: Start Application 2 key +         /// + LAUNCH_APP2 = 0xB7, + /// +         ///Used for miscellaneous characters; it can vary by keyboard. +         /// + OEM_1 = 0xBA, + /// +         ///Windows 2000/XP: For any country/region, the '+' key +         /// + OEM_PLUS = 0xBB, + /// +         ///Windows 2000/XP: For any country/region, the ',' key +         /// + OEM_COMMA = 0xBC, + /// +         ///Windows 2000/XP: For any country/region, the '-' key +         /// + OEM_MINUS = 0xBD, + /// +         ///Windows 2000/XP: For any country/region, the '.' key +         /// + OEM_PERIOD = 0xBE, + /// +         ///Used for miscellaneous characters; it can vary by keyboard. +         /// + OEM_2 = 0xBF, + /// +         ///Used for miscellaneous characters; it can vary by keyboard. +         /// + OEM_3 = 0xC0, + /// +         ///Used for miscellaneous characters; it can vary by keyboard. +         /// + OEM_4 = 0xDB, + /// +         ///Used for miscellaneous characters; it can vary by keyboard. +         /// + OEM_5 = 0xDC, + /// +         ///Used for miscellaneous characters; it can vary by keyboard. +         /// + OEM_6 = 0xDD, + /// +         ///Used for miscellaneous characters; it can vary by keyboard. +         /// + OEM_7 = 0xDE, + /// +         ///Used for miscellaneous characters; it can vary by keyboard. +         /// + OEM_8 = 0xDF, + /// +         ///Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard +         /// + OEM_102 = 0xE2, + /// +         ///Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key +         /// + PROCESSKEY = 0xE5, + /// +         ///Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. +         ///The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, +         ///see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP +         /// + PACKET = 0xE7, + /// +         ///Attn key +         /// + ATTN = 0xF6, + /// +         ///CrSel key +         /// + CRSEL = 0xF7, + /// +         ///ExSel key +         /// + EXSEL = 0xF8, + /// +         ///Erase EOF key +         /// + EREOF = 0xF9, + /// +         ///Play key +         /// + PLAY = 0xFA, + /// +         ///Zoom key +         /// + ZOOM = 0xFB, + /// +         ///Reserved +         /// + NONAME = 0xFC, + /// +         ///PA1 key +         /// + PA1 = 0xFD, + /// +         ///Clear key +         /// + OEM_CLEAR = 0xFE + } + public enum ScanCodeShort : short + { + LBUTTON = 0, + RBUTTON = 0, + CANCEL = 70, + MBUTTON = 0, + XBUTTON1 = 0, + XBUTTON2 = 0, + BACK = 14, + TAB = 15, + CLEAR = 76, + RETURN = 28, + SHIFT = 42, + CONTROL = 29, + MENU = 56, + PAUSE = 0, + CAPITAL = 58, + KANA = 0, + HANGUL = 0, + JUNJA = 0, + FINAL = 0, + HANJA = 0, + KANJI = 0, + ESCAPE = 1, + CONVERT = 0, + NONCONVERT = 0, + ACCEPT = 0, + MODECHANGE = 0, + SPACE = 57, + PRIOR = 73, + NEXT = 81, + END = 79, + HOME = 71, + LEFT = 75, + UP = 72, + RIGHT = 77, + DOWN = 80, + SELECT = 0, + PRINT = 0, + EXECUTE = 0, + SNAPSHOT = 84, + INSERT = 82, + DELETE = 83, + HELP = 99, + KEY_0 = 11, + KEY_1 = 2, + KEY_2 = 3, + KEY_3 = 4, + KEY_4 = 5, + KEY_5 = 6, + KEY_6 = 7, + KEY_7 = 8, + KEY_8 = 9, + KEY_9 = 10, + KEY_A = 30, + KEY_B = 48, + KEY_C = 46, + KEY_D = 32, + KEY_E = 18, + KEY_F = 33, + KEY_G = 34, + KEY_H = 35, + KEY_I = 23, + KEY_J = 36, + KEY_K = 37, + KEY_L = 38, + KEY_M = 50, + KEY_N = 49, + KEY_O = 24, + KEY_P = 25, + KEY_Q = 16, + KEY_R = 19, + KEY_S = 31, + KEY_T = 20, + KEY_U = 22, + KEY_V = 47, + KEY_W = 17, + KEY_X = 45, + KEY_Y = 21, + KEY_Z = 44, + LWIN = 91, + RWIN = 92, + APPS = 93, + SLEEP = 95, + NUMPAD0 = 82, + NUMPAD1 = 79, + NUMPAD2 = 80, + NUMPAD3 = 81, + NUMPAD4 = 75, + NUMPAD5 = 76, + NUMPAD6 = 77, + NUMPAD7 = 71, + NUMPAD8 = 72, + NUMPAD9 = 73, + MULTIPLY = 55, + ADD = 78, + SEPARATOR = 0, + SUBTRACT = 74, + DECIMAL = 83, + DIVIDE = 53, + F1 = 59, + F2 = 60, + F3 = 61, + F4 = 62, + F5 = 63, + F6 = 64, + F7 = 65, + F8 = 66, + F9 = 67, + F10 = 68, + F11 = 87, + F12 = 88, + F13 = 100, + F14 = 101, + F15 = 102, + F16 = 103, + F17 = 104, + F18 = 105, + F19 = 106, + F20 = 107, + F21 = 108, + F22 = 109, + F23 = 110, + F24 = 118, + NUMLOCK = 69, + SCROLL = 70, + LSHIFT = 42, + RSHIFT = 54, + LCONTROL = 29, + RCONTROL = 29, + LMENU = 56, + RMENU = 56, + BROWSER_BACK = 106, + BROWSER_FORWARD = 105, + BROWSER_REFRESH = 103, + BROWSER_STOP = 104, + BROWSER_SEARCH = 101, + BROWSER_FAVORITES = 102, + BROWSER_HOME = 50, + VOLUME_MUTE = 32, + VOLUME_DOWN = 46, + VOLUME_UP = 48, + MEDIA_NEXT_TRACK = 25, + MEDIA_PREV_TRACK = 16, + MEDIA_STOP = 36, + MEDIA_PLAY_PAUSE = 34, + LAUNCH_MAIL = 108, + LAUNCH_MEDIA_SELECT = 109, + LAUNCH_APP1 = 107, + LAUNCH_APP2 = 33, + OEM_1 = 39, + OEM_PLUS = 13, + OEM_COMMA = 51, + OEM_MINUS = 12, + OEM_PERIOD = 52, + OEM_2 = 53, + OEM_3 = 41, + OEM_4 = 26, + OEM_5 = 43, + OEM_6 = 27, + OEM_7 = 40, + OEM_8 = 0, + OEM_102 = 86, + PROCESSKEY = 0, + PACKET = 0, + ATTN = 0, + CRSEL = 0, + EXSEL = 0, + EREOF = 93, + PLAY = 0, + ZOOM = 98, + NONAME = 0, + PA1 = 0, + OEM_CLEAR = 0, + } + [Flags] + public enum ACCESS_MASK : uint + { + DELETE = 0x00010000, + READ_CONTROL = 0x00020000, + WRITE_DAC = 0x00040000, + WRITE_OWNER = 0x00080000, + SYNCHRONIZE = 0x00100000, + + STANDARD_RIGHTS_REQUIRED = 0x000F0000, + + STANDARD_RIGHTS_READ = 0x00020000, + STANDARD_RIGHTS_WRITE = 0x00020000, + STANDARD_RIGHTS_EXECUTE = 0x00020000, + + STANDARD_RIGHTS_ALL = 0x001F0000, + + SPECIFIC_RIGHTS_ALL = 0x0000FFFF, + + ACCESS_SYSTEM_SECURITY = 0x01000000, + + MAXIMUM_ALLOWED = 0x02000000, + + GENERIC_READ = 0x80000000, + GENERIC_WRITE = 0x40000000, + GENERIC_EXECUTE = 0x20000000, + GENERIC_ALL = 0x10000000, + + DESKTOP_READOBJECTS = 0x00000001, + DESKTOP_CREATEWINDOW = 0x00000002, + DESKTOP_CREATEMENU = 0x00000004, + DESKTOP_HOOKCONTROL = 0x00000008, + DESKTOP_JOURNALRECORD = 0x00000010, + DESKTOP_JOURNALPLAYBACK = 0x00000020, + DESKTOP_ENUMERATE = 0x00000040, + DESKTOP_WRITEOBJECTS = 0x00000080, + DESKTOP_SWITCHDESKTOP = 0x00000100, + + WINSTA_ENUMDESKTOPS = 0x00000001, + WINSTA_READATTRIBUTES = 0x00000002, + WINSTA_ACCESSCLIPBOARD = 0x00000004, + WINSTA_CREATEDESKTOP = 0x00000008, + WINSTA_WRITEATTRIBUTES = 0x00000010, + WINSTA_ACCESSGLOBALATOMS = 0x00000020, + WINSTA_EXITWINDOWS = 0x00000040, + WINSTA_ENUMERATE = 0x00000100, + WINSTA_READSCREEN = 0x00000200, + + WINSTA_ALL_ACCESS = 0x0000037F + } + public enum InputType : uint + { + MOUSE = 0, + KEYBOARD = 1, + HARDWARE = 2 + } + public enum MessageBoxType : long + { + MB_ABORTRETRYIGNORE = 0x00000002L, + MB_CANCELTRYCONTINUE = 0x00000006L, + MB_HELP = 0x00004000L, + MB_OK = 0x00000000L, + MB_OKCANCEL = 0x00000001L, + MB_RETRYCANCEL = 0x00000005L, + MB_YESNO = 0x00000004L, + MB_YESNOCANCEL = 0x00000003L, + MB_ICONEXCLAMATION = 0x00000030L, + MB_ICONWARNING = 0x00000030L, + MB_ICONINFORMATION = 0x00000040L, + MB_ICONASTERISK = 0x00000040L, + MB_ICONQUESTION = 0x00000020L, + MB_ICONSTOP = 0x00000010L, + MB_ICONERROR = 0x00000010L, + MB_ICONHAND = 0x00000010L, + MB_DEFBUTTON1 = 0x00000000L, + MB_DEFBUTTON2 = 0x00000100L, + MB_DEFBUTTON3 = 0x00000200L, + MB_DEFBUTTON4 = 0x00000300L, + MB_APPLMODAL = 0x00000000L, + MB_SYSTEMMODAL = 0x00001000L, + MB_TASKMODAL = 0x00002000L, + MB_DEFAULT_DESKTOP_ONLY = 0x00020000L, + MB_RIGHT = 0x00080000L, + MB_RTLREADING = 0x00100000L, + MB_SETFOREGROUND = 0x00010000L, + MB_TOPMOST = 0x00040000L, + MB_SERVICE_NOTIFICATION = 0x00200000L + } + + public enum MessageBoxResult : int + { + IDABORT = 3, + IDCANCEL = 2, + IDCONTINUE = 11, + IDIGNORE = 5, + IDNO = 7, + IDOK = 1, + IDRETRY = 4, + IDTRYAGAIN = 10, + IDYES = 6, + } + public enum SW + { + SW_HIDE = 0, + SW_SHOWNORMAL = 1, + SW_NORMAL = 1, + SW_SHOWMINIMIZED = 2, + SW_SHOWMAXIMIZED = 3, + SW_MAXIMIZE = 3, + SW_SHOWNOACTIVATE = 4, + SW_SHOW = 5, + SW_MINIMIZE = 6, + SW_SHOWMINNOACTIVE = 7, + SW_SHOWNA = 8, + SW_RESTORE = 9, + SW_SHOWDEFAULT = 10, + SW_MAX = 10 + } + public enum VkMapType : uint + { + MAPVK_VK_TO_VSC = 0, + MAPVK_VSC_TO_VK = 1, + MAPVK_VK_TO_CHAR = 2, + MAPVK_VSC_TO_VK_EX = 3, + MAPVK_VK_TO_VSC_EX = 4 + } + + #endregion + + #region Structs + [StructLayout(LayoutKind.Sequential)] + public struct ICONINFO + { + public bool fIcon; + public int xHotspot; + public int yHotspot; + public IntPtr hbmMask; + public IntPtr hbmColor; + } + + [StructLayout(LayoutKind.Sequential)] + public struct POINT + { + public int x; + public int y; + } + + + [StructLayout(LayoutKind.Sequential)] + public struct CursorInfo + { + public int cbSize; + public int flags; + public IntPtr hCursor; + public POINT ptScreenPos; + } + [StructLayout(LayoutKind.Sequential)] + public struct INPUT + { + public InputType type; + public InputUnion U; + public static int Size + { + get { return Marshal.SizeOf(typeof(INPUT)); } + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct InputEx + { + public InputType type; + public InputUnionEx U; + public static int Size + { + get { return Marshal.SizeOf(typeof(InputEx)); } + } + } + + [StructLayout(LayoutKind.Explicit)] + public struct InputUnion + { + [FieldOffset(0)] + public MOUSEINPUT mi; + [FieldOffset(0)] + public KEYBDINPUT ki; + [FieldOffset(0)] + public HARDWAREINPUT hi; + } + + [StructLayout(LayoutKind.Explicit)] + public struct InputUnionEx + { + [FieldOffset(0)] + public MOUSEINPUT mi; + [FieldOffset(0)] + public KeybdInputEx ki; + [FieldOffset(0)] + public HARDWAREINPUT hi; + } + + [StructLayout(LayoutKind.Sequential)] + public struct MOUSEINPUT + { + public int dx; + public int dy; + public int mouseData; + public MOUSEEVENTF dwFlags; + public uint time; + public IntPtr dwExtraInfo; + } + [StructLayout(LayoutKind.Sequential)] + public struct KEYBDINPUT + { + public VirtualKey wVk; + public ScanCodeShort wScan; + public KEYEVENTF dwFlags; + public int time; + public IntPtr dwExtraInfo; + } + + [StructLayout(LayoutKind.Sequential)] + public struct KeybdInputEx + { + public ushort wVk; + public ushort wScan; + public KEYEVENTF dwFlags; + public int time; + public IntPtr dwExtraInfo; + } + + [StructLayout(LayoutKind.Sequential)] + public struct HARDWAREINPUT + { + public int uMsg; + public short wParamL; + public short wParamH; + } + #endregion + + [StructLayout(LayoutKind.Sequential)] + public struct LASTINPUTINFO + { + public uint cbSize; + public uint dwTime; + } + [DllImport("user32.dll")] + public static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); + + + public const int DESKTOPVERTRES = 117; + public const int DESKTOPHORZRES = 118; + public const int SM_CXSCREEN = 0; + public const int SM_CYSCREEN = 1; + public const int SM_REMOTESESSION = 0x1000; + + [DllImport("gdi32.dll", EntryPoint = "GetDeviceCaps", SetLastError = true)] + public static extern int GetDeviceCaps(IntPtr hdc, int nIndex); + + [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")] + public static extern int GetSystemMetrics(int mVal); + + + #region DLL Imports + [DllImport("user32.dll")] + public static extern bool GetCursorInfo(out CursorInfo pci); + [DllImport("user32.dll", SetLastError = false)] + public static extern IntPtr GetDesktopWindow(); + + [DllImport("user32.dll")] + public static extern IntPtr GetCursor(); + + [DllImport("user32.dll")] + public static extern IntPtr CopyIcon(IntPtr hIcon); + + [DllImport("user32.dll")] + public static extern bool DrawIcon(IntPtr hdc, int x, int y, IntPtr hIcon); + + [DllImport("user32.dll")] + public static extern bool GetIconInfo(IntPtr hIcon, out ICONINFO piconinfo); + [DllImport("user32.dll", SetLastError = true)] + public static extern bool DrawIconEx(IntPtr hdc, int xLeft, int yTop, IntPtr hIcon, int cxWidth, int cyHeight, int istepIfAniCur, IntPtr hbrFlickerFreeDraw, int diFlags); + + + [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] + public static extern void Mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, IntPtr dwExtraInfo); + + [DllImport("user32.dll")] + public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); + [DllImport("user32.dll")] + public static extern uint MapVirtualKey(uint uCode, uint uMapType); + + [DllImport("user32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool GetCursorPos(out System.Drawing.Point lpPoint); + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool SetCursorPos(int x, int y); + + [DllImport("user32.dll")] + public static extern IntPtr SetCursor(IntPtr hcursor); + + [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] + static extern IntPtr LoadImage(IntPtr hinst, string lpszName, uint uType, + int cxDesired, int cyDesired, uint fuLoad); + + [DllImport("user32.dll")] + public static extern IntPtr CreateCursor(IntPtr hInst, int xHotSpot, int yHotSpot, + int nWidth, int nHeight, byte[] pvANDPlane, byte[] pvXORPlane); + + [DllImport("user32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags); + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool SwitchDesktop(IntPtr hDesktop); + + public delegate bool EnumDesktopsDelegate(string desktop, IntPtr lParam); + + [DllImport("user32.dll")] + public static extern bool EnumDesktopsA(IntPtr hwinsta, EnumDesktopsDelegate lpEnumFunc, IntPtr lParam); + + [DllImport("user32.dll", SetLastError = true)] + public static extern IntPtr OpenInputDesktop(uint dwFlags, bool fInherit, ACCESS_MASK dwDesiredAccess); + + public delegate bool EnumWindowStationsDelegate(string windowsStation, IntPtr lParam); + + [DllImport("user32.dll")] + public static extern bool EnumWindowStations(EnumWindowStationsDelegate lpEnumFunc, IntPtr lParam); + + [DllImport("user32.dll")] + public static extern IntPtr GetShellWindow(); + + public sealed class SafeWindowStationHandle : SafeHandleZeroOrMinusOneIsInvalid + { + public SafeWindowStationHandle() + : base(true) + { + } + + protected override bool ReleaseHandle() + { + return CloseWindowStation(handle); + + } + } + + [return: MarshalAs(UnmanagedType.Bool)] + [DllImport("user32", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern bool CloseWindowStation(IntPtr hWinsta); + + [DllImport("user32", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern SafeWindowStationHandle OpenWindowStation([MarshalAs(UnmanagedType.LPTStr)] string lpszWinSta, [MarshalAs(UnmanagedType.Bool)] bool fInherit, ACCESS_MASK dwDesiredAccess); + + [DllImport("user32", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern IntPtr OpenWindowStationW([MarshalAs(UnmanagedType.LPTStr)] string lpszWinSta, [MarshalAs(UnmanagedType.Bool)] bool fInherit, ACCESS_MASK dwDesiredAccess); + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool SetProcessWindowStation(IntPtr hWinSta); + + [DllImport("user32.dll")] + public static extern IntPtr GetWindowDC(IntPtr hWnd); + + public delegate bool EnumWindowsProc(IntPtr hwnd, IntPtr lParam); + + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam); + + [DllImport("User32.dll")] + public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); + + [DllImport("User32.dll")] + public static extern IntPtr GetProcessWindowStation(); + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool SetThreadDesktop(IntPtr hDesktop); + + [DllImport("user32.dll")] + public static extern IntPtr OpenDesktop(string lpszDesktop, uint dwFlags, bool fInherit, ACCESS_MASK dwDesiredAccess); + [DllImport("user32.dll", SetLastError = true)] + public static extern bool CloseDesktop(IntPtr hDesktop); + + public delegate bool EnumDesktopWindowsDelegate(IntPtr hWnd, int lParam); + + [DllImport("user32.dll")] + public static extern bool EnumDesktopWindows(IntPtr hDesktop, EnumDesktopWindowsDelegate lpfn, IntPtr lParam); + + [DllImport("user32.dll")] + public static extern IntPtr GetDC(IntPtr hWnd); + + [DllImport("user32.dll", SetLastError = true)] + public static extern IntPtr SetActiveWindow(IntPtr hWnd); + + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool SetForegroundWindow(IntPtr hWnd); + + [DllImport("user32.dll")] + public static extern uint SendInput(uint nInputs, [MarshalAs(UnmanagedType.LPArray), In] INPUT[] pInputs, int cbSize); + [DllImport("user32.dll")] + public static extern uint SendInput(uint nInputs, [MarshalAs(UnmanagedType.LPArray), In] InputEx[] pInputs, int cbSize); + + [DllImport("user32.dll", SetLastError = false)] + public static extern IntPtr GetMessageExtraInfo(); + [DllImport("sas.dll")] + public static extern void SendSAS(bool asUser); + [DllImport("user32.dll")] + public static extern bool OpenClipboard(IntPtr hWnd); + [DllImport("user32.dll")] + public static extern bool EmptyClipboard(); + [DllImport("user32.dll")] + public static extern bool CloseClipboard(); + [DllImport("user32.dll")] + public static extern IntPtr SetClipboardData(int Format, IntPtr hMem); + + [DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)] + public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); + /* + * SystemParametersInfo( + * SPI_SETDESKWALLPAPER, 0, "filename.bmp", + * SPIF_UPDATEINIFILE | SPIF_SENDCHANGE); + */ + + public const int SPI_SETSCREENSAVEACTIVE = 17; + public const int SPI_SETLOCKSCREENSAVER = 175; + public const int SPI_GETSCREENSAVEACTIVE = 16; + public const int SPI_GETLOCKSCREENSAVER = 174; + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern int SystemParametersInfo( + int uAction, int uParam, string lpvParam, int fuWinIni); + + [DllImport("user32.dll", CharSet = CharSet.Auto)] + public static extern int SystemParametersInfo(int uAction, int uParam, IntPtr lpvParam, int fuWinIni); + [DllImport("user32.dll", CharSet = CharSet.Auto)] + public static extern int SystemParametersInfo(int uAction, int uParam, ref int lpvParam, int fuWinIni); + + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool LockWorkStation(); + + [DllImport("user32.dll")] + public static extern short VkKeyScan(char ch); + + [DllImport("user32.dll", CharSet = CharSet.Unicode)] + public static extern short VkKeyScanEx(char ch, IntPtr dwhkl); + + [DllImport("user32.dll")] + public static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam); + + [DllImport("user32.dll", EntryPoint = "BlockInput")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool BlockInput([MarshalAs(UnmanagedType.Bool)] bool fBlockIt); + + [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] + public static extern int MessageBox(IntPtr hWnd, string text, string caption, long type); + + [DllImport("USER32.dll")] + public static extern short GetKeyState(VirtualKey nVirtKey); + + [DllImport("user32.dll")] + public static extern uint MapVirtualKeyEx(uint uCode, VkMapType uMapType, IntPtr dwhkl); + + [DllImport("user32.dll")] + public static extern IntPtr GetKeyboardLayout(uint threadId = 0); + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool GetUserObjectInformationW(IntPtr hObj, int nIndex, + [Out] byte[] pvInfo, uint nLength, out uint lpnLengthNeeded); + #endregion + + } +} diff --git a/cmonitor.share.receiver.win/winapis/WTSAPI32.cs b/cmonitor.share.receiver.win/winapis/WTSAPI32.cs new file mode 100644 index 00000000..eb293675 --- /dev/null +++ b/cmonitor.share.receiver.win/winapis/WTSAPI32.cs @@ -0,0 +1,84 @@ +using System; +using System.Runtime.InteropServices; +using System.Security; + +namespace cmonitor.server.client.reports.screen.winapis +{ + public static class WTSAPI32 + { + public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero; + + public enum WTS_CONNECTSTATE_CLASS + { + WTSActive, + WTSConnected, + WTSConnectQuery, + WTSShadow, + WTSDisconnected, + WTSIdle, + WTSListen, + WTSReset, + WTSDown, + WTSInit + } + + public enum WTS_INFO_CLASS + { + WTSInitialProgram, + WTSApplicationName, + WTSWorkingDirectory, + WTSOEMId, + WTSSessionId, + WTSUserName, + WTSWinStationName, + WTSDomainName, + WTSConnectState, + WTSClientBuildNumber, + WTSClientName, + WTSClientDirectory, + WTSClientProductId, + WTSClientHardwareId, + WTSClientAddress, + WTSClientDisplay, + WTSClientProtocolType, + WTSIdleTime, + WTSLogonTime, + WTSIncomingBytes, + WTSOutgoingBytes, + WTSIncomingFrames, + WTSOutgoingFrames, + WTSClientInfo, + WTSSessionInfo + } + + + [DllImport("wtsapi32.dll", SetLastError = true)] + public static extern int WTSEnumerateSessions( + IntPtr hServer, + int Reserved, + int Version, + ref IntPtr ppSessionInfo, + ref int pCount); + + [DllImport("wtsapi32.dll", ExactSpelling = true, SetLastError = false)] + public static extern void WTSFreeMemory(IntPtr memory); + + [DllImport("Wtsapi32.dll")] + public static extern bool WTSQuerySessionInformation(IntPtr hServer, uint sessionId, WTS_INFO_CLASS wtsInfoClass, out IntPtr ppBuffer, out uint pBytesReturned); + + [DllImport("wtsapi32.dll", SetLastError = true)] + static extern IntPtr WTSOpenServer(string pServerName); + + [StructLayout(LayoutKind.Sequential)] + public struct WTS_SESSION_INFO + { + public uint SessionID; + [MarshalAs(UnmanagedType.LPStr)] + public string pWinStationName; + public WTS_CONNECTSTATE_CLASS State; + } + + [DllImport("Wtsapi32.dll")] + public static extern bool WTSQueryUserToken(int sessionId, out IntPtr token); + } +} diff --git a/cmonitor.sln b/cmonitor.sln index b4facd15..38246506 100644 --- a/cmonitor.sln +++ b/cmonitor.sln @@ -23,6 +23,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cmonitor.sas.service", "cmo EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cmonitor.install.win", "cmonitor.install.win\cmonitor.install.win.csproj", "{2193D588-05D2-4FE3-BBE7-CC44D2C5D4CC}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cmonitor.share.receiver.win", "cmonitor.share.receiver.win\cmonitor.share.receiver.win.csproj", "{59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -216,6 +218,24 @@ Global {2193D588-05D2-4FE3-BBE7-CC44D2C5D4CC}.ReleaseLinux|x64.Build.0 = Release|Any CPU {2193D588-05D2-4FE3-BBE7-CC44D2C5D4CC}.ReleaseLinux|x86.ActiveCfg = Release|Any CPU {2193D588-05D2-4FE3-BBE7-CC44D2C5D4CC}.ReleaseLinux|x86.Build.0 = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Debug|x64.ActiveCfg = Debug|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Debug|x64.Build.0 = Debug|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Debug|x86.ActiveCfg = Debug|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Debug|x86.Build.0 = Debug|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Release|Any CPU.Build.0 = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Release|x64.ActiveCfg = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Release|x64.Build.0 = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Release|x86.ActiveCfg = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.Release|x86.Build.0 = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.ReleaseLinux|x64.Build.0 = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.ReleaseLinux|x86.ActiveCfg = Release|Any CPU + {59FCFFA4-AAB7-423A-AE01-DCDE47B2C9C1}.ReleaseLinux|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/cmonitor.web/src/views/device/plugins/report/Option.vue b/cmonitor.web/src/views/device/plugins/report/Option.vue index c585b9ba..16604a70 100644 --- a/cmonitor.web/src/views/device/plugins/report/Option.vue +++ b/cmonitor.web/src/views/device/plugins/report/Option.vue @@ -1,6 +1,6 @@ diff --git a/cmonitor.win/Form1.Designer.cs b/cmonitor.win/MainForm.Designer.cs similarity index 94% rename from cmonitor.win/Form1.Designer.cs rename to cmonitor.win/MainForm.Designer.cs index 78321472..3fcd812a 100644 --- a/cmonitor.win/Form1.Designer.cs +++ b/cmonitor.win/MainForm.Designer.cs @@ -1,6 +1,6 @@ namespace cmonitor.win { - partial class Form1 + partial class MainForm { /// /// 必需的设计器变量。 @@ -30,13 +30,13 @@ { this.SuspendLayout(); // - // Form1 + // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(0, 0); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; - this.Name = "Form1"; + this.Name = "MainForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnClose); this.Load += new System.EventHandler(this.OnLoad); diff --git a/cmonitor.win/Form1.cs b/cmonitor.win/MainForm.cs similarity index 97% rename from cmonitor.win/Form1.cs rename to cmonitor.win/MainForm.cs index 40abaa49..e7858b24 100644 --- a/cmonitor.win/Form1.cs +++ b/cmonitor.win/MainForm.cs @@ -5,7 +5,7 @@ using System.Windows.Forms; namespace cmonitor.win { - public partial class Form1 : Form + public partial class MainForm : Form { private Process proc; private string[] args; @@ -21,7 +21,7 @@ namespace cmonitor.win return cp; } } - public Form1(string[] args) + public MainForm(string[] args) { this.args = args; InitializeComponent(); diff --git a/cmonitor.win/Form1.resx b/cmonitor.win/MainForm.resx similarity index 100% rename from cmonitor.win/Form1.resx rename to cmonitor.win/MainForm.resx diff --git a/cmonitor.win/Program.cs b/cmonitor.win/Program.cs index 33062911..b32b7e8c 100644 --- a/cmonitor.win/Program.cs +++ b/cmonitor.win/Program.cs @@ -23,7 +23,7 @@ namespace cmonitor.win Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new Form1(args)); + Application.Run(new MainForm(args)); } } } diff --git a/cmonitor.win/cmonitor.win.csproj b/cmonitor.win/cmonitor.win.csproj index 155f1977..219db68a 100644 --- a/cmonitor.win/cmonitor.win.csproj +++ b/cmonitor.win/cmonitor.win.csproj @@ -65,16 +65,16 @@ - + Form - - Form1.cs + + MainForm.cs - - Form1.cs + + MainForm.cs ResXFileCodeGenerator diff --git a/cmonitor/Program.cs b/cmonitor/Program.cs index 0d12f677..ad6cf279 100644 --- a/cmonitor/Program.cs +++ b/cmonitor/Program.cs @@ -44,6 +44,13 @@ namespace cmonitor { static async Task Main(string[] args) { + //单服务 + Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out bool isAppRunning); + if (isAppRunning == false) + { + Environment.Exit(1); + } + //日志输出 LoggerConsole(); @@ -60,12 +67,7 @@ namespace cmonitor Config config = new Config(); InitConfig(config, dic); - //单服务 - Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out bool isAppRunning); - if (isAppRunning == false) - { - Environment.Exit(1); - } + //全局异常 AppDomain.CurrentDomain.UnhandledException += (a, b) => { diff --git a/cmonitor/publish/cmonitor.install.win.exe b/cmonitor/publish/cmonitor.install.win.exe index dcd374e9..69eec639 100644 Binary files a/cmonitor/publish/cmonitor.install.win.exe and b/cmonitor/publish/cmonitor.install.win.exe differ diff --git a/cmonitor/publish/cmonitor.sas.service.exe b/cmonitor/publish/cmonitor.sas.service.exe index d9aa54a9..906a52fb 100644 Binary files a/cmonitor/publish/cmonitor.sas.service.exe and b/cmonitor/publish/cmonitor.sas.service.exe differ diff --git a/cmonitor/publish/cmonitor.win.exe b/cmonitor/publish/cmonitor.win.exe index db220c8c..88f32eaf 100644 Binary files a/cmonitor/publish/cmonitor.win.exe and b/cmonitor/publish/cmonitor.win.exe differ diff --git a/cmonitor/publish/llock.win.exe b/cmonitor/publish/llock.win.exe index 8111dae9..aa5fe34e 100644 Binary files a/cmonitor/publish/llock.win.exe and b/cmonitor/publish/llock.win.exe differ diff --git a/cmonitor/publish/message.win.exe b/cmonitor/publish/message.win.exe index 8ce6026a..75c8044d 100644 Binary files a/cmonitor/publish/message.win.exe and b/cmonitor/publish/message.win.exe differ diff --git a/cmonitor/publish/notify.win.exe b/cmonitor/publish/notify.win.exe index a690786b..770b6f80 100644 Binary files a/cmonitor/publish/notify.win.exe and b/cmonitor/publish/notify.win.exe differ diff --git a/cmonitor/publish/wallpaper.win.exe b/cmonitor/publish/wallpaper.win.exe index a440de38..49f5d3fb 100644 Binary files a/cmonitor/publish/wallpaper.win.exe and b/cmonitor/publish/wallpaper.win.exe differ diff --git a/cmonitor/publish/web/css/110.3ae4c36c.css b/cmonitor/publish/web/css/110.9f40a1e3.css similarity index 99% rename from cmonitor/publish/web/css/110.3ae4c36c.css rename to cmonitor/publish/web/css/110.9f40a1e3.css index 0297befd..2bdab617 100644 --- a/cmonitor/publish/web/css/110.3ae4c36c.css +++ b/cmonitor/publish/web/css/110.9f40a1e3.css @@ -1 +1 @@ -.head-wrap[data-v-57a222e9]{text-align:center;padding:.5rem 0;line-height:4rem;border-bottom:1px solid #ddd;background-color:#f0f0f0;font-size:1.5rem;font-weight:700;z-index:999;position:relative;box-shadow:1px 1px 4px rgba(0,0,0,.075)}img[data-v-57a222e9]{height:4rem;vertical-align:middle;margin-right:.6rem}.el-icon[data-v-00407dd8]{vertical-align:middle;margin-top:-3px}span[data-v-00407dd8]{display:inline-flex;line-height:1}.el-icon[data-v-5e5b55e3]{vertical-align:middle;margin-top:-3px}span[data-v-5e5b55e3]{display:inline-flex;line-height:1}.el-icon[data-v-0672e0ec]{font-size:1.6rem;vertical-align:middle;margin-top:-1px}.el-dropdown[data-v-0672e0ec]{color:#f5f5f5;font-size:1.6rem}.el-icon[data-v-3ab1cd5b]{vertical-align:middle;margin-top:-3px}span[data-v-3ab1cd5b]{display:inline-flex;line-height:1}.el-dialog.is-align-center.options{margin-top:1vh}.foot-wrap[data-v-27826286]{border-top:1px solid rgba(18,63,76,.8);position:relative;z-index:999}ul li[data-v-27826286]{width:25%;text-align:center}ul li a[data-v-27826286]{padding:1.2rem 0;font-size:1.6rem;display:block;color:#f5f5f5;line-height:1}ul li a[data-v-27826286]:hover{background-color:rgba(0,0,0,.05)}.foot-options-wrap[data-v-49866454]{text-align:center;padding:.6rem}.foot-options-wrap .el-button[data-v-49866454]{background-color:hsla(0,0%,100%,.05);border-color:rgba(18,63,76,.8);color:#f5f5f5}.foot-options-wrap .el-dropdown[data-v-49866454]{margin:0 .6rem}.foot-options-wrap .options-btn .el-button+.el-button[data-v-49866454]{margin-left:.6rem}.foot-options-wrap .options-btn p[data-v-49866454]{padding-top:.6rem}.foot-options-wrap .options-btn p[data-v-49866454]:first-child{padding:0}i.user-name[data-v-793dbf84]{color:#666}.speed[data-v-6a822c73]{font-size:1.3rem;padding-top:.1rem;color:#666}.speed span[data-v-6a822c73]:first-child{margin-right:1rem}.speed .el-icon[data-v-6a822c73]{vertical-align:middle;margin-top:-2px}.process[data-v-394c2481]{position:absolute;left:0;right:0;bottom:.2rem;background-color:rgba(0,0,0,.4);padding:.6rem}.process .title[data-v-394c2481]{position:relative;z-index:2;font-size:1.4rem;color:#fff;word-break:break-all;border-radius:4px}.process .btn a[data-v-394c2481]{font-size:1.6rem;color:#fff;margin-left:.6rem;position:relative}.process .btn a span.num[data-v-394c2481]{font-size:1.3rem;position:absolute;right:50%;top:-50%;color:#fff;text-shadow:0 0 1px red}.share-lock-wrap[data-v-131f0fcf]{position:absolute;left:0;top:0;right:0;bottom:0}.share-lock-wrap .inner[data-v-131f0fcf]{position:absolute;left:50%;top:50%;transform:translateX(-50%) translateY(-50%);text-align:center;border:1px solid hsla(0,0%,100%,.5);background-color:rgba(0,0,0,.3);padding:1rem;z-index:2;border-radius:.4rem}.share-lock-wrap .inner h5[data-v-131f0fcf]{font-size:1.3rem;color:#fff;line-height:1.6rem}.share-lock-wrap .inner h5 .el-checkbox[data-v-131f0fcf]{height:1.6rem;vertical-align:bottom;color:#fff}.share-lock-wrap .inner .stars[data-v-131f0fcf]{padding:.2rem 0 1rem 0;font-size:1.2rem;color:#fff}.share-lock-wrap .inner .stars .line[data-v-131f0fcf]{padding:.6rem 0 .4rem 0}.share-lock-wrap .inner .stars .line>span[data-v-131f0fcf]{white-space:nowrap}.share-lock-wrap .inner .el-rate.el-rate--large[data-v-131f0fcf]{height:inherit}a[data-v-28d57024]{width:2.4rem;height:2.4rem;text-align:center;line-height:2.8rem;margin-bottom:.6rem;display:block;font-size:2rem;border-radius:50%;border:1px solid #3e5a6e;box-shadow:0 0 4px hsla(0,0%,100%,.1);background-color:hsla(0,0%,100%,.5);color:#3e5a6e;transition:.3s}a[data-v-28d57024]:hover{box-shadow:0 0 4px 2px hsla(0,0%,100%,.5)}a[data-v-54274fe8]{width:2.4rem;height:2.4rem;text-align:center;line-height:2.8rem;margin-bottom:.6rem;display:block;font-size:2rem;border-radius:50%;border:1px solid #3e5a6e;box-shadow:0 0 4px hsla(0,0%,100%,.1);background-color:hsla(0,0%,100%,.5);color:#3e5a6e;transition:.3s}a[data-v-54274fe8]:hover{box-shadow:0 0 4px 2px hsla(0,0%,100%,.5)}a[data-v-53f45bd0]{width:2.4rem;height:2.4rem;text-align:center;line-height:2.8rem;margin-bottom:.6rem;display:block;font-size:2rem;border-radius:50%;border:1px solid #3e5a6e;box-shadow:0 0 4px hsla(0,0%,100%,.1);background-color:hsla(0,0%,100%,.5);color:#3e5a6e;transition:.3s;position:relative}a[data-v-53f45bd0]:hover{box-shadow:0 0 4px 2px hsla(0,0%,100%,.5)}a span.value[data-v-53f45bd0]{position:absolute;left:110%;top:50%;transform:translateY(-50%);color:#fff;text-shadow:1px 1px 1px #000;font-size:1.4rem}a[data-v-6807b74e]{position:relative}.window-value[data-v-6807b74e]{color:#fff;text-shadow:1px 1px 1px #000;font-size:1.4rem;position:absolute;right:110%;top:50%;transform:translateY(-50%)}span.window[data-v-6807b74e]{position:relative;height:100%;display:block}span.window .el-icon[data-v-6807b74e]{font-size:2rem}a[data-v-10febbed]{position:relative}a span.value[data-v-10febbed]{position:absolute;right:110%;top:50%;transform:translateY(-50%);color:#fff;text-shadow:1px 1px 1px #000;font-size:1.4rem}a[data-v-79103ff6]{position:relative}.light-value[data-v-79103ff6]{color:#fff;text-shadow:1px 1px 1px #000;font-size:1.4rem;position:absolute;right:110%;top:50%;transform:translateY(-50%)}span.light[data-v-79103ff6]{position:relative;height:100%;display:block}span.light .el-icon[data-v-79103ff6]{font-size:2rem}span.light .light-bg[data-v-79103ff6]{position:absolute;bottom:2px;left:0;height:0;width:100%;overflow:hidden}span.light .light-bg .el-icon[data-v-79103ff6]{color:green;position:absolute;left:50%;transform:translateX(-50%);bottom:0}a[data-v-936167e0]{position:relative}.volume-value[data-v-936167e0]{color:#fff;text-shadow:1px 1px 1px #000;font-size:1.4rem;position:absolute;right:110%;top:50%;transform:translateY(-50%)}span.volume[data-v-936167e0]{position:relative;height:100%;display:block}span.volume .el-icon[data-v-936167e0]{font-size:2rem}span.volume .volume-bg[data-v-936167e0]{position:absolute;bottom:2px;left:0;height:0;width:100%;overflow:hidden}span.volume .volume-bg .el-icon[data-v-936167e0]{color:green;position:absolute;left:50%;transform:translateX(-50%);bottom:0}.el-switch.llock[data-v-5b7c10b5]{--el-switch-on-color:rgba(33,153,33,.8)}.time[data-v-51edd8bd]{text-align:left!important;color:#666;line-height:2rem}.time>span[data-v-51edd8bd]{font-size:1.2rem}.el-switch.usb[data-v-fa904c9e]{--el-switch-on-color:rgba(255,0,0,.8)!important}.el-switch.volume[data-v-87940482]{--el-switch-on-color:rgba(33,153,33,.8)}.device-item[data-v-09c8d4b8]{font-size:1.6rem;box-shadow:0 0 4px rgba(0,0,0,.05);width:100%;margin:0 auto .6rem auto;position:relative;transition:.3s;background-color:hsla(0,0%,100%,.5);border-radius:4px}.device-item[data-v-09c8d4b8]:after{content:"";position:absolute;left:0;top:0;right:0;bottom:0;z-index:-1;border:1px solid rgba(251,241,242,.4);border-radius:4px}.device-item dt[data-v-09c8d4b8]{padding:.6rem .6rem 0 .6rem;border-radius:4px;position:relative}.device-item dt span.name[data-v-09c8d4b8]{line-height:2rem}.device-item dt span.name.connected[data-v-09c8d4b8]{color:var(--el-color-primary);font-weight:700}.device-item dd.img[data-v-09c8d4b8]{padding:.6rem;position:relative;font-size:0;box-sizing:border-box}.device-item dd.img[data-v-09c8d4b8]:before{content:"";display:inline-block;padding-bottom:56.25%;width:.1px;vertical-align:middle}.device-item dd.img .inner[data-v-09c8d4b8]{position:absolute;left:.6rem;top:.6rem;right:.6rem;bottom:.6rem;overflow:hidden;background-color:rgba(0,0,0,.1);border-radius:4px;border:1px solid hsla(0,0%,100%,.2);box-sizing:border-box}.device-item dd.img .inner canvas[data-v-09c8d4b8]{width:100%;position:absolute;height:100%;border-radius:4px}.device-item dd.img .inner .btns[data-v-09c8d4b8]{pointer-events:none;position:absolute;left:0;right:0;top:10%}.device-item dd.img .inner .btns .left[data-v-09c8d4b8]{padding-left:.6rem;pointer-events:all}.device-item dd.img .inner .btns .right[data-v-09c8d4b8]{padding-right:.6rem;pointer-events:all}.device-item dd.img .inner .btns .left a[data-v-09c8d4b8],.device-item dd.img .inner .btns .right a[data-v-09c8d4b8]{width:2.4rem;height:2.4rem;text-align:center;line-height:2.8rem;margin-bottom:.6rem;display:block;font-size:2rem;border-radius:50%;border:1px solid #3e5a6e;box-shadow:0 0 4px hsla(0,0%,100%,.1);background-color:hsla(0,0%,100%,.5);color:#3e5a6e;transition:.3s}.device-item dd.img .inner .btns .left a[data-v-09c8d4b8]:hover,.device-item dd.img .inner .btns .right a[data-v-09c8d4b8]:hover{box-shadow:0 0 4px 2px hsla(0,0%,100%,.5)}.device-item dd.options[data-v-09c8d4b8]{padding:0 .6rem .6rem .6rem;border-radius:4px;text-align:center}.device-item dd.options .el-col[data-v-09c8d4b8]{text-align:right}.device-item dd.options .el-col .el-switch[data-v-09c8d4b8]{--el-switch-off-color:#ccc;--el-switch-on-color:#69b56c}.wrap[data-v-7407ef56]{height:70vh}.wrap .inner[data-v-7407ef56]{border:1px solid #ddd;border-radius:4px;padding:1rem .6rem 1rem 1rem}.wrap .inner li[data-v-7407ef56]{border:1px solid #ddd;padding:.6rem;margin-bottom:.6rem;border-radius:.4rem}.wrap .inner dt[data-v-7407ef56]{word-break:break-all}.wrap .inner dd .time[data-v-7407ef56]{height:1rem;background-color:green}.wrap[data-v-37d67526]{height:7}.wrap[data-v-134f3cec]{height:70vh}.wrap .inner[data-v-134f3cec]{border:1px solid #ddd;border-radius:4px;padding:1rem 0}.wrap .inner li[data-v-134f3cec]{padding:.6rem;margin-bottom:.6rem;word-break:break-all;border-bottom:1px solid #ddd}.wrap .inner li .btns[data-v-134f3cec]{padding-left:.6rem}.window-items-wrap .head[data-v-3aff4911]{width:100%;padding-bottom:1rem}.window-items-wrap .prevs-wrap[data-v-3aff4911]{height:100%;position:relative}.windows-items-wrap .head[data-v-d270371c]{width:100%;padding-bottom:1rem}.windows-items-wrap .prevs-wrap[data-v-d270371c]{height:100%;position:relative}.checkbox-wrap[data-v-6b36cd30]{border:1px solid #ddd}.head[data-v-6b36cd30]{border-bottom:1px solid #ddd;line-height:4rem;padding:0 1rem;background-color:#fafafa}.body ul[data-v-6b36cd30]{padding:1rem 0}.body li[data-v-6b36cd30]{padding:0 1rem}.body li .el-checkbox[data-v-6b36cd30]{width:100%;white-space:pre-wrap;word-break:break-all}.rule-wrap[data-v-87931b18]{height:70vh}.rule-wrap .Exes[data-v-87931b18],.rule-wrap .items[data-v-87931b18]{height:100%;width:48%;position:relative}.rule-wrap .Exes .private[data-v-87931b18],.rule-wrap .Exes .public[data-v-87931b18]{height:49%;position:relative}.checkbox-wrap[data-v-3f1c33d0]{border:1px solid #ddd}.head[data-v-3f1c33d0]{border-bottom:1px solid #ddd;line-height:4rem;padding:0 1rem;background-color:#fafafa}.body ul[data-v-3f1c33d0]{padding:1rem 0}.body li .el-checkbox[data-v-3f1c33d0]{width:100%}.body li>div.default[data-v-3f1c33d0]{padding:.6rem 1rem;line-height:2rem}.body li[data-v-3f1c33d0]:hover{background-color:rgba(0,0,0,.1)}.command-wrap .commands .item{padding:.6rem}.command-wrap .commands .item .subitem{padding:.2rem}.command-wrap .commands .item .subitem .label{margin-right:.6rem}.command-wrap[data-v-668c193e]{height:70vh}.command-wrap .items[data-v-668c193e]{height:100%;width:32%;position:relative}.command-wrap .commands[data-v-668c193e]{height:100%;width:67%;position:relative;border:1px solid #ddd;box-sizing:border-box}.command-wrap .commands .inner[data-v-668c193e]{padding:.6rem}.command-wrap .commands .inner>div[data-v-668c193e]{padding:.6rem 0}.command-wrap .btn[data-v-668c193e]{text-align:center;padding:.2rem 0;width:100%}.devices-wrap[data-v-97145bf0]{height:70vh;position:relative}.devices-wrap .del-btn[data-v-97145bf0]{font-size:2rem}.rule-wrap[data-v-1d10a778]{height:70vh}.rule-wrap .items[data-v-1d10a778],.rule-wrap .rules[data-v-1d10a778]{height:100%;width:48%;position:relative}.rule-wrap .rules .private[data-v-1d10a778],.rule-wrap .rules .public[data-v-1d10a778]{height:49%;position:relative}.rule-items-wrap .head[data-v-75241a7e]{width:100%;padding-bottom:1rem}.rule-items-wrap .prevs-wrap[data-v-75241a7e]{height:100%;position:relative}.command-wrap[data-v-b042e218]{height:55vh}.command-wrap .head[data-v-b042e218]{width:100%;padding-bottom:1rem}.command-wrap .private[data-v-b042e218],.command-wrap .public[data-v-b042e218]{width:49%;position:relative}.command-wrap .process[data-v-b042e218]{height:100%;width:48%;position:relative}.process-items-wrap .head[data-v-270ff067]{width:100%;padding-bottom:1rem}.process-items-wrap .prevs-wrap[data-v-270ff067]{height:100%;position:relative}.process-items-wrap .head[data-v-1905f2ff]{width:100%;padding-bottom:1rem}.process-items-wrap .prevs-wrap[data-v-1905f2ff]{height:100%;position:relative}.process-items-wrap .allow-type-0[data-v-1905f2ff]{color:green}.process-items-wrap .allow-type-1[data-v-1905f2ff]{color:red}.process-items-wrap .alert[data-v-1905f2ff]{background-color:rgba(255,136,0,.2);border:1px solid #ddd;margin-bottom:1rem;padding:.6rem;border-radius:.4rem}*{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.keyboard-wrap[data-v-359681c4]{position:absolute;left:.6rem;right:.6rem;bottom:.6rem;border-radius:4px;z-index:99999}.keyboard-wrap[data-v-359681c4]:after{content:"";position:absolute;left:0;top:0;right:0;bottom:0;z-index:-1;border-radius:4px;background-color:rgba(219,234,255,.5);border:1px solid rgba(18,63,76,.8);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.keyboard-wrap a.close[data-v-359681c4]{position:absolute;right:-.4rem;top:-.8rem;color:#fff;background-color:hsla(0,0%,100%,.2);display:block;border-radius:50%;border:1px solid hsla(0,0%,100%,.2);width:1.6rem;height:1.6rem;text-align:center;line-height:1.6rem}.keyboard-wrap h3[data-v-359681c4]{text-align:center;padding-top:.6rem;color:#164e51;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}.keyboard-wrap ul[data-v-359681c4]{padding:.6rem}.keyboard-wrap ul .key[data-v-359681c4]{padding:.2rem;text-align:center}.keyboard-wrap ul .key .inner[data-v-359681c4]{border:1px solid rgba(46,90,95,.8);background-color:hsla(0,0%,100%,.1);padding:.6rem 0;border-radius:4px;color:#164e51;transition:.1s;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}.keyboard-wrap ul .key .inner[data-v-359681c4]:active{background-color:rgba(46,90,95,.2);color:#fff}.command-wrap[data-v-244e18ca]{height:70vh}.command-wrap .items[data-v-244e18ca]{height:100%;width:60%;position:relative}.command-wrap .commands[data-v-244e18ca]{height:100%;width:38%;position:relative}.command-wrap .light[data-v-244e18ca]{font-size:2rem;padding-left:1rem}.command-wrap .light .value[data-v-244e18ca]{font-size:1.4rem}.command-wrap .slider-wrap[data-v-244e18ca]{height:100%;text-align:center}.command-wrap .slider-wrap .btn[data-v-244e18ca],.command-wrap .slider-wrap .silder[data-v-244e18ca]{padding:2rem 0}.command-wrap .slider-wrap .btn+.btn[data-v-244e18ca]{padding-top:0}.light[data-v-6a9d819b]{font-size:2rem;padding-left:1rem}.light .value[data-v-6a9d819b]{font-size:1.4rem}.slider-wrap[data-v-6a9d819b]{text-align:center}.slider-wrap .silder[data-v-6a9d819b]{padding:2rem 4rem}.slider-wrap .btn[data-v-6a9d819b]{padding:2rem 0}.slider-wrap .btn+.btn[data-v-6a9d819b]{padding-top:0}.command-wrap[data-v-34040146]{height:70vh}.command-wrap .items[data-v-34040146]{height:100%;width:36%;position:relative}.command-wrap .prevs-wrap[data-v-34040146]{height:100%;width:62%;position:relative}.command-wrap .prevs-wrap .times[data-v-34040146]{margin:.6rem 0}.command-wrap .prevs-wrap .prevs[data-v-34040146]{height:100%;width:100%;position:relative}.setting-wrap[data-v-398854f9]{position:relative;padding:2rem 5rem}.el-switch[data-v-ede9893e]{--el-switch-on-color:rgba(255,0,0,.8)!important}.el-button+.el-button[data-v-ede9893e]{margin-left:.6rem}.el-button[data-v-ede9893e]{padding:6px 12px}.command-wrap[data-v-ede9893e]{height:70vh}.command-wrap .items[data-v-ede9893e]{height:100%;width:32%;position:relative}.command-wrap .commands[data-v-ede9893e]{height:100%;width:67%;position:relative;border:1px solid #ddd;box-sizing:border-box}.command-wrap .commands .inner[data-v-ede9893e]{padding:.6rem}.command-wrap .commands .inner .options[data-v-ede9893e],.command-wrap .commands .inner span.label[data-v-ede9893e]{line-height:4rem}.command-wrap[data-v-2cba18e1]{height:70vh}.command-wrap .items[data-v-2cba18e1]{height:100%;width:60%;position:relative}.command-wrap .commands[data-v-2cba18e1]{height:100%;width:38%;position:relative}.command-wrap .volume[data-v-2cba18e1]{font-size:2rem;padding-left:1rem}.command-wrap .volume .value[data-v-2cba18e1]{font-size:1.4rem}.command-wrap .slider-wrap[data-v-2cba18e1]{height:100%;text-align:center}.command-wrap .slider-wrap .btn[data-v-2cba18e1],.command-wrap .slider-wrap .silder[data-v-2cba18e1]{padding:2rem 0}.command-wrap .slider-wrap .btn+.btn[data-v-2cba18e1]{padding-top:0}.volume-dialog[data-v-3ca473a0]{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.volume[data-v-3ca473a0]{font-size:2rem;padding-left:1rem}.volume .value[data-v-3ca473a0]{font-size:1.4rem}.slider-wrap[data-v-3ca473a0]{text-align:center}.slider-wrap .gif img[data-v-3ca473a0]{width:100%}.slider-wrap .silder[data-v-3ca473a0]{padding:0 4rem 2rem 4rem}.slider-wrap .btn[data-v-3ca473a0]{padding-top:2rem}.device-list-wrap .head[data-v-041d6b86]{padding:1rem 1rem 1rem 1rem;border-bottom:1px solid #ddd;background-color:#f0f0f0;z-index:999;position:relative;box-shadow:1px 1px 4px rgba(0,0,0,.075)}.device-list-wrap .items[data-v-041d6b86]{padding:.6rem;transform-style:preserve-3d;perspective:600px;padding-bottom:11.6rem}.device-list-wrap .foot[data-v-041d6b86]{position:absolute;z-index:999;left:.6rem;right:.6rem;bottom:.6rem;border-radius:4px}.device-list-wrap .foot[data-v-041d6b86]:after{content:"";position:absolute;left:0;top:0;right:0;bottom:0;z-index:-1;border:1px solid rgba(18,63,76,.8);border-radius:4px;background-color:rgba(19,67,89,.5);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}@media (min-width:768px){.main-wrap[data-v-6beac69c]{border:2px solid #d0d7de;height:90%!important;width:394px!important}}.main-wrap[data-v-6beac69c]{width:100%;position:absolute;left:50%;top:50%;transform:translateX(-50%) translateY(-50%);background-color:#fff;height:100%;background-color:#333;background-image:url(/img/bg3.1572e850.webp);background-size:cover;background-position:top}.main-wrap .body[data-v-6beac69c]{position:relative} \ No newline at end of file +.head-wrap[data-v-57a222e9]{text-align:center;padding:.5rem 0;line-height:4rem;border-bottom:1px solid #ddd;background-color:#f0f0f0;font-size:1.5rem;font-weight:700;z-index:999;position:relative;box-shadow:1px 1px 4px rgba(0,0,0,.075)}img[data-v-57a222e9]{height:4rem;vertical-align:middle;margin-right:.6rem}.el-icon[data-v-00407dd8]{vertical-align:middle;margin-top:-3px}span[data-v-00407dd8]{display:inline-flex;line-height:1}.el-icon[data-v-5e5b55e3]{vertical-align:middle;margin-top:-3px}span[data-v-5e5b55e3]{display:inline-flex;line-height:1}.el-icon[data-v-0672e0ec]{font-size:1.6rem;vertical-align:middle;margin-top:-1px}.el-dropdown[data-v-0672e0ec]{color:#f5f5f5;font-size:1.6rem}.el-icon[data-v-3ab1cd5b]{vertical-align:middle;margin-top:-3px}span[data-v-3ab1cd5b]{display:inline-flex;line-height:1}.el-dialog.is-align-center.options{margin-top:1vh}.foot-wrap[data-v-27826286]{border-top:1px solid rgba(18,63,76,.8);position:relative;z-index:999}ul li[data-v-27826286]{width:25%;text-align:center}ul li a[data-v-27826286]{padding:1.2rem 0;font-size:1.6rem;display:block;color:#f5f5f5;line-height:1}ul li a[data-v-27826286]:hover{background-color:rgba(0,0,0,.05)}.foot-options-wrap[data-v-49866454]{text-align:center;padding:.6rem}.foot-options-wrap .el-button[data-v-49866454]{background-color:hsla(0,0%,100%,.05);border-color:rgba(18,63,76,.8);color:#f5f5f5}.foot-options-wrap .el-dropdown[data-v-49866454]{margin:0 .6rem}.foot-options-wrap .options-btn .el-button+.el-button[data-v-49866454]{margin-left:.6rem}.foot-options-wrap .options-btn p[data-v-49866454]{padding-top:.6rem}.foot-options-wrap .options-btn p[data-v-49866454]:first-child{padding:0}i.user-name[data-v-793dbf84]{color:#666}.speed[data-v-6a822c73]{font-size:1.3rem;padding-top:.1rem;color:#666}.speed span[data-v-6a822c73]:first-child{margin-right:1rem}.speed .el-icon[data-v-6a822c73]{vertical-align:middle;margin-top:-2px}.process[data-v-394c2481]{position:absolute;left:0;right:0;bottom:.2rem;background-color:rgba(0,0,0,.4);padding:.6rem}.process .title[data-v-394c2481]{position:relative;z-index:2;font-size:1.4rem;color:#fff;word-break:break-all;border-radius:4px}.process .btn a[data-v-394c2481]{font-size:1.6rem;color:#fff;margin-left:.6rem;position:relative}.process .btn a span.num[data-v-394c2481]{font-size:1.3rem;position:absolute;right:50%;top:-50%;color:#fff;text-shadow:0 0 1px red}.share-lock-wrap[data-v-131f0fcf]{position:absolute;left:0;top:0;right:0;bottom:0}.share-lock-wrap .inner[data-v-131f0fcf]{position:absolute;left:50%;top:50%;transform:translateX(-50%) translateY(-50%);text-align:center;border:1px solid hsla(0,0%,100%,.5);background-color:rgba(0,0,0,.3);padding:1rem;z-index:2;border-radius:.4rem}.share-lock-wrap .inner h5[data-v-131f0fcf]{font-size:1.3rem;color:#fff;line-height:1.6rem}.share-lock-wrap .inner h5 .el-checkbox[data-v-131f0fcf]{height:1.6rem;vertical-align:bottom;color:#fff}.share-lock-wrap .inner .stars[data-v-131f0fcf]{padding:.2rem 0 1rem 0;font-size:1.2rem;color:#fff}.share-lock-wrap .inner .stars .line[data-v-131f0fcf]{padding:.6rem 0 .4rem 0}.share-lock-wrap .inner .stars .line>span[data-v-131f0fcf]{white-space:nowrap}.share-lock-wrap .inner .el-rate.el-rate--large[data-v-131f0fcf]{height:inherit}a[data-v-28d57024]{width:2.4rem;height:2.4rem;text-align:center;line-height:2.8rem;margin-bottom:.6rem;display:block;font-size:2rem;border-radius:50%;border:1px solid #3e5a6e;box-shadow:0 0 4px hsla(0,0%,100%,.1);background-color:hsla(0,0%,100%,.5);color:#3e5a6e;transition:.3s}a[data-v-28d57024]:hover{box-shadow:0 0 4px 2px hsla(0,0%,100%,.5)}a[data-v-54274fe8]{width:2.4rem;height:2.4rem;text-align:center;line-height:2.8rem;margin-bottom:.6rem;display:block;font-size:2rem;border-radius:50%;border:1px solid #3e5a6e;box-shadow:0 0 4px hsla(0,0%,100%,.1);background-color:hsla(0,0%,100%,.5);color:#3e5a6e;transition:.3s}a[data-v-54274fe8]:hover{box-shadow:0 0 4px 2px hsla(0,0%,100%,.5)}a[data-v-53f45bd0]{width:2.4rem;height:2.4rem;text-align:center;line-height:2.8rem;margin-bottom:.6rem;display:block;font-size:2rem;border-radius:50%;border:1px solid #3e5a6e;box-shadow:0 0 4px hsla(0,0%,100%,.1);background-color:hsla(0,0%,100%,.5);color:#3e5a6e;transition:.3s;position:relative}a[data-v-53f45bd0]:hover{box-shadow:0 0 4px 2px hsla(0,0%,100%,.5)}a span.value[data-v-53f45bd0]{position:absolute;left:110%;top:50%;transform:translateY(-50%);color:#fff;text-shadow:1px 1px 1px #000;font-size:1.4rem}a[data-v-6807b74e]{position:relative}.window-value[data-v-6807b74e]{color:#fff;text-shadow:1px 1px 1px #000;font-size:1.4rem;position:absolute;right:110%;top:50%;transform:translateY(-50%)}span.window[data-v-6807b74e]{position:relative;height:100%;display:block}span.window .el-icon[data-v-6807b74e]{font-size:2rem}a[data-v-10febbed]{position:relative}a span.value[data-v-10febbed]{position:absolute;right:110%;top:50%;transform:translateY(-50%);color:#fff;text-shadow:1px 1px 1px #000;font-size:1.4rem}a[data-v-79103ff6]{position:relative}.light-value[data-v-79103ff6]{color:#fff;text-shadow:1px 1px 1px #000;font-size:1.4rem;position:absolute;right:110%;top:50%;transform:translateY(-50%)}span.light[data-v-79103ff6]{position:relative;height:100%;display:block}span.light .el-icon[data-v-79103ff6]{font-size:2rem}span.light .light-bg[data-v-79103ff6]{position:absolute;bottom:2px;left:0;height:0;width:100%;overflow:hidden}span.light .light-bg .el-icon[data-v-79103ff6]{color:green;position:absolute;left:50%;transform:translateX(-50%);bottom:0}a[data-v-936167e0]{position:relative}.volume-value[data-v-936167e0]{color:#fff;text-shadow:1px 1px 1px #000;font-size:1.4rem;position:absolute;right:110%;top:50%;transform:translateY(-50%)}span.volume[data-v-936167e0]{position:relative;height:100%;display:block}span.volume .el-icon[data-v-936167e0]{font-size:2rem}span.volume .volume-bg[data-v-936167e0]{position:absolute;bottom:2px;left:0;height:0;width:100%;overflow:hidden}span.volume .volume-bg .el-icon[data-v-936167e0]{color:green;position:absolute;left:50%;transform:translateX(-50%);bottom:0}.el-switch.llock[data-v-5b7c10b5]{--el-switch-on-color:rgba(33,153,33,.8)}.time[data-v-328e5aa7]{text-align:left!important;color:#666;line-height:2rem}.time>span[data-v-328e5aa7]{font-size:1.2rem}.el-switch.usb[data-v-fa904c9e]{--el-switch-on-color:rgba(255,0,0,.8)!important}.el-switch.volume[data-v-87940482]{--el-switch-on-color:rgba(33,153,33,.8)}.device-item[data-v-09c8d4b8]{font-size:1.6rem;box-shadow:0 0 4px rgba(0,0,0,.05);width:100%;margin:0 auto .6rem auto;position:relative;transition:.3s;background-color:hsla(0,0%,100%,.5);border-radius:4px}.device-item[data-v-09c8d4b8]:after{content:"";position:absolute;left:0;top:0;right:0;bottom:0;z-index:-1;border:1px solid rgba(251,241,242,.4);border-radius:4px}.device-item dt[data-v-09c8d4b8]{padding:.6rem .6rem 0 .6rem;border-radius:4px;position:relative}.device-item dt span.name[data-v-09c8d4b8]{line-height:2rem}.device-item dt span.name.connected[data-v-09c8d4b8]{color:var(--el-color-primary);font-weight:700}.device-item dd.img[data-v-09c8d4b8]{padding:.6rem;position:relative;font-size:0;box-sizing:border-box}.device-item dd.img[data-v-09c8d4b8]:before{content:"";display:inline-block;padding-bottom:56.25%;width:.1px;vertical-align:middle}.device-item dd.img .inner[data-v-09c8d4b8]{position:absolute;left:.6rem;top:.6rem;right:.6rem;bottom:.6rem;overflow:hidden;background-color:rgba(0,0,0,.1);border-radius:4px;border:1px solid hsla(0,0%,100%,.2);box-sizing:border-box}.device-item dd.img .inner canvas[data-v-09c8d4b8]{width:100%;position:absolute;height:100%;border-radius:4px}.device-item dd.img .inner .btns[data-v-09c8d4b8]{pointer-events:none;position:absolute;left:0;right:0;top:10%}.device-item dd.img .inner .btns .left[data-v-09c8d4b8]{padding-left:.6rem;pointer-events:all}.device-item dd.img .inner .btns .right[data-v-09c8d4b8]{padding-right:.6rem;pointer-events:all}.device-item dd.img .inner .btns .left a[data-v-09c8d4b8],.device-item dd.img .inner .btns .right a[data-v-09c8d4b8]{width:2.4rem;height:2.4rem;text-align:center;line-height:2.8rem;margin-bottom:.6rem;display:block;font-size:2rem;border-radius:50%;border:1px solid #3e5a6e;box-shadow:0 0 4px hsla(0,0%,100%,.1);background-color:hsla(0,0%,100%,.5);color:#3e5a6e;transition:.3s}.device-item dd.img .inner .btns .left a[data-v-09c8d4b8]:hover,.device-item dd.img .inner .btns .right a[data-v-09c8d4b8]:hover{box-shadow:0 0 4px 2px hsla(0,0%,100%,.5)}.device-item dd.options[data-v-09c8d4b8]{padding:0 .6rem .6rem .6rem;border-radius:4px;text-align:center}.device-item dd.options .el-col[data-v-09c8d4b8]{text-align:right}.device-item dd.options .el-col .el-switch[data-v-09c8d4b8]{--el-switch-off-color:#ccc;--el-switch-on-color:#69b56c}.wrap[data-v-7407ef56]{height:70vh}.wrap .inner[data-v-7407ef56]{border:1px solid #ddd;border-radius:4px;padding:1rem .6rem 1rem 1rem}.wrap .inner li[data-v-7407ef56]{border:1px solid #ddd;padding:.6rem;margin-bottom:.6rem;border-radius:.4rem}.wrap .inner dt[data-v-7407ef56]{word-break:break-all}.wrap .inner dd .time[data-v-7407ef56]{height:1rem;background-color:green}.wrap[data-v-37d67526]{height:7}.wrap[data-v-134f3cec]{height:70vh}.wrap .inner[data-v-134f3cec]{border:1px solid #ddd;border-radius:4px;padding:1rem 0}.wrap .inner li[data-v-134f3cec]{padding:.6rem;margin-bottom:.6rem;word-break:break-all;border-bottom:1px solid #ddd}.wrap .inner li .btns[data-v-134f3cec]{padding-left:.6rem}.window-items-wrap .head[data-v-3aff4911]{width:100%;padding-bottom:1rem}.window-items-wrap .prevs-wrap[data-v-3aff4911]{height:100%;position:relative}.windows-items-wrap .head[data-v-d270371c]{width:100%;padding-bottom:1rem}.windows-items-wrap .prevs-wrap[data-v-d270371c]{height:100%;position:relative}.checkbox-wrap[data-v-6b36cd30]{border:1px solid #ddd}.head[data-v-6b36cd30]{border-bottom:1px solid #ddd;line-height:4rem;padding:0 1rem;background-color:#fafafa}.body ul[data-v-6b36cd30]{padding:1rem 0}.body li[data-v-6b36cd30]{padding:0 1rem}.body li .el-checkbox[data-v-6b36cd30]{width:100%;white-space:pre-wrap;word-break:break-all}.rule-wrap[data-v-87931b18]{height:70vh}.rule-wrap .Exes[data-v-87931b18],.rule-wrap .items[data-v-87931b18]{height:100%;width:48%;position:relative}.rule-wrap .Exes .private[data-v-87931b18],.rule-wrap .Exes .public[data-v-87931b18]{height:49%;position:relative}.checkbox-wrap[data-v-3f1c33d0]{border:1px solid #ddd}.head[data-v-3f1c33d0]{border-bottom:1px solid #ddd;line-height:4rem;padding:0 1rem;background-color:#fafafa}.body ul[data-v-3f1c33d0]{padding:1rem 0}.body li .el-checkbox[data-v-3f1c33d0]{width:100%}.body li>div.default[data-v-3f1c33d0]{padding:.6rem 1rem;line-height:2rem}.body li[data-v-3f1c33d0]:hover{background-color:rgba(0,0,0,.1)}.command-wrap .commands .item{padding:.6rem}.command-wrap .commands .item .subitem{padding:.2rem}.command-wrap .commands .item .subitem .label{margin-right:.6rem}.command-wrap[data-v-668c193e]{height:70vh}.command-wrap .items[data-v-668c193e]{height:100%;width:32%;position:relative}.command-wrap .commands[data-v-668c193e]{height:100%;width:67%;position:relative;border:1px solid #ddd;box-sizing:border-box}.command-wrap .commands .inner[data-v-668c193e]{padding:.6rem}.command-wrap .commands .inner>div[data-v-668c193e]{padding:.6rem 0}.command-wrap .btn[data-v-668c193e]{text-align:center;padding:.2rem 0;width:100%}.devices-wrap[data-v-97145bf0]{height:70vh;position:relative}.devices-wrap .del-btn[data-v-97145bf0]{font-size:2rem}.rule-wrap[data-v-1d10a778]{height:70vh}.rule-wrap .items[data-v-1d10a778],.rule-wrap .rules[data-v-1d10a778]{height:100%;width:48%;position:relative}.rule-wrap .rules .private[data-v-1d10a778],.rule-wrap .rules .public[data-v-1d10a778]{height:49%;position:relative}.rule-items-wrap .head[data-v-75241a7e]{width:100%;padding-bottom:1rem}.rule-items-wrap .prevs-wrap[data-v-75241a7e]{height:100%;position:relative}.command-wrap[data-v-b042e218]{height:55vh}.command-wrap .head[data-v-b042e218]{width:100%;padding-bottom:1rem}.command-wrap .private[data-v-b042e218],.command-wrap .public[data-v-b042e218]{width:49%;position:relative}.command-wrap .process[data-v-b042e218]{height:100%;width:48%;position:relative}.process-items-wrap .head[data-v-270ff067]{width:100%;padding-bottom:1rem}.process-items-wrap .prevs-wrap[data-v-270ff067]{height:100%;position:relative}.process-items-wrap .head[data-v-1905f2ff]{width:100%;padding-bottom:1rem}.process-items-wrap .prevs-wrap[data-v-1905f2ff]{height:100%;position:relative}.process-items-wrap .allow-type-0[data-v-1905f2ff]{color:green}.process-items-wrap .allow-type-1[data-v-1905f2ff]{color:red}.process-items-wrap .alert[data-v-1905f2ff]{background-color:rgba(255,136,0,.2);border:1px solid #ddd;margin-bottom:1rem;padding:.6rem;border-radius:.4rem}*{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.keyboard-wrap[data-v-359681c4]{position:absolute;left:.6rem;right:.6rem;bottom:.6rem;border-radius:4px;z-index:99999}.keyboard-wrap[data-v-359681c4]:after{content:"";position:absolute;left:0;top:0;right:0;bottom:0;z-index:-1;border-radius:4px;background-color:rgba(219,234,255,.5);border:1px solid rgba(18,63,76,.8);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.keyboard-wrap a.close[data-v-359681c4]{position:absolute;right:-.4rem;top:-.8rem;color:#fff;background-color:hsla(0,0%,100%,.2);display:block;border-radius:50%;border:1px solid hsla(0,0%,100%,.2);width:1.6rem;height:1.6rem;text-align:center;line-height:1.6rem}.keyboard-wrap h3[data-v-359681c4]{text-align:center;padding-top:.6rem;color:#164e51;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}.keyboard-wrap ul[data-v-359681c4]{padding:.6rem}.keyboard-wrap ul .key[data-v-359681c4]{padding:.2rem;text-align:center}.keyboard-wrap ul .key .inner[data-v-359681c4]{border:1px solid rgba(46,90,95,.8);background-color:hsla(0,0%,100%,.1);padding:.6rem 0;border-radius:4px;color:#164e51;transition:.1s;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}.keyboard-wrap ul .key .inner[data-v-359681c4]:active{background-color:rgba(46,90,95,.2);color:#fff}.command-wrap[data-v-244e18ca]{height:70vh}.command-wrap .items[data-v-244e18ca]{height:100%;width:60%;position:relative}.command-wrap .commands[data-v-244e18ca]{height:100%;width:38%;position:relative}.command-wrap .light[data-v-244e18ca]{font-size:2rem;padding-left:1rem}.command-wrap .light .value[data-v-244e18ca]{font-size:1.4rem}.command-wrap .slider-wrap[data-v-244e18ca]{height:100%;text-align:center}.command-wrap .slider-wrap .btn[data-v-244e18ca],.command-wrap .slider-wrap .silder[data-v-244e18ca]{padding:2rem 0}.command-wrap .slider-wrap .btn+.btn[data-v-244e18ca]{padding-top:0}.light[data-v-6a9d819b]{font-size:2rem;padding-left:1rem}.light .value[data-v-6a9d819b]{font-size:1.4rem}.slider-wrap[data-v-6a9d819b]{text-align:center}.slider-wrap .silder[data-v-6a9d819b]{padding:2rem 4rem}.slider-wrap .btn[data-v-6a9d819b]{padding:2rem 0}.slider-wrap .btn+.btn[data-v-6a9d819b]{padding-top:0}.command-wrap[data-v-34040146]{height:70vh}.command-wrap .items[data-v-34040146]{height:100%;width:36%;position:relative}.command-wrap .prevs-wrap[data-v-34040146]{height:100%;width:62%;position:relative}.command-wrap .prevs-wrap .times[data-v-34040146]{margin:.6rem 0}.command-wrap .prevs-wrap .prevs[data-v-34040146]{height:100%;width:100%;position:relative}.setting-wrap[data-v-398854f9]{position:relative;padding:2rem 5rem}.el-switch[data-v-ede9893e]{--el-switch-on-color:rgba(255,0,0,.8)!important}.el-button+.el-button[data-v-ede9893e]{margin-left:.6rem}.el-button[data-v-ede9893e]{padding:6px 12px}.command-wrap[data-v-ede9893e]{height:70vh}.command-wrap .items[data-v-ede9893e]{height:100%;width:32%;position:relative}.command-wrap .commands[data-v-ede9893e]{height:100%;width:67%;position:relative;border:1px solid #ddd;box-sizing:border-box}.command-wrap .commands .inner[data-v-ede9893e]{padding:.6rem}.command-wrap .commands .inner .options[data-v-ede9893e],.command-wrap .commands .inner span.label[data-v-ede9893e]{line-height:4rem}.command-wrap[data-v-2cba18e1]{height:70vh}.command-wrap .items[data-v-2cba18e1]{height:100%;width:60%;position:relative}.command-wrap .commands[data-v-2cba18e1]{height:100%;width:38%;position:relative}.command-wrap .volume[data-v-2cba18e1]{font-size:2rem;padding-left:1rem}.command-wrap .volume .value[data-v-2cba18e1]{font-size:1.4rem}.command-wrap .slider-wrap[data-v-2cba18e1]{height:100%;text-align:center}.command-wrap .slider-wrap .btn[data-v-2cba18e1],.command-wrap .slider-wrap .silder[data-v-2cba18e1]{padding:2rem 0}.command-wrap .slider-wrap .btn+.btn[data-v-2cba18e1]{padding-top:0}.volume-dialog[data-v-3ca473a0]{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.volume[data-v-3ca473a0]{font-size:2rem;padding-left:1rem}.volume .value[data-v-3ca473a0]{font-size:1.4rem}.slider-wrap[data-v-3ca473a0]{text-align:center}.slider-wrap .gif img[data-v-3ca473a0]{width:100%}.slider-wrap .silder[data-v-3ca473a0]{padding:0 4rem 2rem 4rem}.slider-wrap .btn[data-v-3ca473a0]{padding-top:2rem}.device-list-wrap .head[data-v-041d6b86]{padding:1rem 1rem 1rem 1rem;border-bottom:1px solid #ddd;background-color:#f0f0f0;z-index:999;position:relative;box-shadow:1px 1px 4px rgba(0,0,0,.075)}.device-list-wrap .items[data-v-041d6b86]{padding:.6rem;transform-style:preserve-3d;perspective:600px;padding-bottom:11.6rem}.device-list-wrap .foot[data-v-041d6b86]{position:absolute;z-index:999;left:.6rem;right:.6rem;bottom:.6rem;border-radius:4px}.device-list-wrap .foot[data-v-041d6b86]:after{content:"";position:absolute;left:0;top:0;right:0;bottom:0;z-index:-1;border:1px solid rgba(18,63,76,.8);border-radius:4px;background-color:rgba(19,67,89,.5);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}@media (min-width:768px){.main-wrap[data-v-6beac69c]{border:2px solid #d0d7de;height:90%!important;width:394px!important}}.main-wrap[data-v-6beac69c]{width:100%;position:absolute;left:50%;top:50%;transform:translateX(-50%) translateY(-50%);background-color:#fff;height:100%;background-color:#333;background-image:url(/img/bg3.1572e850.webp);background-size:cover;background-position:top}.main-wrap .body[data-v-6beac69c]{position:relative} \ No newline at end of file diff --git a/cmonitor/publish/web/index.html b/cmonitor/publish/web/index.html index 36c9395a..685858f9 100644 --- a/cmonitor/publish/web/index.html +++ b/cmonitor/publish/web/index.html @@ -1 +1 @@ -cmonitor.web
\ No newline at end of file +cmonitor.web
\ No newline at end of file diff --git a/cmonitor/publish/web/js/110.844b62dc.js b/cmonitor/publish/web/js/110.7ce02d8e.js similarity index 76% rename from cmonitor/publish/web/js/110.844b62dc.js rename to cmonitor/publish/web/js/110.7ce02d8e.js index 9e68ccbc..7d593736 100644 --- a/cmonitor/publish/web/js/110.844b62dc.js +++ b/cmonitor/publish/web/js/110.7ce02d8e.js @@ -1 +1 @@ -(self["webpackChunkcmonitor_web"]=self["webpackChunkcmonitor_web"]||[]).push([[110],{7041:function(e,t,a){"use strict";a.d(t,{$K:function(){return s},Kd:function(){return n},Lb:function(){return c},Oq:function(){return u},PC:function(){return i},XD:function(){return o},fm:function(){return r}});var l=a(2843);const n=e=>(0,l.gQ)("active/get",e),o=e=>(0,l.gQ)("active/windows",e),s=(e,t,a)=>(0,l.gQ)("active/disallow",{usernames:e,filenames:t,ids:a||[]}),i=e=>(0,l.gQ)("active/AddGroup",e),u=(e,t)=>(0,l.gQ)("active/DeleteGroup",{username:e,id:t}),r=e=>(0,l.gQ)("active/add",e),c=(e,t,a)=>(0,l.gQ)("active/del",{username:e,groupid:t,id:a})},9418:function(e,t,a){"use strict";a.d(t,{G:function(){return n}});var l=a(2843);const n=(e,t)=>(0,l.gQ)("command/exec",{names:e,commands:t})},2331:function(e,t,a){"use strict";a.d(t,{$c:function(){return n},Az:function(){return u},Gn:function(){return p},HP:function(){return c},U4:function(){return d},XM:function(){return i},Zz:function(){return o},hG:function(){return m},sz:function(){return r},xc:function(){return s}});var l=a(2843);const n=()=>(0,l.gQ)("hijack/info"),o=e=>(0,l.gQ)("hijack/addName",e),s=e=>(0,l.gQ)("hijack/addProcessGroup",e),i=e=>(0,l.gQ)("hijack/deleteProcessGroup",e),u=e=>(0,l.gQ)("hijack/addProcess",e),r=e=>(0,l.gQ)("hijack/deleteProcess",e),c=e=>(0,l.gQ)("hijack/AddRule",e),d=e=>(0,l.gQ)("hijack/deleteRule",e),m=e=>(0,l.gQ)("hijack/UpdateDevices",e),p=e=>(0,l.gQ)("hijack/setRules",e)},4316:function(e,t,a){"use strict";a.d(t,{P:function(){return o},d:function(){return n}});var l=a(2843);const n=(e,t,a)=>(0,l.gQ)("Keyboard/Keyboard",{names:e,input:{key:t,type:a}}),o=e=>(0,l.gQ)("Keyboard/CtrlAltDelete",e)},3327:function(e,t,a){"use strict";a.d(t,{H:function(){return o},m:function(){return n}});var l=a(2843);const n=(e,t)=>(0,l.gQ)("llock/LockScreen",{names:e,value:t}),o=e=>(0,l.gQ)("llock/LockSystem",e)},2843:function(e,t,a){"use strict";a.d(t,{CU:function(){return k},Ke:function(){return y},c9:function(){return f},gQ:function(){return g},tw:function(){return r}});a(7658);var l=a(7178);let n=0,o=null,s="",i=1;const u={},r={connected:!1},c=()=>{const e=Date.now();for(let t in u){const a=u[t];e-a.time>a.timeout&&(a.reject("超时~"),delete u[t])}setTimeout(c,1e3)};c();const d={subs:{},add:function(e,t){"function"==typeof t&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(t))},remove(e,t){let a=this.subs[e]||[];for(let l=a.length-1;l>=0;l--)a[l]==t&&a.splice(l,1)},push(e,t){let a=this.subs[e]||[];for(let l=a.length-1;l>=0;l--)a[l](t)}},m=()=>{r.connected=!0,d.push(w,r.connected)},p=e=>{r.connected=!1,d.push(w,r.connected),f()},h=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((t=>{const a=new DataView(t).getInt8(),l=new FileReader;l.readAsText(e.data.slice(4,4+a),"utf8"),l.onload=()=>{let n=JSON.parse(l.result);n.Content={Name:n.Content,Img:e.data.slice(4+a,e.data.length),ArrayBuffer:t},v(n)}}));let t=JSON.parse(e.data);v(t)},v=e=>{let t=u[e.RequestId];t?(0==e.Code?t.resolve(e.Content):1==e.Code?t.reject(e.Content):255==e.Code?(t.reject(e.Content),t.errHandle||l.z8.error(`${t.path}:${e.Content}`)):d.push(e.Path,e.Content),delete u[e.RequestId]):d.push(e.Path,e.Content)},f=(e=s)=>{null!=o&&o.close(),s=e,o=new WebSocket(s),o.iddd=++i,o.onopen=m,o.onclose=p,o.onmessage=h},g=(e,t={},a=!1,l=15e3)=>new Promise(((s,i)=>{let c=++n;try{u[c]={resolve:s,reject:i,errHandle:a,path:e,time:Date.now(),timeout:l};let n=JSON.stringify({Path:e,RequestId:c,Content:"string"==typeof t?t:JSON.stringify(t)});r.connected&&1==o.readyState?o.send(n):i("网络错误~")}catch(d){i("网络错误~"),delete u[c]}})),w=Symbol(),k=e=>{d.add(w,e)},y=(e,t)=>{d.add(e,t)}},1468:function(e,t,a){"use strict";a.d(t,{FU:function(){return o},gp:function(){return n}});var l=a(2843);const n=()=>(0,l.gQ)("signin/list"),o=e=>(0,l.gQ)("signin/del",e)},7800:function(e,t,a){"use strict";a.d(t,{z:function(){return n}});var l=a(2843);const n=(e,t,a)=>(0,l.gQ)("system/RegistryOptions",{names:e,registry:{name:t,value:a}})},8048:function(e,t,a){"use strict";a.d(t,{H:function(){return o},j:function(){return n}});var l=a(2843);const n=(e,t)=>(0,l.gQ)("volume/update",{names:e,value:t}),o=(e,t)=>(0,l.gQ)("volume/mute",{names:e,value:t})},9528:function(e,t,a){"use strict";a.d(t,{i:function(){return n}});var l=a(2843);const n=(e,t,a="")=>(0,l.gQ)("wallpaper/update",{names:e,value:t,url:a})},3325:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{ActiveWindow:{Title:"",FileName:"",Desc:"",Pid:0,DisallowCount:0,WindowCount:0}}},state:{activeWindow:[{showTimes:!1,showWindows:!1,showChoose:!1,devices:[],showAddWindow:!1,showActiveWindows:!1}]},update(e,t){t.ActiveWindow&&(e.ActiveWindow.Title=t.ActiveWindow.Title,e.ActiveWindow.FileName=t.ActiveWindow.FileName,e.ActiveWindow.Desc=t.ActiveWindow.Desc,e.ActiveWindow.Pid=t.ActiveWindow.Pid,e.ActiveWindow.DisallowCount=t.ActiveWindow.DisallowCount,e.ActiveWindow.WindowCount=t.ActiveWindow.WindowCount||0)}}},1459:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{Command:{}}},state:{command:{showCommand:!1,devices:[]}},init(){},update(e,t){}}},181:function(e,t,a){"use strict";a.r(t),t["default"]={state:{device:{showDevices:!1}}}},1868:function(e,t,a){"use strict";a.r(t);var l=a(2683);t["default"]={field(){return{Hijack:{Upload:0,UploadText:"",Download:0,DownloadText:"",Count:0}}},state:{hijack:{showRules:!1,devices:[],showRuleSetting:!1,showProcessSetting:!1}},timer:0,speedCaches:{},sizeFormat(e){let t=["B","KB","MB","GB","TB"],a=t[0];while((a=t.shift())&&e.toFixed(2)>=1024)e/=1024;return"B"==a?[e,a]:[parseInt(e),a]},globalData:null,init(){this.globalData=(0,l.d)();const e=this.speedCaches,t=this.sizeFormat;this.timer=setInterval((()=>{this.globalData.value.devices.forEach((a=>{let l=e[a.MachineName]||{up:0,down:0};isNaN(l.up)&&(l.up=0),isNaN(l.down)&&(l.down=0),a.Hijack.Upload=a.Hijack.Upload||0,a.Hijack.Download=a.Hijack.Download||0;let n=a.Hijack.Upload-l.up;l.up=a.Hijack.Upload;let o=t(n);a.Hijack.UploadText=`${o[0]}${o[1]}/s`,n=a.Hijack.Download-l.down,l.down=a.Hijack.Download,o=t(n),a.Hijack.DownloadText=`${o[0]}${o[1]}/s`,e[a.MachineName]=l}))}),1e3)},update(e,t){t.Hijack&&(t.Hijack.length>0?(e.Hijack.Upload=t.Hijack[0],e.Hijack.Download=t.Hijack[1],e.Hijack.Count=t.Hijack[2]):(e.Hijack.Upload=t.Hijack.Upload,e.Hijack.Download=t.Hijack.Download,e.Hijack.Count=t.Hijack.Count))}}},7217:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{Keyboard:{}}},state:{keyboard:{showKeyBoard:!1,devices:[]}},init(){},update(e,t){}}},1958:function(e,t,a){"use strict";a.r(t);var l=a(2683);t["default"]={field(){return{Light:{Value:0}}},state:{light:{showLight:!1,showLightSingle:!1,devices:[]}},globalData:null,init(){this.globalData=(0,l.d)()},update(e,t){t.Light&&(e.Light.Value=Math.floor(+t.Light.Value),isNaN(e.Light.Value)&&(e.Light.Value=0))}}},6458:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{LLock:{LockScreen:!1}}},update(e,t){t.LLock&&(e.LLock.LockScreen=t.LLock.LockScreen)}}},2852:function(e,t,a){"use strict";a.r(t),t["default"]={state:{message:{showMessage:!1,devices:[]}}}},619:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return i}});var l=a(2843);const n=(e,t)=>(0,l.gQ)("report/update",{names:e,reportType:t},!1,1e3),o=e=>(0,l.gQ)("report/ping",e,!1,1e3);var s=a(2683),i={field(){return{Report:{fps:0,fpsTimes:0,ping:0,updated:!1}}},globalData:null,init(){this.globalData=(0,s.d)(),this.reportInterval(),this.reportPingInterval(),(0,l.Ke)("/notify/report/pong",(e=>{let t=this.globalData.value.devices.filter((t=>t.MachineName==e.Name))[0];t&&(t.Connected=!0,t.Report.ping=e.Time)})),this.fpsInterval()},uninit(){clearTimeout(this.reportTimer),clearTimeout(this.reportPingTimer)},reportTimer:0,reported:!0,reportInterval(){if(this.reported){this.reported=!1;const e=this.globalData.value.reportNames,t=this.globalData.value.devices;let a=2;t.filter((t=>e.indexOf(t.MachineName)>=0)).forEach((e=>{a&&=Number(e.Report.updated)+1,e.Report.updated=!0})),n(e,a).then((()=>{this.reported=!0,this.reportTimer=setTimeout((()=>{this.reportInterval()}),300)})).catch((()=>{this.reported=!0,this.reportTimer=setTimeout((()=>{this.reportInterval()}),300)}))}else this.reportTimer=setTimeout((()=>{this.reportInterval()}),300)},reportPingTimer:0,reportedPing:!0,reportPingInterval(){if(this.reportedPing){this.reportedPing=!1;let e=Date.now();o(this.globalData.value.reportNames).then((()=>{this.reportedPing=!0;let t=1e3-(Date.now()-e);t<10&&(t=10),this.reportPingTimer=setTimeout((()=>{this.reportPingInterval()}),t)})).catch((()=>{this.reportedPing=!0,this.reportPingTimer=setTimeout((()=>{this.reportPingInterval()}),1e3)}))}else this.reportPingTimer=setTimeout((()=>{this.reportPingInterval()}),1e3)},fpsInterval(){this.globalData.value.devices.forEach((e=>{e.Report.fps=e.Report.fpsTimes,e.Report.fpsTimes=0})),setTimeout((()=>{this.fpsInterval()}),1e3)},update(e,t){e.Report.fpsTimes++}}},5908:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return u}});a(7658);var l=a(2683),n=a(2843);const o=(e,t)=>(0,n.gQ)("screen/full",{names:e,type:t},!1,1e3),s=e=>(0,n.gQ)("screen/region",e,!1,1e3),i=(e,t)=>(0,n.gQ)("screen/clip",{name:e,clip:t},!1,1e3);var u={field(){return{Screen:{displays:[],regionImgs:[],fullImg:null,fullUpdated:!1,width:0,height:0,draw(e,t){this.drawFps(e,t),this.drawRectangle(e,t),this.drawTouch(e,t)},lastInput:0,captureTime:0,fps:{value:0,temp:0},drawFps(e,t){t.lineWidth=5,t.font="bold 60px Arial",t.fillStyle="rgba(0,0,0,0.5)",t.fillText(`FPS : ${this.fps.value} 、${this.captureTime}ms、LT : ${this.lastInput}ms`,50,70),t.lineWidth=2,t.strokeStyle="#fff",t.strokeText(`FPS : ${this.fps.value} 、${this.captureTime}ms 、LT : ${this.lastInput}ms`,50,70)},rectangles:[],drawRectangle(e,t){const a=this.rectangles||[];if(a.length>0&&1==this.touch.scale){t.lineWidth=5,t.strokeStyle="rgba(255,0,0,1)";for(let e=0;e{const n=new Image;n.param=t,n.src=e,n.onload=function(){a(n)}}))},handleScreenFull(e,t){const a=e.Name;if(-1==this.globalData.value.reportNames.indexOf(a))return;let l=this.globalData.value.devices.filter((e=>e.MachineName==a))[0];l&&(l.Screen.fps.temp++,"string"==typeof e.Img?this.imgOnload(`data:image/jpg;base64,${e.Img}`).then((e=>{l.Screen.fullImg=e})):createImageBitmap(e.Img).then((e=>{l.Screen.fullImg=e})))},handleScreenRegion(e,t){const a=e.Name;if(-1==this.globalData.value.reportNames.indexOf(a))return;let l=this.globalData.value.devices.filter((e=>e.MachineName==a))[0];l&&(l.Screen.fps.temp++,e.Img.arrayBuffer().then((t=>{const a=new DataView(t);let n=0;const o=[];while(n{l.Screen.regionImgs=e}))})))},handleScreenRectangles(e,t){const a=e.Name;if(-1==this.globalData.value.reportNames.indexOf(a))return;let l=this.globalData.value.devices.filter((e=>e.MachineName==a))[0];l&&(l.Screen.rectangles=e.Rectangles||[])},subMessage(){(0,n.Ke)("/notify/report/screen/full",((e,t)=>this.handleScreenFull(e,t))),(0,n.Ke)("/notify/report/screen/region",((e,t)=>this.handleScreenRegion(e,t))),(0,n.Ke)("/notify/report/screen/rectangles",((e,t)=>this.handleScreenRectangles(e,t)))},draw(){const e=this.globalData.value.devices.filter((e=>this.globalData.value.reportNames.indexOf(e.MachineName)>=0));for(let a=0;a{this.draw()}))},fpsInterval(){this.globalData.value.devices.forEach((e=>{e.Screen.fps.value=e.Screen.fps.temp,e.Screen.fps.temp=0})),setTimeout((()=>{this.fpsInterval()}),1e3)},clipTimer:0,clipInterver(){this.globalData.value.devices.forEach((e=>{e.Screen.touch.updated&&i(e.MachineName,{x:parseInt(e.Screen.touch.clip.x),y:parseInt(e.Screen.touch.clip.y),w:parseInt(e.Screen.touch.clip.w),h:parseInt(e.Screen.touch.clip.h)}).then((()=>{e.Screen.touch.updated=!1})).catch((()=>{e.Screen.touch.updated=!1}))})),this.clipTimer=setTimeout((()=>{this.clipInterver()}),16)},reported:!0,reportTimer:0,updateFull(){const e=this.globalData.value.reportNames,t=this.globalData.value.devices;let a=2;return t.filter((t=>e.indexOf(t.MachineName)>=0)).forEach((e=>{a&&=Number(e.Screen.fullUpdated)+1,e.Screen.fullUpdated=!0})),o(e,a)},updateRegion(){const e=this.globalData.value.reportNames;return s(e)},reportInterval(e=0){if(this.reported){this.reported=!1;const t=this.updateFull();t.then((()=>{this.reported=!0,this.reportTimer=setTimeout((()=>{this.reportInterval(++e)}),300)})).catch((t=>{console.log(t),this.reported=!0,this.reportTimer=setTimeout((()=>{this.reportInterval(++e)}),300)}))}else this.reportTimer=setTimeout((()=>{this.reportInterval(++e)}),300)},update(e,t){t.Screen&&(e.Screen.lastInput=t.Screen.LT||0,e.Screen.captureTime=t.Screen.CT||0,e.Screen.width=t.Screen.W||0,e.Screen.height=t.Screen.H||0)}}},4886:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{}},state:{setting:{showSetting:!1}}}},6194:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{Share:{KeyBoard:{Index:0,Value:""},UserName:{Index:1,Value:""},Lock:{Index:2,Value:{type:"list",val:"none",star1:0,star2:0,star3:0,notify:!1},TypeText:""},draw(e,t){if(this.KeyBoard.Value){let a=(e.height-100)/2,l=(e.width-50*this.KeyBoard.Value.length)/2;t.font="bold 100px Arial",t.fillStyle="rgba(0,0,0,0.5)",t.fillText(`${this.KeyBoard.Value}`,l,a),t.lineWidth=5,t.strokeStyle="rgba(255,255,255,0.7)",t.strokeText(`${this.KeyBoard.Value}`,l,a)}if("star"==this.Lock.Value.val||"ask"==this.Lock.Value.val){let a="";a=a.padEnd(5,"★");let l=120,n=(e.width-500)/2;t.beginPath(),t.lineWidth=5,t.font="bold 100px Arial",t.strokeStyle="#fff",t.strokeText(a,n,l),t.lineWidth=7,t.strokeStyle="rgba(0,0,0,0.5)",t.strokeText(a,n,l),a="";const o=this.Lock.Value,s=parseInt((o.star1+o.star2+o.star3)/3);a=a.padEnd(s,"☆"),t.lineWidth=2,t.strokeStyle="yellow",t.strokeText(a,n,l),t.closePath()}}}}},init(){},lockTypes:{code:"代码",lock:"锁屏",cmonitor:"班长",flag:"学习目标",class:"课程","remark-block":"图形化点评","remark-cpp":"C++点评"},update(e,t){if(t.Share){if(console.log(t.Share),t.Share.UserName&&(e.Share.UserName.Index=t.Share.UserName.Index,e.Share.UserName.Value=t.Share.UserName.Value),t.Share.Lock&&(e.Share.Lock.Index=t.Share.Lock.Index,t.Share.Lock.Value)){const a=JSON.parse(t.Share.Lock.Value);e.Share.Lock.Value.type=a.type,e.Share.Lock.Value.val=a.val,e.Share.Lock.Value.star1=a.star1||0,e.Share.Lock.Value.star2=a.star2||0,e.Share.Lock.Value.star3=a.star3||0,e.Share.Lock.TypeText=this.lockTypes[a.type]}t.Share.KeyBoard&&(e.Share.KeyBoard.Index=t.Share.KeyBoard.Index,e.Share.KeyBoard.Value=t.Share.KeyBoard.Value)}}}},5817:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{System:{RegistryValues:[],RegistryKeys:{},RegistrysCount:0,Cpu:0,Memory:0,Disk:0,Drives:[],getColor(e){let t="#0bd10b";return e>=.8?t="#fc0202":e>=.5&&(t="#ff9d1c"),t},draw(e,t){const a=10,l=[{text:"cpu",value:this.Cpu/100},{text:"memory",value:this.Memory/100}].concat(this.Drives.map((e=>({text:e.Name.toLowerCase(),value:(1-e.Free/e.Total).toFixed(2)}))));for(let n=0;n+e)),e.System.RegistrysCount=e.System.RegistryValues.filter((e=>"1"==e)).length),t.System.RegKeys&&(e.System.RegistryKeys=t.System.RegKeys))}}},5507:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{Volume:{Value:0,Mute:!1,MasterPeak:0,draw(e,t){this.MasterPeak-=1,this.MasterPeak<0?this.MasterPeak=0:(t.beginPath(),t.fillStyle="#0f0",t.fillRect(0,0,this.MasterPeak/100*e.width,10),t.closePath())}}}},state:{volume:{showVolume:!1,showVolumeSingle:!1,devices:[]}},init(){},update(e,t){t.Volume&&(e.Volume.Value=t.Volume.Value,e.Volume.Mute=t.Volume.Mute,t.Volume.MasterPeak>e.Volume.MasterPeak&&(e.Volume.MasterPeak=t.Volume.MasterPeak))}}},7242:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{Wallpaper:{Value:!1}}},update(e,t){t.Wallpaper&&(e.Wallpaper.Value=t.Wallpaper.Value)}}},2115:function(e,t,a){"use strict";a.d(t,{$:function(){return i},R:function(){return s}});var l=a(4870),n=a(3396);const o=Symbol(),s=e=>{const t=(0,l.iH)(e);return(0,n.JJ)(o,t),t},i=()=>(0,n.f3)(o)},2683:function(e,t,a){"use strict";a.d(t,{d:function(){return i},e:function(){return s}});var l=a(4870),n=a(3396);const o=Symbol(),s=()=>{const e=(0,l.iH)({username:"",publicUserName:"snltty",usernames:{},connected:!1,updateRuleFlag:0,updateDeviceFlag:0,allDevices:[],devices:(0,n.Fl)((()=>{const t=e.value.usernames[e.value.username];return t?e.value.allDevices.filter((e=>t.Devices.indexOf(e.MachineName)>=0)):[]})),reportNames:[]});return(0,n.JJ)(o,e),e},i=()=>(0,n.f3)(o)},780:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return we}});var l=a(3396);const n={class:"main-wrap flex flex-column flex-nowrap"},o={class:"head"},s={key:0,class:"body flex-1 scrollbar"};function i(e,t,a,i,u,r){const c=(0,l.up)("Head"),d=(0,l.up)("Device");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[(0,l.Wm)(c)]),i.showList?((0,l.wg)(),(0,l.iD)("div",s,[(0,l.Wm)(d)])):(0,l.kq)("",!0)])}const u={class:"username-wrap t-c"},r={class:"port-wrap t-c"};function c(e,t,a,n,o,s){const i=(0,l.up)("el-option"),c=(0,l.up)("el-select"),d=(0,l.up)("el-button"),m=(0,l.up)("el-dialog"),p=(0,l.up)("el-input");return(0,l.wg)(),(0,l.iD)("div",null,[(0,l.Wm)(m,{title:"选择角色","destroy-on-close":"",modelValue:n.showSelectUsername,"onUpdate:modelValue":t[1]||(t[1]=e=>n.showSelectUsername=e),center:"","show-close":!1,"close-on-click-modal":!1,"align-center":"",width:"70%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{type:"success",onClick:n.handleUsername,plain:""},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",u,[(0,l.Wm)(c,{filterable:"","allow-create":"","default-first-option":"",modelValue:n.state.username,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.username=e),onChange:n.handleChange,placeholder:"选择角色",size:"large"},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.usernames,(e=>((0,l.wg)(),(0,l.j4)(i,{key:e,label:e,value:e},null,8,["label","value"])))),128))])),_:1},8,["modelValue","onChange"])])])),_:1},8,["modelValue"]),(0,l.Wm)(m,{title:"管理接口","destroy-on-close":"",modelValue:n.showPort,"onUpdate:modelValue":t[3]||(t[3]=e=>n.showPort=e),center:"","show-close":!1,"close-on-click-modal":!1,"align-center":"",width:"70%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{type:"success",onClick:n.handleConnect,plain:""},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",r,[(0,l.Wm)(p,{modelValue:n.state.api,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.api=e),style:{width:"auto"}},null,8,["modelValue"])])])),_:1},8,["modelValue"])])}var d=a(4870),m=a(2843),p=a(2331),h=a(2483),v=a(2683),f={setup(){const e=(0,v.d)(),t=(0,h.yj)(),a=(0,d.qj)({api:t.query.api?`${window.location.hostname}:${t.query.api}`:localStorage.getItem("api")||`${window.location.hostname}:1801`,usernames:[],username:e.value.username||localStorage.getItem("username")||"",showPort:!1});localStorage.setItem("api",a.api),e.value.username=a.username;const n=(0,l.Fl)((()=>!e.value.username&&e.value.connected)),o=(0,l.Fl)((()=>0==e.value.connected&&a.showPort));(0,l.YP)((()=>e.value.updateRuleFlag),(()=>{s()})),(0,l.YP)((()=>e.value.updateDeviceFlag),(()=>{s()}));const s=()=>{(0,p.$c)().then((t=>{e.value.usernames=t,a.usernames=Object.keys(t)})).catch((()=>{}))},i=()=>{(0,m.c9)(`ws://${a.api}`),localStorage.setItem("api",a.api)},u=()=>{e.value.username=a.username||"",localStorage.setItem("username",e.value.username),document.title=`班长-${e.value.username}`},r=t=>{(0,p.Zz)(t).then((()=>{e.value.updateRuleFlag=Date.now()})).catch((()=>{e.value.updateRuleFlag=Date.now()}))};return(0,l.bv)((()=>{u(),i(),s(),setTimeout((()=>{a.showPort=!0}),100),(0,m.CU)((t=>{t&&(e.value.updateRuleFlag=Date.now())}))})),{state:a,showSelectUsername:n,showPort:o,handleUsername:u,handleConnect:i,handleChange:r}}},g=a(89);const w=(0,g.Z)(f,[["render",c],["__scopeId","data-v-57a222e9"]]);var k=w;const y={class:"device-list-wrap absolute flex flex-column",id:"device-list-wrap"},_={class:"items flex-1 relative scrollbar-1"},C={class:"foot"},x={class:"foot-options"},D={class:"foot-menu"};function W(e,t,a,n,o,s){const i=(0,l.up)("Items"),u=(0,l.up)("FootOptions"),r=(0,l.up)("FootMenu");return(0,l.wg)(),(0,l.iD)("div",y,[(0,l._)("div",_,[(0,l.Wm)(i)]),(0,l._)("div",C,[(0,l._)("div",x,[(0,l.Wm)(u)]),(0,l._)("div",D,[(0,l.Wm)(r)])]),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.indexModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t})))),128))])}const b={class:"foot-wrap"},V={class:"flex"};function S(e,t,a,n,o,s){return(0,l.wg)(),(0,l.iD)("div",b,[(0,l._)("ul",V,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.footMenuModules,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t},[((0,l.wg)(),(0,l.j4)((0,l.LL)(e)))])))),128))])])}var I={components:{},setup(){const e=a(8575),t=e.keys().map((t=>e(t).default)).sort(((e,t)=>e.sort-t.sort));return{footMenuModules:t}}};const T=(0,g.Z)(I,[["render",S],["__scopeId","data-v-27826286"]]);var U=T,N=a(7139);const j=e=>((0,l.dD)("data-v-49866454"),e=e(),(0,l.Cn)(),e),z={class:"foot-options-wrap flex"},M=j((()=>(0,l._)("span",{class:"flex-1"},null,-1))),P={class:"options-btn"},L=j((()=>(0,l._)("span",{class:"flex-1"},null,-1)));function R(e,t,a,n,o,s){const i=(0,l.up)("Refresh"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",z,[(0,l.Wm)(r,{size:"default",plain:"",dark:"",onClick:n.handleRefresh},{default:(0,l.w5)((()=>[(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"]),M,(0,l._)("div",P,[(0,l._)("p",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.footOptionTopModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t})))),128))]),(0,l._)("p",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.footOptionBottomModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t})))),128))])]),L,(0,l.Wm)(r,{size:"default",plain:"",dark:"",onClick:n.handleUpdate},{default:(0,l.w5)((()=>[(0,l.Uk)((0,N.zw)(n.username),1)])),_:1},8,["onClick"])])}var O=a(6e3),E={setup(){const e=a(6736),t=e.keys().map((t=>e(t).default)),n=a(3136),o=n.keys().map((e=>n(e).default)),s=(0,v.d)(),i=(0,l.Fl)((()=>s.value.username)),u=()=>{window.location.reload()},r=()=>{O.T.confirm("是否确定重选角色?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{s.value.username="",localStorage.setItem("username","")})).catch((()=>{}))};return{footOptionTopModules:t,footOptionBottomModules:o,username:i,handleRefresh:u,handleUpdate:r}}};const F=(0,g.Z)(E,[["render",R],["__scopeId","data-v-49866454"]]);var B=F;function $(e,t,a,n,o,s){const i=(0,l.up)("Item"),u=(0,l.up)("el-empty");return n.devices.length>0?((0,l.wg)(!0),(0,l.iD)(l.HY,{key:0},(0,l.Ko)(n.devices,(e=>((0,l.wg)(),(0,l.j4)(i,{key:e.MachineName,data:e},null,8,["data"])))),128)):((0,l.wg)(),(0,l.j4)(u,{key:1,description:"或许你应该先去选择管理设备"}))}const H=e=>((0,l.dD)("data-v-09c8d4b8"),e=e(),(0,l.Cn)(),e),A=H((()=>(0,l._)("div",{class:"bg"},null,-1))),Z={class:"value flex"},K={class:"machine-mame"},q=H((()=>(0,l._)("span",{class:"flex-1"},null,-1))),Y=H((()=>(0,l._)("span",{class:"flex-1"},null,-1))),Q={class:"img"},G={class:"inner"},J=["width","height","id"],X={class:"btns flex"},ee={class:"left"},te=H((()=>(0,l._)("div",{class:"flex-1"},null,-1))),ae={class:"right"},le={class:"options"};function ne(e,t,a,n,o,s){const i=(0,l.up)("el-row");return(0,l.wg)(),(0,l.iD)("div",{class:"device-item",style:(0,N.j5)(n.data.style)},[(0,l._)("dl",null,[(0,l._)("dt",null,[A,(0,l._)("div",Z,[(0,l._)("span",{class:(0,N.C_)(["name",{connected:n.data.Connected}])},[(0,l._)("span",K,(0,N.zw)(n.data.MachineName),1),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.titleLeftModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128))],2),q,((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.titleCenterModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128)),Y,((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.titleRightModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128))])]),(0,l._)("dd",Q,[(0,l._)("div",G,[n.data.Connected&&n.data.Screen.width>0&&n.data.Screen.height>0?((0,l.wg)(),(0,l.iD)("canvas",{key:0,width:n.data.Screen.width,height:n.data.Screen.height,id:`canvas-${n.data.MachineName}`,onDblclick:t[0]||(t[0]=(...e)=>n.handleCanvasReset&&n.handleCanvasReset(...e)),onTouchstart:t[1]||(t[1]=(...e)=>n.handleCanvasTouchstart&&n.handleCanvasTouchstart(...e)),onTouchend:t[2]||(t[2]=(...e)=>n.handleCanvasTouchend&&n.handleCanvasTouchend(...e)),onTouchmove:t[3]||(t[3]=(...e)=>n.handleCanvasTouchmove&&n.handleCanvasTouchmove(...e))},null,40,J)):(0,l.kq)("",!0),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.screenModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128)),(0,l._)("div",X,[(0,l._)("div",ee,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.btnLeftModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128))]),te,(0,l._)("div",ae,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.btnRightModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128))])])])]),(0,l._)("dd",le,[(0,l.Wm)(i,null,{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.optionModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128))])),_:1})])])],4)}var oe={props:{data:{type:Object,default:{}}},setup(e,{emit:t}){const l=e.data,n=a(120),o=n.keys().map((e=>n(e).default)),s=a(9091),i=s.keys().map((e=>s(e).default)),u=a(2648),r=u.keys().map((e=>u(e).default)),c=a(7138),d=c.keys().map((e=>c(e).default)),m=a(2681),p=m.keys().map((e=>m(e).default)),h=a(6532),v=h.keys().map((e=>h(e).default)),f=a(345),g=f.keys().map((e=>f(e).default)).sort(((e,t)=>(e.sort||0)-(t.sort||0))),w=e=>{l.Screen.touchstart&&l.Screen.touchstart(e)},k=e=>{l.Screen.touchend&&l.Screen.touchend(e)},y=e=>{l.Screen.touchmove&&l.Screen.touchmove(e)},_=()=>{l.Screen.reset&&l.Screen.reset()};return{data:l,titleLeftModules:o,titleCenterModules:i,titleRightModules:r,screenModules:d,btnLeftModules:p,btnRightModules:v,optionModules:g,handleCanvasTouchstart:w,handleCanvasTouchend:k,handleCanvasTouchmove:y,handleCanvasReset:_}}};const se=(0,g.Z)(oe,[["render",ne],["__scopeId","data-v-09c8d4b8"]]);var ie=se,ue=a(1468),re={components:{Item:ie},setup(){const e=a(4711),t=e.keys().map((t=>e(t).default));t.forEach((e=>{try{e.init&&e.init()}catch(t){console.log(t)}}));const n=(0,v.d)();(0,l.YP)((()=>n.value.updateDeviceFlag),(()=>{o()}));const o=()=>{(0,ue.gp)().then((e=>{n.value.allDevices=e.map((e=>t.reduce(((e,t,a)=>(t.field&&(e=Object.assign(e,t.field())),e)),e))).sort(((e,t)=>e.MachineName{c()}))})).catch((()=>{}))},s=(0,l.Fl)((()=>((0,l.Y3)((()=>{c()})),n.value.devices))),i=()=>{(0,m.Ke)("/notify/report/report",(e=>{if(-1==n.value.reportNames.indexOf(e.Name))return;"string"==typeof e.Report&&(e.Report=JSON.parse(e.Report));let a=n.value.devices.filter((t=>t.MachineName==e.Name))[0];a&&t.forEach((t=>{t.update&&t.update(a,e.Report)}))}))},u=()=>{(0,l.Y3)((()=>{document.querySelector("#device-list-wrap").querySelector(".items").addEventListener("scroll",c)}))},r=()=>{try{document.querySelector("#device-list-wrap").querySelector(".items").removeEventListener("scroll",c)}catch(e){}},c=()=>{try{const e=document.querySelector("#device-list-wrap").querySelector(".items"),t=e.scrollTop,a=e.querySelectorAll(".device-item");if(0==a.length)return;const l=e.offsetHeight,o=[...a].map(((e,a)=>{const n=e.offsetTop-t,o=n+e.offsetHeight/2,s=Math.abs(o-l/2);return{dom:e,index:a,offset:s}})),s=o.sort(((e,t)=>e.offset-t.offset))[0];for(let n=0;n1?(e=`background-color:rgba(255,255,255,${l});z-index:8;transform: translateZ(-${o}px) `,e+="translateY(30px);"):n>s.index&&s.indexe.index>=s.index-2&&e.index<=s.index+2)).map((e=>e.index));n.value.reportNames=n.value.devices.filter(((e,t)=>i.indexOf(t)>=0)).map((e=>e.MachineName))}catch(e){console.log(e)}};let d=0;const p=()=>{m.tw.connected&&(0,ue.gp)().then((e=>{n.value.allDevices.forEach((t=>{let a=e.filter((e=>e.MachineName==t.MachineName))[0];a&&(t.Connected=a.Connected)}))})).catch((()=>{})),d=setTimeout((()=>{p()}),1e3)};return(0,l.bv)((()=>{o(),u(),c(),i(),p()})),(0,l.Ah)((()=>{r(),clearTimeout(d),t.forEach((e=>{e.uninit&&e.uninit()}))})),{devices:s}}};const ce=(0,g.Z)(re,[["render",$]]);var de=ce,me=a(2115),pe={components:{Items:de,FootMenu:U,FootOptions:B},setup(){const e=a(4711),t=e.keys().map((t=>e(t).default)),l=t.reduce(((e,t,a)=>(t.state&&(e=Object.assign(e,t.state)),e)),{}),n=((0,me.R)(l),a(138)),o=n.keys().map((e=>n(e).default));return{indexModules:o}}};const he=(0,g.Z)(pe,[["render",W],["__scopeId","data-v-041d6b86"]]);var ve=he,fe={components:{Head:k,Device:ve},setup(){const e=(0,v.e)();(0,m.CU)((t=>{e.value.connected=t}));const t=(0,l.Fl)((()=>!!e.value.username&&e.value.connected));return{showList:t}}};const ge=(0,g.Z)(fe,[["render",i],["__scopeId","data-v-6beac69c"]]);var we=ge},1443:function(e,t,a){"use strict";a.d(t,{Z:function(){return f}});var l=a(3396),n=a(7139);const o=e=>((0,l.dD)("data-v-6b36cd30"),e=e(),(0,l.Cn)(),e),s={class:"checkbox-wrap absolute flex flex-column"},i={class:"head flex"},u=o((()=>(0,l._)("span",{class:"flex-1"},null,-1))),r={class:"body flex-1 scrollbar"},c={class:"flex-1"};function d(e,t,a,o,d,m){const p=(0,l.up)("el-checkbox"),h=(0,l.up)("el-checkbox-group");return(0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l._)("span",null,[(0,l.Wm)(p,{indeterminate:o.state.isIndeterminate,modelValue:o.state.checkAll,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.checkAll=e),onChange:o.handleCheckAllChange,label:o.state.title},null,8,["indeterminate","modelValue","onChange","label"])]),u,(0,l.WI)(e.$slots,"title",{},void 0,!0)]),(0,l._)("div",r,[(0,l.Wm)(h,{modelValue:o.state.checkList,"onUpdate:modelValue":t[1]||(t[1]=e=>o.state.checkList=e),onChange:o.handleChange},{default:(0,l.w5)((()=>[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(o.state.data,((t,a)=>((0,l.wg)(),(0,l.iD)("li",{key:a,class:"flex"},[(0,l._)("div",c,[(0,l.Wm)(p,{label:t[o.state.label]},{default:(0,l.w5)((()=>[(0,l.WI)(e.$slots,"name",{item:t},(()=>[(0,l.Uk)((0,n.zw)(t[o.state.text]),1)]),!0)])),_:2},1032,["label"])]),(0,l.WI)(e.$slots,"oper",{item:t},void 0,!0)])))),128))])])),_:3},8,["modelValue","onChange"])])])}var m=a(4870),p={props:["title","items","data","label","text"],emits:["change"],setup(e,{emit:t}){const a=(0,m.qj)({title:e.title,label:e.label,text:e.text||e.label,data:(0,l.Fl)((()=>e.data)),checkList:e.items.map((t=>t[e.label])),checkAll:!1,isIndeterminate:!1}),n=e=>{a.checkList=e?a.data.map((e=>e[a.label])):[],s(a.checkList)},o=e=>{s(e)},s=e=>{const l=e.length;a.isIndeterminate=l>0&&l0&&l==a.data.length,t("change",a.data.filter((e=>a.checkList.indexOf(e[a.label])>=0)))};(0,l.bv)((()=>{s(a.checkList)}));const i=()=>a.data.filter((e=>a.checkList.indexOf(e[a.label])>=0));return{state:a,handleCheckAllChange:n,handleChange:o,getData:i}}},h=a(89);const v=(0,h.Z)(p,[["render",d],["__scopeId","data-v-6b36cd30"]]);var f=v},5291:function(e,t,a){"use strict";a.d(t,{Z:function(){return f}});var l=a(3396),n=a(7139);const o=e=>((0,l.dD)("data-v-3f1c33d0"),e=e(),(0,l.Cn)(),e),s={class:"checkbox-wrap absolute flex flex-column"},i={class:"head flex"},u=o((()=>(0,l._)("span",{class:"flex-1"},null,-1))),r={class:"body flex-1 scrollbar"},c=["onClick"];function d(e,t,a,o,d,m){return(0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l._)("span",null,(0,n.zw)(o.state.title),1),u]),(0,l._)("div",r,[(0,l.WI)(e.$slots,"wrap",{},(()=>[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(o.state.data,((t,a)=>((0,l.wg)(),(0,l.iD)("li",{key:a,class:"flex"},[(0,l.WI)(e.$slots,"default",{item:t},(()=>[(0,l._)("div",{class:"default",onClick:e=>o.handleClick(t)},(0,n.zw)(t),9,c)]),!0)])))),128))])]),!0)])])}var m=a(4870),p={props:["title","data"],setup(e,{emit:t}){const a=(0,m.qj)({title:e.title,data:(0,l.Fl)((()=>e.data))}),n=e=>{t("prev",e)};return{state:a,handleClick:n}}},h=a(89);const v=(0,h.Z)(p,[["render",d],["__scopeId","data-v-3f1c33d0"]]);var f=v},6657:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396),n=a(7139);const o={href:"javascript:;"},s={class:"window-value"};function i(e,t,a,i,u,r){const c=(0,l.up)("Monitor"),d=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",o,[(0,l._)("span",{class:"window",onClick:t[0]||(t[0]=(...e)=>i.handleWindow&&i.handleWindow(...e))},[(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1})]),(0,l._)("p",s,(0,n.zw)(i.data.ActiveWindow.DisallowCount),1)])}var u=a(2115),r={props:["data"],setup(e){const t=(0,u.$)(),a=()=>{t.value.activeWindow.devices=[e.data],t.value.activeWindow.showChoose=!0};return{data:e.data,handleWindow:a}}},c=a(89);const d=(0,c.Z)(r,[["render",i],["__scopeId","data-v-6807b74e"]]);var m=d},1737:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return d}});var l=a(3396);const n=e=>((0,l.dD)("data-v-00407dd8"),e=e(),(0,l.Cn)(),e),o=n((()=>(0,l._)("span",null,"窗口",-1)));function s(e,t,a,n,s,i){const u=(0,l.up)("Monitor"),r=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleWindows&&n.handleWindows(...e))},[(0,l.Wm)(r,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u)])),_:1}),o])}var i=a(2115),u={sort:1,setup(){const e=(0,i.$)(),t=()=>{e.value.activeWindow.showWindows=!0};return{handleWindows:t}}},r=a(89);const c=(0,r.Z)(u,[["render",s],["__scopeId","data-v-00407dd8"]]);var d=c},4190:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Monitor"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleMessage},{default:(0,l.w5)((()=>[(0,l.Uk)("窗口"),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2683),s=a(2115),i={setup(){const e=(0,s.$)(),t=(0,o.d)(),a=()=>{e.value.activeWindow.devices=t.value.devices,e.value.activeWindow.showChoose=!0};return{handleMessage:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},7285:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return J}});var l=a(3396);const n={class:"active"};function o(e,t,a,o,s,i){const u=(0,l.up)("ActiveTimes"),r=(0,l.up)("Windows"),c=(0,l.up)("ChooseDig"),d=(0,l.up)("AddWindow"),m=(0,l.up)("ActiveWindows");return(0,l.wg)(),(0,l.iD)("div",n,[o.pluginState.activeWindow.showTimes?((0,l.wg)(),(0,l.j4)(u,{key:0,modelValue:o.pluginState.activeWindow.showTimes,"onUpdate:modelValue":t[0]||(t[0]=e=>o.pluginState.activeWindow.showTimes=e)},null,8,["modelValue"])):(0,l.kq)("",!0),o.pluginState.activeWindow.showWindows?((0,l.wg)(),(0,l.j4)(r,{key:1,modelValue:o.pluginState.activeWindow.showWindows,"onUpdate:modelValue":t[1]||(t[1]=e=>o.pluginState.activeWindow.showWindows=e)},null,8,["modelValue"])):(0,l.kq)("",!0),o.pluginState.activeWindow.showChoose?((0,l.wg)(),(0,l.j4)(c,{key:2,modelValue:o.pluginState.activeWindow.showChoose,"onUpdate:modelValue":t[2]||(t[2]=e=>o.pluginState.activeWindow.showChoose=e)},null,8,["modelValue"])):(0,l.kq)("",!0),o.pluginState.activeWindow.showAddWindow?((0,l.wg)(),(0,l.j4)(d,{key:3,modelValue:o.pluginState.activeWindow.showAddWindow,"onUpdate:modelValue":t[3]||(t[3]=e=>o.pluginState.activeWindow.showAddWindow=e)},null,8,["modelValue"])):(0,l.kq)("",!0),o.pluginState.activeWindow.showActiveWindows?((0,l.wg)(),(0,l.j4)(m,{key:4,modelValue:o.pluginState.activeWindow.showActiveWindows,"onUpdate:modelValue":t[4]||(t[4]=e=>o.pluginState.activeWindow.showActiveWindows=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var s=a(7139);const i={class:"wrap flex flex-column"},u={class:"inner flex-1 scrollbar"},r={class:"wrap flex flex-column"},c={class:"inner flex-1 scrollbar"};function d(e,t,a,n,o,d){const m=(0,l.up)("el-button"),p=(0,l.up)("el-progress"),h=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l.Wm)(h,{class:"options",title:"窗口使用时间统计","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(m,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(m,{type:"success",onClick:n.handleCancel,plain:""},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",i,[(0,l._)("h4",null,(0,s.zw)(n.state.startTime)+" - 至今("+(0,s.zw)((n.state.totalTime/1e3).toFixed(2))+"s)",1),(0,l._)("div",u,[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.list,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t},[(0,l._)("dl",null,[(0,l._)("dt",null,[(0,l.Uk)((0,s.zw)(e.Desc)+" ",1),(0,l.Wm)(m,{onClick:t=>n.showTitles(e),size:"small"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.titleLength),1)])),_:2},1032,["onClick"])]),(0,l._)("dd",null,[(0,l.Wm)(p,{percentage:(e.Time/n.state.totalTime*100).toFixed(2)},null,8,["percentage"])])])])))),128))])])])])),_:1},8,["modelValue"]),(0,l.Wm)(h,{class:"options",title:"详细标题","destroy-on-close":"",modelValue:n.state.showTitles,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.showTitles=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(m,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(m,{type:"success",onClick:n.handleCancel,plain:""},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",r,[(0,l._)("h5",null,(0,s.zw)(n.state.currentTime/1e3)+"s",1),(0,l._)("div",c,[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.currentTitles,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t},[(0,l._)("dl",null,[(0,l._)("dt",null,(0,s.zw)(e.t),1),(0,l._)("dd",null,[(0,l.Wm)(p,{percentage:(e.v/n.state.currentTime*100).toFixed(2)},null,8,["percentage"])])])])))),128))])])])])),_:1},8,["modelValue"])],64)}a(7658);var m=a(4870),p=a(7041),h=a(2115),v={props:["modelValue"],emits:["update:modelValue"],components:{},setup(e,{emit:t}){const a=(0,h.$)(),n=(0,m.qj)({show:e.modelValue,loading:!1,startTime:new Date,totalTime:1,list:[],showTitles:!1,currentTitles:[],currentTime:1});(0,l.YP)((()=>n.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{(0,p.Kd)(a.value.activeWindow.devices[0].MachineName).then((e=>{n.startTime=e.StartTime,n.totalTime=e.List.reduce(((e,t,a)=>(t.titleLength=Object.keys(t.Titles).length,e+=t.Time,e)),0),n.list=e.List.sort(((e,t)=>t.Time-e.Time))})).catch((e=>{}))},s=e=>{n.showTitles=!0;let t=[],a=0;for(let l in e.Titles)t.push({t:l,v:e.Titles[l]}),a+=e.Titles[l];n.currentTitles=t.sort(((e,t)=>t.v-e.v)),n.currentTime=a};(0,l.bv)((()=>{o()}));const i=()=>{n.show=!1};return{state:n,handleCancel:i,showTitles:s}}},f=a(89);const g=(0,f.Z)(v,[["render",d],["__scopeId","data-v-7407ef56"]]);var w=g;const k={class:"t-c"};function y(e,t,a,n,o,i){const u=(0,l.up)("el-option"),r=(0,l.up)("el-select"),c=(0,l.up)("el-button"),d=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(d,{title:"添加项","append-to-body":"","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),center:"","align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(c,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(c,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l._)("p",null,"标题:【"+(0,s.zw)(n.state.title)+"】",1),(0,l._)("p",null,"描述:【"+(0,s.zw)(n.state.desc)+"】",1),(0,l._)("p",null,"文件:【"+(0,s.zw)(n.state.filename)+"】",1),(0,l._)("p",k,[(0,l.Wm)(r,{modelValue:n.state.group,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.group=e),placeholder:"选择一个分组",style:{width:"13rem"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.groups,(e=>((0,l.wg)(),(0,l.j4)(u,{key:e.ID,label:e.Name,value:e.ID},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])])])),_:1},8,["modelValue"])}var _=a(2683),C=a(7178),x={props:["modelValue"],emits:["update:modelValue"],components:{},setup(e,{emit:t}){const a=(0,h.$)(),n=(0,_.d)(),o=(0,m.qj)({show:e.modelValue,group:0,title:"",desc:"",filename:"",groups:(0,l.Fl)((()=>{let e=n.value.usernames[n.value.username];return e?(e.Windows.length>0&&0==o.group&&(o.group=e.Windows[0].ID),e.Windows):[]}))});(0,l.YP)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)})),(0,l.bv)((()=>{const e=a.value.activeWindow.devices[0];if(!e)return;const t=e.ActiveWindow.FileName.split("\\");let l=t[t.length-1],n=e.ActiveWindow.Desc;const s=e.ActiveWindow.Title;"Application Frame Host"==n&&(l=s,n=s),o.title=s,o.desc=n,o.filename=l,o.showAdd=!0}));const s=()=>{o.show=!1},i=()=>{(0,p.fm)({username:n.value.username,GroupID:o.group,Item:{ID:0,Name:o.filename,Desc:o.desc}}).then((e=>{e?C.z8.error(`操作失败:${e}`):(C.z8.success("操作成功"),o.show=!1,n.value.updateRuleFlag=Date.now())})).catch((()=>{C.z8.error("操作失败")}))};return{state:o,handleCancel:s,handleSubmit:i}}};const D=(0,f.Z)(x,[["render",y],["__scopeId","data-v-37d67526"]]);var W=D;const b={class:"wrap flex flex-column"},V={class:"inner flex-1 scrollbar"},S={class:"flex-1"},I={class:"btns"};function T(e,t,a,n,o,i){const u=(0,l.up)("Delete"),r=(0,l.up)("el-icon"),c=(0,l.up)("el-button"),d=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(d,{class:"options",title:"当前打开窗口","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(c,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(c,{type:"success",onClick:n.handleCancel,plain:""},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",b,[(0,l._)("div",V,[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.list,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t,class:"flex"},[(0,l._)("div",S,(0,s.zw)(e.title),1),(0,l._)("div",I,[(0,l.Wm)(c,{type:"danger",plain:"",onClick:t=>n.handleCloseActive(e)},{default:(0,l.w5)((()=>[(0,l.Wm)(r,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u)])),_:1})])),_:2},1032,["onClick"])])])))),128))])])])])),_:1},8,["modelValue"])}var U=a(9418),N=a(6e3),j={props:["modelValue"],emits:["update:modelValue"],components:{},setup(e,{emit:t}){const a=(0,h.$)(),n=(0,m.qj)({show:e.modelValue,list:[]});(0,l.YP)((()=>n.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=["Microsoft Text Input Application","DragFileWindowTitle","TrafficMonitor","安装","Program Manager"],s=()=>{(0,p.XD)(a.value.activeWindow.devices[0].MachineName).then((e=>{const t=Object.keys(e).map((t=>({pid:t,title:e[t]}))).filter((e=>-1==o.indexOf(e.title)));n.list=t})).catch((e=>{}))};(0,l.bv)((()=>{s()}));const i=()=>{n.show=!1},u=e=>{const t=e.title,l=e.pid;N.T.confirm(`是否确定关闭焦点窗口?【${t}】`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,U.G)([a.value.activeWindow.devices[0].MachineName],[`taskkill /f /pid ${l}`]).then((e=>{e?(C.z8.success("操作成功"),setTimeout((()=>{s()}),1e3)):C.z8.error("操作失败")})).catch((()=>{C.z8.error("操作失败")}))})).catch((()=>{}))};return{state:n,handleCancel:i,handleCloseActive:u}}};const z=(0,f.Z)(j,[["render",T],["__scopeId","data-v-134f3cec"]]);var M=z,P=a(2206);const L=e=>((0,l.dD)("data-v-87931b18"),e=e(),(0,l.Cn)(),e),R={class:"rule-wrap flex"},O={class:"items"},E=L((()=>(0,l._)("div",{class:"flex-1"},null,-1))),F={class:"Exes flex flex-column"},B={class:"private"},$=L((()=>(0,l._)("div",{class:"flex-1"},null,-1))),H={class:"public"};function A(e,t,a,n,o,s){const i=(0,l.up)("CheckBoxWrap"),u=(0,l.up)("el-button"),r=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(r,{class:"options",title:"阻止窗口","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(u,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(u,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",R,[(0,l._)("div",O,[(0,l.Wm)(i,{ref:"devices",data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"选择设备"},null,8,["data","items"])]),E,(0,l._)("div",F,[(0,l._)("div",B,[(0,l.Wm)(i,{ref:"privateExes",data:n.state.privateExes,items:n.state.currentPrivate,label:"ID",text:"Name",title:"私有窗口"},null,8,["data","items"])]),$,(0,l._)("div",H,[(0,l.Wm)(i,{ref:"publicExes",data:n.state.publicExes,items:n.state.currentPublic,label:"ID",text:"Name",title:"公共窗口"},null,8,["data","items"])])])])])),_:1},8,["modelValue"])}var Z=a(1443),K={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:Z.Z},setup(e,{emit:t}){const a=(0,_.d)(),n=(0,h.$)(),o=(0,l.Fl)((()=>a.value.usernames[a.value.username])),s=a.value.publicUserName,i=(0,l.Fl)((()=>a.value.usernames[s])),u=i.value&&a.value.username!=s,r=(0,m.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.activeWindow.devices)),privateExes:(0,l.Fl)((()=>o.value?o.value.Windows:[])),publicExes:(0,l.Fl)((()=>u?i.value.Windows:[])),loading:!1,currentPrivate:[],currentPublic:[]});(0,l.YP)((()=>r.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)})),(0,l.bv)((()=>{if(1==r.items.length){let e=r.items[0];r.currentPrivate=r.privateExes.filter((t=>e.DisallowRunIds.indexOf(t.ID)>=0)),r.currentPublic=r.publicExes.filter((t=>e.DisallowRunIds.indexOf(t.ID)>=0))}}));const c=(0,m.iH)(null),d=(0,m.iH)(null),v=(0,m.iH)(null),f=()=>{const e=d.value.getData().map((e=>e.ID)),t=r.privateExes.filter((t=>e.indexOf(t.ID)>=0)),a=v.value.getData().map((e=>e.ID)),l=r.publicExes.filter((e=>a.indexOf(e.ID)>=0)),n=t.concat(l).reduce(((e,t,a)=>{let l=t.List.reduce(((e,t,a)=>(e=e.concat(t.Name.split(",")),e)),[]);for(let n=0;n{const e=c.value.getData();0!=e.length?N.T.confirm("如果未选择程序,则视为清空程序,是否确定应用?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{r.loading=!0;const t=f();(0,p.$K)(e.map((e=>e.MachineName)),t.exes,t.ids).then((l=>{r.loading=!1,C.z8.success("操作成功!"),a.value.devices.filter((t=>e.indexOf(t.MachineName)>=0)).forEach((e=>{e.DisallowRunIds=t.ids}))})).catch((e=>{r.loading=!1,C.z8.error("操作失败")}))})).catch((e=>{console.log(e)})):C.z8.error("未选择任何设备")},w=()=>{r.show=!1};return{state:r,globalData:a,devices:c,privateExes:d,publicExes:v,handleSubmit:g,handleCancel:w}}};const q=(0,f.Z)(K,[["render",A],["__scopeId","data-v-87931b18"]]);var Y=q,Q={components:{ActiveTimes:w,Windows:P["default"],ChooseDig:Y,AddWindow:W,ActiveWindows:M},setup(){const e=(0,h.$)();return{pluginState:e}}};const G=(0,f.Z)(Q,[["render",o]]);var J=G},6487:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return g}});var l=a(3396),n=a(7139),o=a(9242);const s={class:"title flex-1"},i={class:"btn"},u={class:"num"};function r(e,t,a,r,c,d){const m=(0,l.up)("CirclePlus"),p=(0,l.up)("el-icon"),h=(0,l.up)("Tickets");return(0,l.wg)(),(0,l.iD)("a",{class:"process flex",href:"javascript:;",onClick:t[2]||(t[2]=(...e)=>r.handleClick&&r.handleClick(...e))},[(0,l._)("span",s,(0,n.zw)(r.data.ActiveWindow.Title),1),(0,l._)("p",i,[(0,l._)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(0,o.iM)(((...e)=>r.handleAddExe&&r.handleAddExe(...e)),["stop"]))},[(0,l.Wm)(p,null,{default:(0,l.w5)((()=>[(0,l.Wm)(m)])),_:1})]),(0,l._)("a",{href:"javascript:;",onClick:t[1]||(t[1]=(0,o.iM)(((...e)=>r.handleShowWindows&&r.handleShowWindows(...e)),["stop"]))},[(0,l.Wm)(p,null,{default:(0,l.w5)((()=>[(0,l.Wm)(h)])),_:1}),(0,l._)("span",u,(0,n.zw)(r.data.ActiveWindow.WindowCount),1)])])])}var c=a(6e3),d=a(7178),m=a(9418),p=a(2115),h={props:["data"],setup(e,{emit:t}){const a=(0,p.$)(),l=()=>{const t=e.data.ActiveWindow.Title,a=e.data.ActiveWindow.Pid;c.T.confirm(`是否确定关闭焦点窗口?【${t}】`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,m.G)([e.data.MachineName],[`taskkill /f /pid ${a}`]).then((e=>{e?d.z8.success("操作成功"):d.z8.error("操作失败")})).catch((()=>{d.z8.error("操作失败")}))})).catch((()=>{}))},n=()=>{a.value.activeWindow.devices=[e.data],a.value.activeWindow.showAddWindow=!0},o=()=>{a.value.activeWindow.devices=[e.data],a.value.activeWindow.showActiveWindows=!0},s=()=>{a.value.activeWindow.devices=[e.data],a.value.activeWindow.showTimes=!0};let i=0;const u=()=>{if(i)return clearTimeout(i),i=0,void s();i=setTimeout((()=>{i=0,l()}),300)};return{data:e.data,handleAddExe:n,handleShowWindows:o,handleClick:u}}},v=a(89);const f=(0,v.Z)(h,[["render",r],["__scopeId","data-v-394c2481"]]);var g=f},2206:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return U}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Groups"),u=(0,l.up)("el-tab-pane"),r=(0,l.up)("Items"),c=(0,l.up)("el-tabs"),d=(0,l.up)("el-button"),m=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(m,{class:"options",title:"窗口限制","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","close-on-click-modal":!1,"align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l.Wm)(c,{type:"border-card"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{label:"窗口分组"},{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1}),(0,l.Wm)(u,{label:"窗口列表"},{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1})])),_:1})])),_:1},8,["modelValue"])}var o=a(4870);const s={class:"window-items-wrap flex flex-nowrap flex-column"},i={class:"head t-c flex"},u={class:"flex-1"},r={class:"prevs-wrap"};function c(e,t,a,n,o,c){const d=(0,l.up)("el-button"),m=(0,l.up)("el-table-column"),p=(0,l.up)("EditPen"),h=(0,l.up)("el-icon"),v=(0,l.up)("Delete"),f=(0,l.up)("el-popconfirm"),g=(0,l.up)("el-table"),w=(0,l.up)("el-input"),k=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l.Wm)(d,{onClick:t[0]||(t[0]=e=>n.handleAdd())},{default:(0,l.w5)((()=>[(0,l.Uk)("添加项")])),_:1})]),(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(g,{data:n.state.list,size:"small",border:"",stripe:"",style:{width:"100%"},height:"50vh"},{default:(0,l.w5)((()=>[(0,l.Wm)(m,{prop:"Name",label:"名称"}),(0,l.Wm)(m,{label:"操作",width:"110"},{default:(0,l.w5)((e=>[e.row.ID>1?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Wm)(d,{size:"small",onClick:t=>n.handleAdd(e.row)},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p)])),_:1})])),_:2},1032,["onClick"]),(0,l.Wm)(f,{title:"删除不可逆,是否确定?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.w5)((()=>[(0,l.Wm)(d,{size:"small",type:"danger"},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(v)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])],64)):(0,l.kq)("",!0)])),_:1})])),_:1},8,["data"])])]),(0,l.Wm)(k,{title:""+(0==n.state.currentItem.ID?"添加项":"修改项"),"destroy-on-close":"",modelValue:n.state.showEdit,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.showEdit=e),center:"","close-on-click-modal":!1,"align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleEditCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(d,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleEditSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l.Wm)(w,{modelValue:n.state.currentItem.Name,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.currentItem.Name=e),size:"large",placeholder:"分组名称"},null,8,["modelValue"])])])),_:1},8,["title","modelValue"])])}var d=a(7178),m=a(7041),p=a(2683),h={setup(){const e=(0,p.d)(),t=(0,o.qj)({loading:!1,currentItem:{ID:0,Name:""},showEdit:!1,list:(0,l.Fl)((()=>{let a=e.value.usernames[e.value.username];return a?(0==t.group&&a.Windows.length>0&&(t.group=a.Windows[0].ID),a.Windows):[]}))}),a=e=>{e=e||{Name:"",ID:0},t.currentItem.Name=e.Name,t.currentItem.ID=e.ID,t.showEdit=!0},n=a=>{t.loading=!0,(0,m.Oq)(e.value.username,a.ID).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")}))},s=()=>{t.showEdit=!1},i=()=>{t.currentItem.Name=t.currentItem.Name.replace(/^\s|\s$/g,""),t.currentItem.Name&&(t.loading=!0,(0,m.PC)({UserName:e.value.username,Group:t.currentItem}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),t.showEdit=!1,e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")})))};return{state:t,handleAdd:a,handleDel:n,handleEditCancel:s,handleEditSubmit:i}}},v=a(89);const f=(0,v.Z)(h,[["render",c],["__scopeId","data-v-3aff4911"]]);var g=f;const w=e=>((0,l.dD)("data-v-d270371c"),e=e(),(0,l.Cn)(),e),k={class:"windows-items-wrap flex flex-nowrap flex-column"},y={class:"head t-c flex"},_=w((()=>(0,l._)("span",{class:"flex-1"},null,-1))),C={class:"flex-1"},x={class:"prevs-wrap"},D={style:{"padding-top":"1rem"}};function W(e,t,a,n,o,s){const i=(0,l.up)("el-option"),u=(0,l.up)("el-select"),r=(0,l.up)("el-button"),c=(0,l.up)("el-table-column"),d=(0,l.up)("EditPen"),m=(0,l.up)("el-icon"),p=(0,l.up)("Delete"),h=(0,l.up)("el-popconfirm"),v=(0,l.up)("el-table"),f=(0,l.up)("el-input"),g=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)("div",k,[(0,l._)("div",y,[(0,l.Wm)(u,{modelValue:n.state.group,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.group=e),placeholder:"选择一个分组",style:{width:"13rem"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.groups,(e=>((0,l.wg)(),(0,l.j4)(i,{key:e.ID,label:e.Name,value:e.ID},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),_,(0,l.Wm)(r,{onClick:t[1]||(t[1]=e=>n.handleAdd())},{default:(0,l.w5)((()=>[(0,l.Uk)("添加项")])),_:1})]),(0,l._)("div",C,[(0,l._)("div",x,[(0,l.Wm)(v,{data:n.state.list,size:"small",border:"",stripe:"",style:{width:"100%"},height:"50vh"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{prop:"Name",label:"名称"}),(0,l.Wm)(c,{prop:"Desc",label:"描述"}),(0,l.Wm)(c,{label:"操作",width:"110"},{default:(0,l.w5)((e=>[(0,l.Wm)(r,{size:"small",onClick:t=>n.handleAdd(e.row)},{default:(0,l.w5)((()=>[(0,l.Wm)(m,null,{default:(0,l.w5)((()=>[(0,l.Wm)(d)])),_:1})])),_:2},1032,["onClick"]),(0,l.Wm)(h,{title:"删除不可逆,是否确定?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.w5)((()=>[(0,l.Wm)(r,{size:"small",type:"danger"},{default:(0,l.w5)((()=>[(0,l.Wm)(m,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data"])])]),(0,l.Wm)(g,{title:""+(0==n.state.currentItem.ID?"添加项":"修改项"),"destroy-on-close":"",modelValue:n.state.showEdit,"onUpdate:modelValue":t[4]||(t[4]=e=>n.state.showEdit=e),center:"","close-on-click-modal":!1,"align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(r,{onClick:n.handleEditCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(r,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleEditSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l._)("p",null,[(0,l.Wm)(f,{modelValue:n.state.currentItem.Desc,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.currentItem.Desc=e),size:"large",placeholder:"名称"},null,8,["modelValue"])]),(0,l._)("p",D,[(0,l.Wm)(f,{modelValue:n.state.currentItem.Name,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.currentItem.Name=e),size:"large",placeholder:"文件,多个逗号间隔,无后缀则按标题处理"},null,8,["modelValue"])])])])),_:1},8,["title","modelValue"])])}var b={setup(){const e=(0,p.d)(),t=(0,o.qj)({loading:!1,group:0,currentItem:{ID:0,Name:"",Desc:""},showEdit:!1,groups:(0,l.Fl)((()=>{let a=e.value.usernames[e.value.username];return a?(0==t.group&&a.Windows.length>0&&(t.group=a.Windows[0].ID),a.Windows):[]})),list:(0,l.Fl)((()=>{let e=t.groups.filter((e=>e.ID==t.group))[0];return e?e.List:[]}))}),a=e=>{e=e||{Name:"",ID:0,Desc:""},t.currentItem.Name=e.Name,t.currentItem.Desc=e.Desc,t.currentItem.ID=e.ID,t.showEdit=!0},n=a=>{t.loading=!0,(0,m.Lb)(e.value.username,t.group,a.ID).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")}))},s=()=>{t.showEdit=!1},i=()=>{t.currentItem.Name=t.currentItem.Name.replace(/^\s|\s$/g,""),t.currentItem.Name&&(t.loading=!0,(0,m.fm)({UserName:e.value.username,GroupID:t.group,Item:t.currentItem}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),t.showEdit=!1,e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")})))};return{state:t,handleAdd:a,handleDel:n,handleEditCancel:s,handleEditSubmit:i}}};const V=(0,v.Z)(b,[["render",W],["__scopeId","data-v-d270371c"]]);var S=V,I={props:["modelValue"],emits:["update:modelValue"],components:{Groups:g,Items:S},setup(e,{emit:t}){const a=(0,o.qj)({show:e.modelValue,loading:!1});(0,l.YP)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));(0,p.d)();const n=()=>{a.show=!1};return{state:a,handleCancel:n}}};const T=(0,v.Z)(I,[["render",n]]);var U=T},459:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return r}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ScaleToOriginal"),u=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("div",null,[(0,l._)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleCommand&&n.handleCommand(...e))},[(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])])}var o=a(2115),s={props:["data"],setup(e){const t=(0,o.$)(),a=()=>{t.value.command.devices=[e.data],t.value.command.showCommand=!0};return{handleCommand:a}}},i=a(89);const u=(0,i.Z)(s,[["render",n],["__scopeId","data-v-28d57024"]]);var r=u},8196:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ScaleToOriginal"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleCommand},{default:(0,l.w5)((()=>[(0,l.Uk)("命令"),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2683),s=a(2115),i={setup(){const e=(0,s.$)(),t=(0,o.d)(),a=()=>{e.value.command.devices=t.value.devices,e.value.command.showCommand=!0};return{handleCommand:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},8754:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return x}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ChooseDig");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.command.showCommand?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.command.showCommand,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.command.showCommand=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115);const s=e=>((0,l.dD)("data-v-668c193e"),e=e(),(0,l.Cn)(),e),i={class:"command-wrap common-command-wrap flex"},u={class:"items"},r=s((()=>(0,l._)("div",{class:"flex-1"},null,-1))),c={class:"commands"},d={class:"inner absolute scrollbar"};function m(e,t,a,n,o,s){const m=(0,l.up)("CheckBoxWrap"),p=(0,l.up)("el-button"),h=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(h,{class:"options",title:"执行命令","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(p,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",i,[(0,l._)("div",u,[(0,l.Wm)(m,{ref:"items",onChange:n.handleDevicesChange,data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"选择设备"},null,8,["onChange","data","items"])]),r,(0,l._)("div",c,[(0,l._)("div",d,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.commandModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t})))),128))])])])])),_:1},8,["modelValue"])}var p=a(4870),h=a(1443),v=a(5291),f=a(2683),g={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:h.Z,PrevBoxWrap:v.Z},setup(e,{emit:t}){const n=a(8023),s=n.keys().map((e=>n(e).default)),i=(0,f.d)(),u=(0,o.$)(),r=(0,p.qj)({show:e.modelValue,items:(0,l.Fl)((()=>u.value.command.devices)),loading:!1});(0,l.YP)((()=>r.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const c=(0,p.iH)(null),d=()=>{r.show=!1},m=e=>{u.value.command.devices=e};return{state:r,globalData:i,items:c,commandModules:s,handleCancel:d,handleDevicesChange:m}}},w=a(89);const k=(0,w.Z)(g,[["render",m],["__scopeId","data-v-668c193e"]]);var y=k,_={components:{ChooseDig:y},setup(){const e=(0,o.$)();return{pluginState:e}}};const C=(0,w.Z)(_,[["render",n]]);var x=C},4718:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return d}});var l=a(3396);const n=e=>((0,l.dD)("data-v-5e5b55e3"),e=e(),(0,l.Cn)(),e),o=n((()=>(0,l._)("span",null,"设备",-1)));function s(e,t,a,n,s,i){const u=(0,l.up)("Grid"),r=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleDevices&&n.handleDevices(...e))},[(0,l.Wm)(r,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u)])),_:1}),o])}var i=a(2115),u={sort:0,setup(){const e=(0,i.$)(),t=()=>{e.value.device.showDevices=!0};return{handleDevices:t}}},r=a(89);const c=(0,r.Z)(u,[["render",s],["__scopeId","data-v-5e5b55e3"]]);var d=c},2075:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return _}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ChooseDig");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.device.showDevices?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.device.showDevices,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.device.showDevices=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115);const s={class:"devices-wrap"},i={class:"del-btn"};function u(e,t,a,n,o,u){const r=(0,l.up)("Delete"),c=(0,l.up)("el-icon"),d=(0,l.up)("el-popconfirm"),m=(0,l.up)("CheckBoxWrap"),p=(0,l.up)("el-button"),h=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(h,{class:"options",title:"选择你的设备","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","close-on-click-modal":!1,"align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(p,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(p,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",s,[(0,l.Wm)(m,{ref:"devices",data:n.state.list,items:n.state.items,label:"MachineName",text:"MachineName",title:"选择设备"},{oper:(0,l.w5)((e=>[(0,l._)("div",null,[(0,l.Wm)(d,{title:"删除不可逆,是否确认?",onConfirm:t=>n.handleDel(e.item.MachineName)},{reference:(0,l.w5)((()=>[(0,l._)("span",i,[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1})])])),_:2},1032,["onConfirm"])])])),_:1},8,["data","items"])])])),_:1},8,["modelValue"])}var r=a(4870),c=a(1443),d=a(2331),m=a(1468),p=a(7178),h=a(2683),v={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:c.Z},setup(e,{emit:t}){const a=(0,h.d)(),n=(0,r.qj)({show:e.modelValue,loading:!1,list:(0,l.Fl)((()=>a.value.allDevices)),items:(0,l.Fl)((()=>a.value.devices))});(0,l.YP)((()=>n.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{n.show=!1,a.value.updateDeviceFlag=Date.now()},s=e=>{n.loading=!0,(0,m.FU)(e).then((()=>{n.loading=!1,a.value.updateDeviceFlag=Date.now()})).catch((()=>{n.loading=!1}))},i=(0,r.iH)(null),u=()=>{const e=i.value.getData();n.loading=!0,(0,d.hG)({username:a.value.username,devices:e.map((e=>e.MachineName))}).then((e=>{n.loading=!1,a.value.updateDeviceFlag=Date.now(),e?p.z8.error(e):(p.z8.success("操作成功!"),n.show=!1)})).catch((()=>{n.loading=!1,p.z8.error("操作失败!")}))};return(0,l.bv)((()=>{a.value.updateDeviceFlag=Date.now()})),{state:n,devices:i,handleCancel:o,handleSubmit:u,handleDel:s}}},f=a(89);const g=(0,f.Z)(v,[["render",u],["__scopeId","data-v-97145bf0"]]);var w=g,k={components:{ChooseDig:w},setup(){const e=(0,o.$)();return{pluginState:e}}};const y=(0,f.Z)(k,[["render",n]]);var _=y},116:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return d}});var l=a(3396),n=a(7139);const o={class:"value"};function s(e,t,a,s,i,u){const r=(0,l.up)("Umbrella"),c=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>s.handleRule&&s.handleRule(...e))},[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1}),(0,l._)("span",o,(0,n.zw)(s.data.Hijack.Count),1)])}var i=a(2115),u={props:["data"],setup(e){const t=(0,i.$)(),a=()=>{t.value.hijack.devices=[e.data],t.value.hijack.showRules=!0};return{data:e.data,handleRule:a}}},r=a(89);const c=(0,r.Z)(u,[["render",s],["__scopeId","data-v-10febbed"]]);var d=c},3213:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return p}});var l=a(3396);const n=e=>((0,l.dD)("data-v-0672e0ec"),e=e(),(0,l.Cn)(),e),o={href:"javascript:;"},s={class:"el-dropdown-link"},i=n((()=>(0,l._)("span",null,"网络",-1)));function u(e,t,a,n,u,r){const c=(0,l.up)("Umbrella"),d=(0,l.up)("el-icon"),m=(0,l.up)("arrow-down"),p=(0,l.up)("el-dropdown-item"),h=(0,l.up)("el-dropdown-menu"),v=(0,l.up)("el-dropdown");return(0,l.wg)(),(0,l.iD)("a",o,[(0,l.Wm)(v,null,{dropdown:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p,{onClick:n.handleProcess},{default:(0,l.w5)((()=>[(0,l.Uk)("程序配置")])),_:1},8,["onClick"]),(0,l.Wm)(p,{divided:"",onClick:n.handleRule},{default:(0,l.w5)((()=>[(0,l.Uk)("分组配置")])),_:1},8,["onClick"])])),_:1})])),default:(0,l.w5)((()=>[(0,l._)("span",s,[(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1}),i,(0,l.Wm)(d,{class:"el-icon--right"},{default:(0,l.w5)((()=>[(0,l.Wm)(m)])),_:1})])])),_:1})])}var r=a(2115),c={sort:2,setup(){const e=(0,r.$)(),t=()=>{e.value.hijack.showProcessSetting=!0},a=()=>{e.value.hijack.showRuleSetting=!0};return{handleProcess:t,handleRule:a}}},d=a(89);const m=(0,d.Z)(c,[["render",u],["__scopeId","data-v-0672e0ec"]]);var p=m},2546:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return I}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ChooseDig"),u=(0,l.up)("RuleSetting"),r=(0,l.up)("ProcessSetting");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.hijack.showRules?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.hijack.showRules,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.hijack.showRules=e)},null,8,["modelValue"])):(0,l.kq)("",!0),n.pluginState.hijack.showRuleSetting?((0,l.wg)(),(0,l.j4)(u,{key:1,modelValue:n.pluginState.hijack.showRuleSetting,"onUpdate:modelValue":t[1]||(t[1]=e=>n.pluginState.hijack.showRuleSetting=e)},null,8,["modelValue"])):(0,l.kq)("",!0),n.pluginState.hijack.showProcessSetting?((0,l.wg)(),(0,l.j4)(r,{key:2,modelValue:n.pluginState.hijack.showProcessSetting,"onUpdate:modelValue":t[2]||(t[2]=e=>n.pluginState.hijack.showProcessSetting=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115);const s=e=>((0,l.dD)("data-v-1d10a778"),e=e(),(0,l.Cn)(),e),i={class:"rule-wrap flex"},u={class:"items"},r=s((()=>(0,l._)("div",{class:"flex-1"},null,-1))),c={class:"rules flex flex-column"},d={class:"private"},m=s((()=>(0,l._)("div",{class:"flex-1"},null,-1))),p={class:"public"};function h(e,t,a,n,o,s){const h=(0,l.up)("CheckBoxWrap"),v=(0,l.up)("el-button"),f=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(f,{class:"options",title:"网络限制","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(v,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(v,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",i,[(0,l._)("div",u,[(0,l.Wm)(h,{ref:"devices",data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"选择设备"},null,8,["data","items"])]),r,(0,l._)("div",c,[(0,l._)("div",d,[(0,l.Wm)(h,{ref:"privateRules",data:n.state.privateRules,items:n.state.currentPrivate,label:"ID",text:"Name",title:"私有限制"},null,8,["data","items"])]),m,(0,l._)("div",p,[(0,l.Wm)(h,{ref:"publicRules",data:n.state.publicRules,items:n.state.currentPublic,label:"ID",text:"Name",title:"公共限制"},null,8,["data","items"])])])])])),_:1},8,["modelValue"])}a(7658);var v=a(4870),f=a(1443),g=a(7178),w=a(6e3),k=a(2331),y=a(2683),_={props:["modelValue","items"],emits:["update:modelValue"],components:{CheckBoxWrap:f.Z},setup(e,{emit:t}){const a=(0,y.d)(),n=(0,o.$)(),s=(0,l.Fl)((()=>a.value.usernames[a.value.username])),i=a.value.publicUserName,u=(0,l.Fl)((()=>a.value.usernames[i])),r=u.value&&a.value.username!=i,c=(0,v.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.hijack.devices)),privateRules:(0,l.Fl)((()=>s.value?s.value.Rules:[])),publicRules:(0,l.Fl)((()=>r?u.value.Rules:[])),loading:!1,currentPrivate:[],currentPublic:[]});(0,l.YP)((()=>c.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)})),(0,l.bv)((()=>{if(1==c.items.length){let e=c.items[0];c.currentPrivate=c.privateRules.filter((t=>e.RuleIds.indexOf(t.ID)>=0)),c.currentPublic=c.publicRules.filter((t=>e.RuleIds.indexOf(t.ID)>=0))}}));const d=(0,v.iH)(null),m=(0,v.iH)(null),p=(0,v.iH)(null),h=()=>{const e=m.value.getData().map((e=>e.ID)),t=p.value.getData().map((e=>e.ID)),a=s.value,l=u.value,n=a.Rules.filter((t=>e.indexOf(t.ID)>=0)).map((e=>a.Processs.filter((t=>e.PrivateProcesss.indexOf(t.ID)>=0)))),o=l.Rules.filter((e=>t.indexOf(e.ID)>=0)).map((e=>l.Processs.filter((t=>e.PublicProcesss.indexOf(t.ID)>=0)))),i=n.concat(o).reduce(((e,t,a)=>(e=e.concat(t.reduce(((e,t,a)=>(e=e.concat(t.List),e)),[])),e)),[]),r=[];return i.forEach((e=>{0==r.filter((t=>t.Name==e.Name&&t.DataType==e.DataType&&t.AllowType==e.AllowType)).length&&r.push(e)})),{ids:e.concat(t),list:{AllowProcesss:r.filter((e=>0==e.DataType&&0==e.AllowType)).map((e=>e.Name)),DeniedProcesss:r.filter((e=>0==e.DataType&&1==e.AllowType)).map((e=>e.Name)),AllowDomains:r.filter((e=>1==e.DataType&&0==e.AllowType)).map((e=>e.Name)),DeniedDomains:r.filter((e=>1==e.DataType&&1==e.AllowType)).map((e=>e.Name)),AllowIPs:r.filter((e=>2==e.DataType&&0==e.AllowType)).map((e=>e.Name)),DeniedIPs:r.filter((e=>2==e.DataType&&1==e.AllowType)).map((e=>e.Name))}}},f=()=>{const e=d.value.getData();0!=e.length?w.T.confirm("如果未选择任何限制,则视为清空限制,是否确定应用限制?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{c.loading=!0;const t=h();(0,k.Gn)({Devices:e.map((e=>e.MachineName)),Rules:t.list,ids:t.ids}).then((l=>{c.loading=!1,l&&l.length>0?g.z8.error(`操作失败,失败设备:${l.join(",")}`):(g.z8.success("操作成功!"),a.value.devices.filter((t=>e.indexOf(t.MachineName)>=0)).forEach((e=>{e.RuleIds=t.ids})))})).catch((e=>{c.loading=!1,g.z8.error("操作失败")}))})).catch((()=>{})):g.z8.error("未选择任何设备")},_=()=>{c.show=!1};return{state:c,globalData:a,devices:d,privateRules:m,publicRules:p,handleSubmit:f,handleCancel:_}}},C=a(89);const x=(0,C.Z)(_,[["render",h],["__scopeId","data-v-1d10a778"]]);var D=x,W=a(2838),b=a(2244),V={components:{ChooseDig:D,RuleSetting:W["default"],ProcessSetting:b["default"]},setup(){const e=(0,o.$)();return{pluginState:e}}};const S=(0,C.Z)(V,[["render",n]]);var I=S},3844:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396),n=a(7139);const o={class:"speed"};function s(e,t,a,s,i,u){const r=(0,l.up)("Upload"),c=(0,l.up)("el-icon"),d=(0,l.up)("Download");return(0,l.wg)(),(0,l.iD)("span",o,[(0,l._)("span",null,[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1}),(0,l.Uk)(" "+(0,n.zw)(s.data.Hijack.UploadText),1)]),(0,l._)("span",null,[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Wm)(d)])),_:1}),(0,l.Uk)(" "+(0,n.zw)(s.data.Hijack.DownloadText),1)])])}var i={props:["data"],setup(e){return{data:e.data}}},u=a(89);const r=(0,u.Z)(i,[["render",s],["__scopeId","data-v-6a822c73"]]);var c=r},2244:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return M}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Groups"),u=(0,l.up)("el-tab-pane"),r=(0,l.up)("Items"),c=(0,l.up)("el-tabs"),d=(0,l.up)("el-button"),m=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(m,{class:"options",title:"限制程序配置","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","close-on-click-modal":!1,"align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l.Wm)(c,{type:"border-card"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{label:"程序分组"},{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1}),(0,l.Wm)(u,{label:"程序列表"},{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1})])),_:1})])),_:1},8,["modelValue"])}var o=a(4870);const s={class:"process-items-wrap flex flex-nowrap flex-column"},i={class:"head t-c flex"},u={class:"flex-1"},r={class:"prevs-wrap"};function c(e,t,a,n,o,c){const d=(0,l.up)("el-button"),m=(0,l.up)("el-table-column"),p=(0,l.up)("EditPen"),h=(0,l.up)("el-icon"),v=(0,l.up)("Delete"),f=(0,l.up)("el-popconfirm"),g=(0,l.up)("el-table"),w=(0,l.up)("el-input"),k=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l.Wm)(d,{onClick:t[0]||(t[0]=e=>n.handleAdd())},{default:(0,l.w5)((()=>[(0,l.Uk)("添加项")])),_:1})]),(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(g,{data:n.state.list,size:"small",border:"",stripe:"",style:{width:"100%"},height:"50vh"},{default:(0,l.w5)((()=>[(0,l.Wm)(m,{prop:"Name",label:"名称"}),(0,l.Wm)(m,{label:"操作",width:"110"},{default:(0,l.w5)((e=>[e.row.ID>1?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Wm)(d,{size:"small",onClick:t=>n.handleAdd(e.row)},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p)])),_:1})])),_:2},1032,["onClick"]),(0,l.Wm)(f,{title:"删除不可逆,是否确定?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.w5)((()=>[(0,l.Wm)(d,{size:"small",type:"danger"},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(v)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])],64)):(0,l.kq)("",!0)])),_:1})])),_:1},8,["data"])])]),(0,l.Wm)(k,{title:""+(0==n.state.currentItem.ID?"添加项":"修改项"),"destroy-on-close":"",modelValue:n.state.showEdit,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.showEdit=e),center:"","close-on-click-modal":!1,"align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleEditCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(d,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleEditSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l.Wm)(w,{modelValue:n.state.currentItem.Name,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.currentItem.Name=e),size:"large",placeholder:"分组名称"},null,8,["modelValue"])])])),_:1},8,["title","modelValue"])])}var d=a(7178),m=a(2331),p=a(2683),h={setup(){const e=(0,p.d)(),t=(0,o.qj)({loading:!1,currentItem:{ID:0,Name:""},showEdit:!1,list:(0,l.Fl)((()=>{let a=e.value.usernames[e.value.username];return a?(0==t.group&&a.Processs.length>0&&(t.group=a.Processs[0].ID),a.Processs):[]}))}),a=e=>{e=e||{Name:"",ID:0},t.currentItem.Name=e.Name,t.currentItem.ID=e.ID,t.showEdit=!0},n=a=>{t.loading=!0,(0,m.XM)({UserName:e.value.username,ID:a.ID}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")}))},s=()=>{t.showEdit=!1},i=()=>{t.currentItem.Name=t.currentItem.Name.replace(/^\s|\s$/g,""),t.currentItem.Name&&(t.loading=!0,(0,m.xc)({UserName:e.value.username,Group:t.currentItem}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),t.showEdit=!1,e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")})))};return{state:t,handleAdd:a,handleDel:n,handleEditCancel:s,handleEditSubmit:i}}},v=a(89);const f=(0,v.Z)(h,[["render",c],["__scopeId","data-v-270ff067"]]);var g=f,w=a(7139);const k=e=>((0,l.dD)("data-v-1905f2ff"),e=e(),(0,l.Cn)(),e),y={class:"process-items-wrap flex flex-nowrap flex-column"},_={class:"head t-c flex"},C=k((()=>(0,l._)("span",{class:"flex-1"},null,-1))),x={class:"flex-1"},D={class:"prevs-wrap"},W=k((()=>(0,l._)("div",{class:"alert"},[(0,l._)("p",null,"1、黑名单优先"),(0,l._)("p",null,"2、支持进程名,域名,ip(支持掩码)"),(0,l._)("p",null,"3、进程,域名,后序截取判断")],-1))),b={style:{"padding-bottom":"1rem"}},V={class:"t-c",style:{"padding-bottom":"1rem"}},S={class:"t-c"};function I(e,t,a,n,o,s){const i=(0,l.up)("el-option"),u=(0,l.up)("el-select"),r=(0,l.up)("el-button"),c=(0,l.up)("el-table-column"),d=(0,l.up)("EditPen"),m=(0,l.up)("el-icon"),p=(0,l.up)("Delete"),h=(0,l.up)("el-popconfirm"),v=(0,l.up)("el-table"),f=(0,l.up)("el-input"),g=(0,l.up)("el-radio"),k=(0,l.up)("el-radio-group"),I=(0,l.up)("el-switch"),T=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)("div",y,[(0,l._)("div",_,[(0,l.Wm)(u,{modelValue:n.state.group,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.group=e),placeholder:"选择一个分组",style:{width:"13rem"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.groups,(e=>((0,l.wg)(),(0,l.j4)(i,{key:e.ID,label:e.Name,value:e.ID},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),C,(0,l.Wm)(r,{onClick:t[1]||(t[1]=e=>n.handleAdd())},{default:(0,l.w5)((()=>[(0,l.Uk)("添加项")])),_:1})]),(0,l._)("div",x,[(0,l._)("div",D,[(0,l.Wm)(v,{data:n.state.list,size:"small",border:"",stripe:"",style:{width:"100%"},height:"50vh"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{prop:"Name",label:"名称"},{default:(0,l.w5)((e=>[(0,l._)("strong",{class:(0,w.C_)(`allow-type-${e.row.AllowType}`)},(0,w.zw)(e.row.Name),3)])),_:1}),(0,l.Wm)(c,{label:"操作",width:"110"},{default:(0,l.w5)((e=>[(0,l.Wm)(r,{size:"small",onClick:t=>n.handleAdd(e.row)},{default:(0,l.w5)((()=>[(0,l.Wm)(m,null,{default:(0,l.w5)((()=>[(0,l.Wm)(d)])),_:1})])),_:2},1032,["onClick"]),(0,l.Wm)(h,{title:"删除不可逆,是否确定?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.w5)((()=>[(0,l.Wm)(r,{size:"small",type:"danger"},{default:(0,l.w5)((()=>[(0,l.Wm)(m,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data"])])]),(0,l.Wm)(T,{title:""+(0==n.state.currentItem.ID?"添加项":"修改项"),"destroy-on-close":"",modelValue:n.state.showEdit,"onUpdate:modelValue":t[5]||(t[5]=e=>n.state.showEdit=e),center:"","close-on-click-modal":!1,"align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(r,{onClick:n.handleEditCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(r,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleEditSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[W,(0,l._)("div",b,[(0,l.Wm)(f,{modelValue:n.state.currentItem.Name,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.currentItem.Name=e),size:"large",placeholder:"进程 | 域名 | ip(支持掩码/32)"},null,8,["modelValue"])]),(0,l._)("div",V,[(0,l.Wm)(k,{modelValue:n.state.currentItem.DataType,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.currentItem.DataType=e)},{default:(0,l.w5)((()=>[(0,l.Wm)(g,{label:0},{default:(0,l.w5)((()=>[(0,l.Uk)("进程")])),_:1}),(0,l.Wm)(g,{label:1},{default:(0,l.w5)((()=>[(0,l.Uk)("域名")])),_:1}),(0,l.Wm)(g,{label:2},{default:(0,l.w5)((()=>[(0,l.Uk)("IP")])),_:1})])),_:1},8,["modelValue"])]),(0,l._)("div",S,[(0,l.Wm)(I,{modelValue:n.state.currentItem.AllowType,"onUpdate:modelValue":t[4]||(t[4]=e=>n.state.currentItem.AllowType=e),size:"large","active-text":"允许","inactive-text":"阻止","active-value":0,"inactive-value":1},null,8,["modelValue"])])])])),_:1},8,["title","modelValue"])])}var T={setup(){const e=(0,p.d)(),t=(0,o.qj)({loading:!1,group:0,currentItem:{ID:0,Name:"",AllowType:1,DataType:0},showEdit:!1,groups:(0,l.Fl)((()=>{let a=e.value.usernames[e.value.username];return a?(0==t.group&&a.Processs.length>0&&(t.group=a.Processs[0].ID),a.Processs):[]})),list:(0,l.Fl)((()=>{let e=t.groups.filter((e=>e.ID==t.group))[0];return e?e.List:[]}))});(0,l.YP)((()=>t.currentItem.Name),(()=>{a(t.currentItem.Name)}));const a=e=>{const a=/^.{0,}(\.exe)$/.test(e),l=/^((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))(\/\d{1,})?$/.test(e);t.currentItem.DataType=a?0:l?2:1,l&&e.indexOf("/")<0&&(t.currentItem.Name=t.currentItem.Name+"/32")},n=e=>{e=e||{Name:"",ID:0,AllowType:1,DataType:0},t.currentItem.Name=e.Name,t.currentItem.ID=e.ID,t.currentItem.AllowType=e.AllowType,t.showEdit=!0},s=a=>{t.loading=!0,(0,m.sz)({UserName:e.value.username,GroupID:t.group,ID:a.ID}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")}))},i=()=>{t.showEdit=!1},u=()=>{t.currentItem.Name=t.currentItem.Name.replace(/^\s|\s$/g,""),t.currentItem.Name&&(t.loading=!0,(0,m.Az)({UserName:e.value.username,GroupID:t.group,Item:t.currentItem}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),t.showEdit=!1,e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")})))};return{state:t,handleNameChange:a,handleAdd:n,handleDel:s,handleEditCancel:i,handleEditSubmit:u}}};const U=(0,v.Z)(T,[["render",I],["__scopeId","data-v-1905f2ff"]]);var N=U,j={props:["modelValue"],emits:["update:modelValue"],components:{Groups:g,Items:N},setup(e,{emit:t}){const a=(0,o.qj)({show:e.modelValue,loading:!1});(0,l.YP)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));(0,p.d)();const n=()=>{a.show=!1};return{state:a,handleCancel:n}}};const z=(0,v.Z)(j,[["render",n]]);var M=z},4140:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Umbrella"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleRule},{default:(0,l.w5)((()=>[(0,l.Uk)("网络"),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2115),s=a(2683),i={setup(){const e=(0,o.$)(),t=(0,s.d)(),a=()=>{e.value.hijack.devices=t.value.devices,e.value.hijack.showRules=!0};return{handleRule:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},2838:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return j}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Groups"),u=(0,l.up)("el-tab-pane"),r=(0,l.up)("Rule"),c=(0,l.up)("el-tabs"),d=(0,l.up)("el-button"),m=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(m,{class:"options",title:"限制组配置","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","close-on-click-modal":!1,"align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l.Wm)(c,{type:"border-card"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{label:"限制组"},{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1}),(0,l.Wm)(u,{label:"限制内容"},{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1})])),_:1})])),_:1},8,["modelValue"])}var o=a(4870);const s={class:"rule-items-wrap flex flex-nowrap flex-column"},i={class:"head t-c flex"},u={class:"flex-1"},r={class:"prevs-wrap"};function c(e,t,a,n,o,c){const d=(0,l.up)("el-button"),m=(0,l.up)("el-table-column"),p=(0,l.up)("EditPen"),h=(0,l.up)("el-icon"),v=(0,l.up)("Delete"),f=(0,l.up)("el-popconfirm"),g=(0,l.up)("el-table"),w=(0,l.up)("el-input"),k=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l.Wm)(d,{onClick:t[0]||(t[0]=e=>n.handleAdd())},{default:(0,l.w5)((()=>[(0,l.Uk)("添加项")])),_:1})]),(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(g,{data:n.state.list,size:"small",border:"",stripe:"",style:{width:"100%"},height:"50vh"},{default:(0,l.w5)((()=>[(0,l.Wm)(m,{prop:"Name",label:"名称"}),(0,l.Wm)(m,{label:"操作",width:"110"},{default:(0,l.w5)((e=>[e.row.ID>1?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Wm)(d,{size:"small",onClick:t=>n.handleAdd(e.row)},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p)])),_:1})])),_:2},1032,["onClick"]),(0,l.Wm)(f,{title:"删除不可逆,是否确定?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.w5)((()=>[(0,l.Wm)(d,{size:"small",type:"danger"},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(v)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])],64)):(0,l.kq)("",!0)])),_:1})])),_:1},8,["data"])])]),(0,l.Wm)(k,{title:""+(0==n.state.currentItem.ID?"添加项":"修改项"),"destroy-on-close":"",modelValue:n.state.showEdit,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.showEdit=e),center:"","close-on-click-modal":!1,"align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleEditCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(d,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleEditSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l.Wm)(w,{modelValue:n.state.currentItem.Name,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.currentItem.Name=e),size:"large",placeholder:"分组名称"},null,8,["modelValue"])])])),_:1},8,["title","modelValue"])])}var d=a(7178),m=a(2331),p=a(2683),h={setup(){const e=(0,p.d)(),t=(0,o.qj)({loading:!1,currentItem:{ID:0,Name:""},showEdit:!1,list:(0,l.Fl)((()=>{let a=e.value.usernames[e.value.username];return a?(0==t.group&&a.Rules.length>0&&(t.group=a.Rules[0].ID),a.Rules):[]}))}),a=e=>{e=e||{Name:"",ID:0},t.currentItem.Name=e.Name,t.currentItem.ID=e.ID,t.showEdit=!0},n=a=>{t.loading=!0,(0,m.U4)({UserName:e.value.username,ID:a.ID}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")}))},s=()=>{t.showEdit=!1},i=()=>{t.currentItem.Name=t.currentItem.Name.replace(/^\s|\s$/g,""),t.currentItem.Name&&(t.loading=!0,(0,m.HP)({UserName:e.value.username,Rule:t.currentItem}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),t.showEdit=!1,e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")})))};return{state:t,handleAdd:a,handleDel:n,handleEditCancel:s,handleEditSubmit:i}}},v=a(89);const f=(0,v.Z)(h,[["render",c],["__scopeId","data-v-75241a7e"]]);var g=f;const w=e=>((0,l.dD)("data-v-b042e218"),e=e(),(0,l.Cn)(),e),k={class:"command-wrap flex flex-column"},y={class:"head t-c flex"},_=w((()=>(0,l._)("div",{class:"flex-1"},null,-1))),C={class:"body flex flex-1"},x={class:"private"},D=w((()=>(0,l._)("div",{class:"flex-1"},null,-1))),W={class:"public"};function b(e,t,a,n,o,s){const i=(0,l.up)("el-option"),u=(0,l.up)("el-select"),r=(0,l.up)("el-button"),c=(0,l.up)("CheckBoxWrap");return(0,l.wg)(),(0,l.iD)("div",k,[(0,l._)("div",y,[(0,l._)("div",null,[(0,l.Wm)(u,{modelValue:n.state.group,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.group=e),placeholder:"选择一个分组",style:{width:"13rem"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.groups,(e=>((0,l.wg)(),(0,l.j4)(i,{key:e.ID,label:e.Name,value:e.ID},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])]),_,(0,l._)("div",null,[(0,l.Wm)(r,{onClick:t[1]||(t[1]=e=>n.handleSave()),loading:n.state.loading},{default:(0,l.w5)((()=>[(0,l.Uk)("保存选择")])),_:1},8,["loading"])])]),(0,l._)("div",C,[(0,l._)("div",x,[(0,l.Wm)(c,{ref:"privateProcess",data:n.state.privateProcess,items:n.state.privateProcessItems,label:"ID",text:"Name",title:"私有程序组"},null,8,["data","items"])]),D,(0,l._)("div",W,[(0,l.Wm)(c,{ref:"publicProcess",data:n.state.publicProcess,items:n.state.publicProcessItems,label:"ID",text:"Name",title:"公共程序组"},null,8,["data","items"])])])])}var V=a(1443),S={components:{CheckBoxWrap:V.Z},setup(){const e=(0,p.d)(),t=(0,l.Fl)((()=>e.value.usernames[e.value.username])),a=e.value.publicUserName,n=(0,l.Fl)((()=>e.value.usernames[a])),s=n.value&&e.value.username!=a,i=(0,o.qj)({loading:!1,group:0,groups:(0,l.Fl)((()=>t.value?(0==i.group&&t.value.Rules.length>0&&(i.group=t.value.Rules[0].ID),t.value.Rules):[])),rule:(0,l.Fl)((()=>{if(t){let e=t.value.Rules.filter((e=>e.ID==i.group))[0];if(e)return e}return{ID:0,Name:"",PrivateProcesss:[],PublicProcesss:[]}})),privateProcess:(0,l.Fl)((()=>t.value?t.value.Processs:[])),privateProcessItems:(0,l.Fl)((()=>t.value?t.value.Processs.filter((e=>i.rule.PrivateProcesss.indexOf(e.ID)>=0)):[])),publicProcess:(0,l.Fl)((()=>s?n.value.Processs:[])),publicProcessItems:(0,l.Fl)((()=>s?n.value.Processs.filter((e=>i.rule.PublicProcesss.indexOf(e.ID)>=0)):[]))});(0,l.YP)((()=>i.show),(e=>{e||setTimeout((()=>{emit("update:modelValue",e)}),300)}));const u=(0,o.iH)(null),r=(0,o.iH)(null),c=()=>{let a=t.value.Rules.filter((e=>e.ID==i.group))[0];a?(a.PrivateProcesss=u.value.getData().map((e=>e.ID)),a.PublicProcesss=r.value.getData().map((e=>e.ID)),i.loading=!0,(0,m.HP)({UserName:e.value.username,Rule:a}).then((t=>{i.loading=!1,t?d.z8.error(t):(d.z8.success("操作成功"),e.value.updateRuleFlag=Date.now())})).catch((()=>{i.loading=!1,d.z8.error("操作失败")}))):d.z8.error("未选择任何限制分组")};return{state:i,handleSave:c,privateProcess:u,publicProcess:r}}};const I=(0,v.Z)(S,[["render",b],["__scopeId","data-v-b042e218"]]);var T=I,U={props:["modelValue"],emits:["update:modelValue"],components:{Groups:g,Rule:T},setup(e,{emit:t}){const a=(0,o.qj)({show:e.modelValue});(0,l.YP)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=()=>{a.show=!1};return{state:a,handleCancel:n}}};const N=(0,v.Z)(U,[["render",n]]);var j=N},6159:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return p}});var l=a(3396),n=a.p+"img/keyboard.0621787b.svg";const o=e=>((0,l.dD)("data-v-54274fe8"),e=e(),(0,l.Cn)(),e),s=o((()=>(0,l._)("img",{src:n,width:"20"},null,-1))),i=[s];function u(e,t,a,n,o,s){return(0,l.wg)(),(0,l.iD)("div",null,[(0,l._)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleKeyBoard&&n.handleKeyBoard(...e))},i)])}var r=a(2115),c={props:["data"],setup(e){const t=(0,r.$)(),a=()=>{t.value.keyboard.devices=[e.data],t.value.keyboard.showKeyBoard=!0};return{handleKeyBoard:a}}},d=a(89);const m=(0,d.Z)(c,[["render",u],["__scopeId","data-v-54274fe8"]]);var p=m},1296:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return v}});var l=a(3396);const n={class:"item"},o={class:"subitem"},s=(0,l._)("span",{class:"label"},"安全选项",-1);function i(e,t,a,i,u,r){const c=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[s,(0,l.Wm)(c,{onClick:i.handleSas},{default:(0,l.w5)((()=>[(0,l.Uk)("Ctrl+Alt+Delete")])),_:1},8,["onClick"])])])}var u=a(6e3),r=a(7178),c=a(2115),d=a(4316),m={setup(){const e=(0,c.$)(),t=()=>{a("确定发送ctrl+alt+delete吗?",d.P)},a=(t,a)=>{u.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{const t=e.value.command.devices.map((e=>e.MachineName));a(t).then((e=>{e?r.z8.success("操作成功"):r.z8.error("操作失败")})).catch((()=>{r.z8.error("操作失败")}))})).catch((()=>{}))};return{pluginState:e,handleSas:t}}},p=a(89);const h=(0,p.Z)(m,[["render",i]]);var v=h},9815:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return w}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("KeyBoard");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.keyboard.showKeyBoard?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.keyboard.showKeyBoard,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.keyboard.showKeyBoard=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115),s=a(7139);const i={class:"keyboard-wrap"},u=["onTouchstart","onTouchend"];function r(e,t,a,n,o,r){const c=(0,l.up)("Close"),d=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("div",i,[(0,l._)("a",{href:"javascript:;",class:"close",onClick:t[0]||(t[0]=(...e)=>n.handleClose&&n.handleClose(...e))},[(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1})]),(0,l._)("h3",null,(0,s.zw)(n.state.name),1),(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.list,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t,class:"flex"},[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e,((e,t)=>((0,l.wg)(),(0,l.iD)("div",{key:t,class:"flex-1 key",style:(0,s.j5)(e.style)},[(0,l._)("div",{class:"inner",onTouchstart:t=>n.handleKeyDown(e),onTouchend:t=>n.handleKeyUp(e)},(0,s.zw)(e.text),41,u)],4)))),128))])))),128))])])}var c=a(4870),d=a(4316),m={setup(){const e=(0,o.$)(),t=(0,c.qj)({name:(0,l.Fl)((()=>e.value.keyboard.devices.length>0?e.value.keyboard.devices[0].MachineName:"unknow")),names:(0,l.Fl)((()=>e.value.keyboard.devices.map((e=>e.MachineName)))),list:[[{text:"1",key:49},{text:"2",key:50},{text:"3",key:51},{text:"4",key:52},{text:"5",key:53}],[{text:"6",key:54},{text:"7",key:55},{text:"8",key:56},{text:"9",key:57},{text:"0",key:48}],[{text:"Esc",style:"flex:0.8",key:27},{text:"F1",key:112},{text:"F4",key:115},{text:"F5",key:116},{text:"F12",key:123},{text:"-",key:109},{text:"+",key:107}],[{text:"Tab",key:9},{text:"Q",key:81},{text:"W",key:87},{text:"E",key:69},{text:"Y",key:89},{text:"Ins",key:45},{text:"Back",key:8}],[{text:"Cap",key:20},{text:"A",key:65},{text:"S",key:83},{text:"D",key:68},{text:"L",key:76},{text:"Enter",key:13}],[{text:"Shift",style:"flex:1.5",key:160},{text:"Z",key:90},{text:"X",key:88},{text:"C",key:67},{text:"V",key:86},{text:"Num",key:144}],[{text:"Ctrl",key:162},{text:"Win",key:91},{text:"Alt",key:18},{text:"Space",key:32}]]}),a=e=>{(0,d.d)(t.names,e.key,0)},n=e=>{(0,d.d)(t.names,e.key,2)},s=()=>{e.value.keyboard.showKeyBoard=!1};return{state:t,handleKeyDown:a,handleKeyUp:n,handleClose:s}}},p=a(89);const h=(0,p.Z)(m,[["render",r],["__scopeId","data-v-359681c4"]]);var v=h,f={components:{KeyBoard:v},setup(){const e=(0,o.$)();return{pluginState:e}}};const g=(0,p.Z)(f,[["render",n]]);var w=g},1811:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396),n=a(7139);const o={href:"javascript:;"},s={class:"light-value"};function i(e,t,a,i,u,r){const c=(0,l.up)("Sunny"),d=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",o,[(0,l._)("span",{class:"light",onClick:t[0]||(t[0]=(...e)=>i.handleLight&&i.handleLight(...e))},[(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1}),(0,l._)("div",{class:"light-bg",style:(0,n.j5)({height:`${i.data.Light.Value}%`})},[(0,l.Wm)(d,{class:"value"},{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1})],4)]),(0,l._)("p",s,(0,n.zw)(i.data.Light.Value),1)])}var u=a(2115),r={props:["data"],setup(e){const t=(0,u.$)(),a=()=>{t.value.light.devices=[e.data],t.value.light.showLightSingle=!0};return{data:e.data,handleLight:a}}},c=a(89);const d=(0,c.Z)(r,[["render",i],["__scopeId","data-v-79103ff6"]]);var m=d},1938:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Sunny"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleLight},{default:(0,l.w5)((()=>[(0,l.Uk)("亮度 "),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2683),s=a(2115),i={setup(){const e=(0,s.$)(),t=(0,o.d)(),a=()=>{e.value.light.devices=t.value.devices,e.value.light.showLight=!0};return{handleLight:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},9107:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return O}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Light"),u=(0,l.up)("LightSingle");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.light.showLight?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.light.showLight,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.light.showLight=e)},null,8,["modelValue"])):(0,l.kq)("",!0),n.pluginState.light.showLightSingle?((0,l.wg)(),(0,l.j4)(u,{key:1,modelValue:n.pluginState.light.showLightSingle,"onUpdate:modelValue":t[1]||(t[1]=e=>n.pluginState.light.showLightSingle=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115),s=a(7139);const i=e=>((0,l.dD)("data-v-244e18ca"),e=e(),(0,l.Cn)(),e),u={class:"command-wrap flex"},r={class:"items"},c={class:"name"},d={class:"light"},m={class:"value"},p=i((()=>(0,l._)("div",{class:"flex-1"},null,-1))),h={class:"commands"},v={class:"slider-wrap flex flex-column"},f={class:"silder flex flex-1"},g={class:"flex-1"};function w(e,t,a,n,o,i){const w=(0,l.up)("Sunny"),k=(0,l.up)("el-icon"),y=(0,l.up)("CheckBoxWrap"),_=(0,l.up)("el-slider"),C=(0,l.up)("PrevBoxWrap"),x=(0,l.up)("el-button"),D=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(D,{class:"options",title:"调节亮度","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(x,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(y,{ref:"items",data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"全选"},{name:(0,l.w5)((e=>[(0,l._)("span",null,[(0,l._)("span",c,(0,s.zw)(e.item.MachineName),1),(0,l._)("strong",d,[(0,l.Wm)(k,null,{default:(0,l.w5)((()=>[(0,l.Wm)(w)])),_:1}),(0,l._)("strong",m,(0,s.zw)(e.item.Light.Value?Math.floor(e.item.Light.Value):e.item.Light.Value)+"%",1)])])])),_:1},8,["data","items"])]),p,(0,l._)("div",h,[(0,l.Wm)(C,{ref:"commands",title:"调节亮度"},{wrap:(0,l.w5)((()=>[(0,l._)("div",v,[(0,l._)("div",f,[(0,l._)("div",g,[(0,l.Wm)(_,{type:"success",onChange:n.handleChangeLight,modelValue:n.state.light,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.light=e),vertical:"",height:"100%"},null,8,["onChange","modelValue"])])])])])),_:1},512)])])])),_:1},8,["modelValue"])}var k=a(4870),y=a(1443),_=a(5291),C=a(7178),x=a(2843);const D=(e,t)=>(0,x.gQ)("light/update",{names:e,value:t});var W=a(2683),b={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:y.Z,PrevBoxWrap:_.Z},setup(e,{emit:t}){const a=(0,W.d)(),n=(0,o.$)(),s=(0,k.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.light.devices)),mute:!1,loading:!1,light:0});(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=()=>{s.show=!1},u=(0,k.iH)(null),r=()=>{let e=u.value.getData();0!=e.length?D(e.map((e=>e.MachineName)),s.light):C.z8.error("未选择任何设备")};return{state:s,globalData:a,devices:u,handleCancel:i,handleChangeLight:r}}},V=a(89);const S=(0,V.Z)(b,[["render",w],["__scopeId","data-v-244e18ca"]]);var I=S;const T={class:"slider-wrap flex flex-column"},U={class:"silder flex flex-1"},N={class:"flex-1"};function j(e,t,a,n,o,s){const i=(0,l.up)("el-slider"),u=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(u,{title:"调节亮度","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{default:(0,l.w5)((()=>[(0,l._)("div",T,[(0,l._)("div",U,[(0,l._)("div",N,[(0,l.Wm)(i,{onChange:n.handleChangeLight,modelValue:n.state.light,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.light=e)},null,8,["onChange","modelValue"])])])])])),_:1},8,["modelValue"])}var z={props:["modelValue","items"],emits:["update:modelValue"],components:{},setup(e,{emit:t}){const a=(0,W.d)(),n=(0,o.$)(),s=(0,k.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.light.devices)),loading:!1,light:n.value.light.devices[0].Light.Value});(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=()=>{s.show=!1},u=()=>{D(s.items.map((e=>e.MachineName)),s.light)};return{state:s,globalData:a,handleCancel:i,handleChangeLight:u}}};const M=(0,V.Z)(z,[["render",j],["__scopeId","data-v-6a9d819b"]]);var P=M,L={components:{Light:I,LightSingle:P},setup(){const e=(0,o.$)();return{pluginState:e}}};const R=(0,V.Z)(L,[["render",n]]);var O=R},1622:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return g}});var l=a(3396);const n={class:"item"},o={class:"subitem"},s=(0,l._)("span",{class:"label"},"屏幕锁定",-1),i={class:"subitem"},u=(0,l._)("span",{class:"label"},"系统锁定",-1);function r(e,t,a,r,c,d){const m=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[s,(0,l.Wm)(m,{onClick:r.handleLockScreen},{default:(0,l.w5)((()=>[(0,l.Uk)("锁定")])),_:1},8,["onClick"]),(0,l.Wm)(m,{onClick:r.handleUnLockScreen},{default:(0,l.w5)((()=>[(0,l.Uk)("解锁")])),_:1},8,["onClick"])]),(0,l._)("div",i,[u,(0,l.Wm)(m,{onClick:r.handleLockSystem},{default:(0,l.w5)((()=>[(0,l.Uk)("锁定(WIN+L)")])),_:1},8,["onClick"])])])}var c=a(6e3),d=a(7178),m=a(2115),p=a(3327),h={setup(){const e=(0,m.$)(),t=()=>{n("确定锁定屏幕吗?",p.m,!0)},a=()=>{n("确定解锁屏幕吗?",p.m,!1)},l=()=>{n("确定解锁系统吗?",p.H,!0)},n=(t,a,l)=>{c.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{const t=e.value.command.devices.map((e=>e.MachineName));a(t,l).then((e=>{e?d.z8.success("操作成功"):d.z8.error("操作失败")})).catch((()=>{d.z8.error("操作失败")}))})).catch((()=>{}))};return{pluginState:e,handleLockScreen:t,handleUnLockScreen:a,handleLockSystem:l}}},v=a(89);const f=(0,v.Z)(h,[["render",r]]);var g=f},3937:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("el-switch"),u=(0,l.up)("el-col");return(0,l.wg)(),(0,l.j4)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"llock",size:"small",onClick:n.handleLock,"model-value":n.data.LLock.LockScreen,"inline-prompt":"","active-text":"锁屏","inactive-text":"锁屏"},null,8,["onClick","model-value"])])),_:1})}var o=a(3327),s=a(2115),i=a(6e3),u=a(7178),r={sort:2,props:["data"],setup(e){(0,s.$)();const t=()=>{let t=e.data.LLock.LockScreen?"确定解除锁屏吗?":"确定开启锁屏吗?";i.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,o.m)([e.data.MachineName],!e.data.LLock.LockScreen).then((e=>{e?u.z8.success("操作成功"):u.z8.error("操作失败")})).catch((()=>{u.z8.error("操作失败")}))})).catch((()=>{}))};return{data:e.data,handleLock:t}}},c=a(89);const d=(0,c.Z)(r,[["render",n],["__scopeId","data-v-5b7c10b5"]]);var m=d},6353:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return r}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Bell"),u=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleMessage&&n.handleMessage(...e))},[(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])}var o=a(2115),s={props:["data"],setup(e){const t=(0,o.$)(),a=()=>{t.value.message.devices=[e.data],t.value.message.showMessage=!0};return{handleMessage:a}}},i=a(89);const u=(0,i.Z)(s,[["render",n]]);var r=u},6980:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Bell"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleMessage},{default:(0,l.w5)((()=>[(0,l.Uk)("提醒"),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2683),s=a(2115),i={setup(){const e=(0,s.$)(),t=(0,o.d)(),a=()=>{e.value.message.devices=t.value.devices,e.value.message.showMessage=!0};return{handleMessage:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},2571:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return I}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ChooseDig");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.message.showMessage?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.message.showMessage,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.message.showMessage=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115);const s=e=>((0,l.dD)("data-v-34040146"),e=e(),(0,l.Cn)(),e),i={class:"command-wrap flex"},u={class:"items"},r=s((()=>(0,l._)("div",{class:"flex-1"},null,-1))),c={class:"prevs-wrap flex flex-column flex-nowrap"},d={class:"prevs"},m=s((()=>(0,l._)("div",{class:"flex-1"},null,-1))),p={class:"times"},h={class:"prev"};function v(e,t,a,n,o,s){const v=(0,l.up)("CheckBoxWrap"),f=(0,l.up)("PrevBoxWrap"),g=(0,l.up)("el-input"),w=(0,l.up)("el-button"),k=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(k,{class:"options",title:"发送提醒","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(w,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(w,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",i,[(0,l._)("div",u,[(0,l.Wm)(v,{ref:"devices",data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"选择设备"},null,8,["data","items"])]),r,(0,l._)("div",c,[(0,l._)("div",d,[(0,l.Wm)(f,{ref:"prevs",data:n.state.prevs,onPrev:n.handlePrev,title:"快捷短语"},null,8,["data","onPrev"])]),m,(0,l._)("div",null,[(0,l._)("div",p,[(0,l.Wm)(g,{modelValue:n.state.sec,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.sec=e),size:"large"},{append:(0,l.w5)((()=>[(0,l.Uk)("秒钟")])),_:1},8,["modelValue"])]),(0,l._)("div",h,[(0,l.Wm)(g,{modelValue:n.state.prev,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.prev=e),type:"textarea",resize:"none",placeholder:"输入提醒消息"},null,8,["modelValue"])])])])])])),_:1},8,["modelValue"])}a(7658);var f=a(4870),g=a(1443),w=a(5291),k=a(7178),y=a(6e3),_=a(9418),C=a(2683),x={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:g.Z,PrevBoxWrap:w.Z},setup(e,{emit:t}){const a=(0,C.d)(),n=(0,o.$)(),s=(0,f.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.message.devices)),prevs:["请注意上课纪律!","请勿玩游戏!","请勿大声喧哗!"],sec:10,prev:"",loading:!1});try{1==n.value.message.devices.length&&n.value.message.devices[0].Share.UserName.Value&&s.prevs.push(`【${n.value.message.devices[0].Share.UserName.Value}】请注意上课纪律!`)}catch(m){}(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=e=>{s.prev=e},u=(0,f.iH)(null),r=(0,f.iH)(null),c=()=>{let e=u.value.getData();0!=e.length?0!=s.prev.length?y.T.confirm("是否确定发送消息?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{s.loading=!0,(0,_.G)(e.map((e=>e.MachineName)),[`start message.win.exe "${s.prev}" ${s.sec}`]).then((e=>{e?k.z8.success("操作成功"):k.z8.error("操作失败"),s.loading=!1})).catch((()=>{s.loading=!1,k.z8.error("操作失败")}))})).catch((()=>{})):k.z8.error("未填写消息"):k.z8.error("未选择任何设备")},d=()=>{s.show=!1};return{state:s,globalData:a,devices:u,prevs:r,handleSubmit:c,handleCancel:d,handlePrev:i}}},D=a(89);const W=(0,D.Z)(x,[["render",v],["__scopeId","data-v-34040146"]]);var b=W,V={components:{ChooseDig:b},setup(){const e=(0,o.$)();return{pluginState:e}}};const S=(0,D.Z)(V,[["render",n]]);var I=S},6744:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return r}});var l=a(3396),n=a(7139);function o(e,t,a,o,s,i){const u=(0,l.up)("el-col");return(0,l.wg)(),(0,l.j4)(u,{span:6,class:"time"},{default:(0,l.w5)((()=>[(0,l._)("span",null,"fps : "+(0,n.zw)(o.data.Report.fps)+" 、 "+(0,n.zw)(o.data.Report.ping)+"ms",1)])),_:1})}var s={sort:-1,props:["data"],setup(e){return{data:e.data}}},i=a(89);const u=(0,i.Z)(s,[["render",o],["__scopeId","data-v-51edd8bd"]]);var r=u},1274:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return d}});var l=a(3396);const n=e=>((0,l.dD)("data-v-3ab1cd5b"),e=e(),(0,l.Cn)(),e),o=n((()=>(0,l._)("span",null,"设置",-1)));function s(e,t,a,n,s,i){const u=(0,l.up)("Help"),r=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleSetting&&n.handleSetting(...e))},[(0,l.Wm)(r,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u)])),_:1}),o])}var i=a(2115),u={sort:0,setup(){const e=(0,i.$)(),t=()=>{e.value.setting.showSetting=!0};return{handleSetting:t}}},r=a(89);const c=(0,r.Z)(u,[["render",s],["__scopeId","data-v-3ab1cd5b"]]);var d=c},5975:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return y}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ChooseDig");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.setting.showSetting?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.setting.showSetting,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.setting.showSetting=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115);const s={class:"setting-wrap"};function i(e,t,a,n,o,i){const u=(0,l.up)("el-input-number"),r=(0,l.up)("el-form-item"),c=(0,l.up)("el-checkbox"),d=(0,l.up)("el-form"),m=(0,l.up)("el-button"),p=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(p,{title:"设置","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[6]||(t[6]=e=>n.state.show=e),center:"","close-on-click-modal":!1,"align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(m,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(m,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",s,[(0,l.Wm)(d,{ref:"ruleFormRef",model:n.state.form,rules:n.state.rules,"label-width":"100px"},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{label:"报告延迟(ms)",prop:"ReportDelay"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{size:"large",modelValue:n.state.form.ReportDelay,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.form.ReportDelay=e),min:17,max:1e3,"controls-position":"right"},null,8,["modelValue"])])),_:1}),(0,l.Wm)(r,{label:"截屏延迟(ms)",prop:"ScreenDelay"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{size:"large",modelValue:n.state.form.ScreenDelay,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.form.ScreenDelay=e),min:17,max:1e3,"controls-position":"right"},null,8,["modelValue"])])),_:1}),(0,l.Wm)(r,{label:"截屏缩放",prop:"ScreenScale"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{size:"large",modelValue:n.state.form.ScreenScale,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.form.ScreenScale=e),min:.1,max:1,step:.1,"controls-position":"right"},null,8,["modelValue"])])),_:1}),(0,l.Wm)(r,{label:"保存配置",prop:"SaveSetting"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{modelValue:n.state.form.SaveSetting,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.form.SaveSetting=e)},{default:(0,l.w5)((()=>[(0,l.Uk)("保存限制配置")])),_:1},8,["modelValue"])])),_:1}),(0,l.Wm)(r,{label:"黑屏唤醒",prop:"WakeUp"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{modelValue:n.state.form.WakeUp,"onUpdate:modelValue":t[4]||(t[4]=e=>n.state.form.WakeUp=e)},{default:(0,l.w5)((()=>[(0,l.Uk)("黑屏时唤醒")])),_:1},8,["modelValue"])])),_:1}),(0,l.Wm)(r,{label:"声音峰值",prop:"VolumeMasterPeak"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{modelValue:n.state.form.VolumeMasterPeak,"onUpdate:modelValue":t[5]||(t[5]=e=>n.state.form.VolumeMasterPeak=e)},{default:(0,l.w5)((()=>[(0,l.Uk)("报告声音峰值")])),_:1},8,["modelValue"])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue"])}var u=a(4870),r=a(1443),c=a(2843);const d=()=>(0,c.gQ)("setting/get"),m=e=>(0,c.gQ)("setting/set",e);var p=a(7178),h={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:r.Z},setup(e,{emit:t}){const a=(0,u.qj)({show:e.modelValue,loading:!1,rules:[],form:{ReportDelay:0,ScreenDelay:0,ScreenScale:0,SaveSetting:!0,WakeUp:!0,VolumeMasterPeak:!0}});(0,l.YP)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=()=>{d().then((e=>{a.form.ReportDelay=e.ReportDelay,a.form.ScreenDelay=e.ScreenDelay,a.form.ScreenScale=e.ScreenScale,a.form.SaveSetting=e.SaveSetting,a.form.WakeUp=e.WakeUp,a.form.VolumeMasterPeak=e.VolumeMasterPeak})).catch((()=>{}))},o=()=>{a.show=!1},s=(0,u.iH)(null),i=()=>{a.loading=!0,m(a.form).then((e=>{a.loading=!1,e?(p.z8.success("操作成功!"),a.show=!1):p.z8.error("操作失败!")})).catch((()=>{a.loading=!1,p.z8.error("操作失败!")}))};return(0,l.bv)((()=>{n()})),{state:a,devices:s,handleCancel:o,handleSubmit:i}}},v=a(89);const f=(0,v.Z)(h,[["render",i],["__scopeId","data-v-398854f9"]]);var g=f,w={components:{ChooseDig:g},setup(){const e=(0,o.$)();return{pluginState:e}}};const k=(0,v.Z)(w,[["render",n]]);var y=k},4704:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return D}});var l=a(3396),n=a(7139);const o=e=>((0,l.dD)("data-v-131f0fcf"),e=e(),(0,l.Cn)(),e),s={key:0,class:"share-lock-wrap"},i={class:"inner"},u={class:"stars"},r={class:"line flex flex-nowrap"},c=o((()=>(0,l._)("span",null,"读题分析",-1))),d={class:"line flex flex-nowrap"},m=o((()=>(0,l._)("span",null,"程序设计",-1))),p={class:"line flex flex-nowrap"},h=o((()=>(0,l._)("span",null,"数据校验",-1)));function v(e,t,a,o,v,f){const g=(0,l.up)("el-checkbox"),w=(0,l.up)("el-rate"),k=(0,l.up)("el-button"),y=(0,l.up)("el-popconfirm");return"ask"==o.data.Share.Lock.Value.val?((0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l._)("h5",null,[(0,l._)("span",null,"【"+(0,n.zw)(o.data.Share.Lock.TypeText)+"】",1),"remark-block"==o.data.Share.Lock.Value.type||"remark-cpp"==o.data.Share.Lock.Value.type?((0,l.wg)(),(0,l.j4)(g,{key:0,modelValue:o.data.Share.Lock.Value.notify,"onUpdate:modelValue":t[0]||(t[0]=e=>o.data.Share.Lock.Value.notify=e),size:"small"},{default:(0,l.w5)((()=>[(0,l.Uk)("广播")])),_:1},8,["modelValue"])):(0,l.kq)("",!0)]),(0,l._)("div",u,["remark-block"==o.data.Share.Lock.Value.type||"remark-cpp"==o.data.Share.Lock.Value.type?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l._)("div",r,[c,(0,l.Wm)(w,{onChange:o.handleStarChange,modelValue:o.data.Share.Lock.Value.star1,"onUpdate:modelValue":t[1]||(t[1]=e=>o.data.Share.Lock.Value.star1=e),size:"large"},null,8,["onChange","modelValue"])]),(0,l._)("div",d,[m,(0,l.Wm)(w,{onChange:o.handleStarChange,modelValue:o.data.Share.Lock.Value.star2,"onUpdate:modelValue":t[2]||(t[2]=e=>o.data.Share.Lock.Value.star2=e),size:"large"},null,8,["onChange","modelValue"])]),(0,l._)("div",p,[h,(0,l.Wm)(w,{onChange:o.handleStarChange,modelValue:o.data.Share.Lock.Value.star3,"onUpdate:modelValue":t[3]||(t[3]=e=>o.data.Share.Lock.Value.star3=e),size:"large"},null,8,["onChange","modelValue"])])],64)):(0,l.kq)("",!0)]),(0,l._)("div",null,[(0,l.Wm)(y,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"确认驳回请求吗?",onConfirm:o.handleReject},{reference:(0,l.w5)((()=>[(0,l.Wm)(k,{loading:o.state.loading,type:"danger",plain:"",round:"",size:"small"},{default:(0,l.w5)((()=>[(0,l.Uk)("驳回")])),_:1},8,["loading"])])),_:1},8,["onConfirm"]),(0,l.Wm)(y,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"确认通过请求吗?",onConfirm:o.handleConfirm},{reference:(0,l.w5)((()=>[(0,l.Wm)(k,{loading:o.state.loading,type:"success",plain:"",round:"",size:"small"},{default:(0,l.w5)((()=>[(0,l.Uk)("确认")])),_:1},8,["loading"])])),_:1},8,["onConfirm"])])])])):(0,l.kq)("",!0)}var f=a(4870),g=a(2843);const w=(e,t)=>(0,g.gQ)("share/update",{name:e,item:t}),k=(e,t,a,l,n)=>(0,g.gQ)("notify/update",{speed:e,msg:t,star1:a,star2:l,star3:n});var y=a(7178),_={props:["data"],setup(e){const t=(0,f.qj)({loading:!1}),a=()=>{t.loading=!0;let a=JSON.parse(JSON.stringify(e.data.Share.Lock.Value));a.val="reject",w(e.data.MachineName,{index:e.data.Share.Lock.Index,value:JSON.stringify(a)}).then((e=>{t.loading=!1,e?y.z8.success("操作成功!"):y.z8.error("操作失败!")})).catch((()=>{t.loading=!1,y.z8.error("操作失败!")}))},l=()=>{t.loading=!0;let a=JSON.parse(JSON.stringify(e.data.Share.Lock.Value));a.val="confirm",e.data.Share.Lock.Value.notify=!1,w(e.data.MachineName,{index:e.data.Share.Lock.Index,value:JSON.stringify(a)}).then((l=>{t.loading=!1,l?(y.z8.success("操作成功!"),a.notify&&k(2,e.data.Share.UserName.Value,a.star1,a.star2,a.star3)):y.z8.error("操作失败!")})).catch((()=>{t.loading=!1,y.z8.error("操作失败!")}))},n=()=>{t.loading=!0;let a=JSON.parse(JSON.stringify(e.data.Share.Lock.Value));w(e.data.MachineName,{index:e.data.Share.Lock.Index,value:JSON.stringify(a)}).then((e=>{t.loading=!1})).catch((()=>{t.loading=!1,y.z8.error("操作失败!")}))};return{data:e.data,state:t,handleReject:a,handleConfirm:l,handleStarChange:n}}},C=a(89);const x=(0,C.Z)(_,[["render",v],["__scopeId","data-v-131f0fcf"]]);var D=x},2592:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396),n=a(7139);const o={key:0,class:"user-name"};function s(e,t,a,s,i,u){return s.data.Share.UserName.Value?((0,l.wg)(),(0,l.iD)("i",o," - "+(0,n.zw)(s.data.Share.UserName.Value),1)):(0,l.kq)("",!0)}var i={props:["data"],setup(e){return{data:e.data}}},u=a(89);const r=(0,u.Z)(i,[["render",s],["__scopeId","data-v-793dbf84"]]);var c=r},5638:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return d}});var l=a(3396),n=a(7139);const o={class:"value"};function s(e,t,a,s,i,u){const r=(0,l.up)("Tools"),c=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("div",null,[(0,l._)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>s.handleSystemOptions&&s.handleSystemOptions(...e))},[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1}),(0,l._)("span",o,(0,n.zw)(a.data.System.RegistrysCount),1)])])}var i=a(2115),u={props:["data"],setup(e){const t=(0,i.$)(),a=()=>{t.value.system.devices=[e.data],t.value.system.showSystemOptions=!0};return{handleSystemOptions:a}}},r=a(89);const c=(0,r.Z)(u,[["render",s],["__scopeId","data-v-53f45bd0"]]);var d=c},313:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return w}});var l=a(3396);const n={class:"item"},o={class:"subitem"},s=(0,l._)("span",{class:"label"},"操作系统",-1),i={class:"subitem"},u=(0,l._)("span",{class:"label"},"系统桌面",-1);function r(e,t,a,r,c,d){const m=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[s,(0,l.Wm)(m,{onClick:r.handleRebotSystem},{default:(0,l.w5)((()=>[(0,l.Uk)("重启")])),_:1},8,["onClick"]),(0,l.Wm)(m,{onClick:r.handleCloseSystem},{default:(0,l.w5)((()=>[(0,l.Uk)("关机")])),_:1},8,["onClick"])]),(0,l._)("div",i,[u,(0,l.Wm)(m,{onClick:r.handleOpenDisktop},{default:(0,l.w5)((()=>[(0,l.Uk)("开启")])),_:1},8,["onClick"]),(0,l.Wm)(m,{onClick:r.handleCloseDisktop},{default:(0,l.w5)((()=>[(0,l.Uk)("关闭")])),_:1},8,["onClick"])])])}var c=a(6e3),d=a(7178),m=a(2115),p=a(9418),h=a(2683),v={setup(){const e=(0,m.$)(),t=((0,h.d)(),()=>{o("确定重启系统吗?","shutdown -r -f -t 00")}),a=()=>{o("确定关闭系统吗?","shutdown -s -f -t 00")},l=()=>{o("确定开启桌面吗?","start explorer.exe")},n=()=>{o("确定关闭桌面吗?",'taskkill /f /t /im "explorer.exe"')},o=(t,a,l)=>{c.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{const t=e.value.command.devices.map((e=>e.MachineName)),n="string"==typeof a?(0,p.G)(t,[a]):a(t,l);n.then((e=>{e?d.z8.success("操作成功"):d.z8.error("操作失败")})).catch((()=>{d.z8.error("操作失败")}))})).catch((()=>{}))};return{pluginState:e,handleRebotSystem:t,handleCloseSystem:a,handleOpenDisktop:l,handleCloseDisktop:n}}},f=a(89);const g=(0,f.Z)(v,[["render",r]]);var w=g},4994:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return I}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("SystemOptions");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.system.showSystemOptions?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.system.showSystemOptions,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.system.showSystemOptions=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115),s=a(7139);const i=e=>((0,l.dD)("data-v-ede9893e"),e=e(),(0,l.Cn)(),e),u={class:"command-wrap common-command-wrap flex"},r={class:"items"},c=i((()=>(0,l._)("div",{class:"flex-1"},null,-1))),d={class:"commands"},m={class:"inner absolute scrollbar"},p={class:"label"},h=i((()=>(0,l._)("span",{class:"flex-1"},null,-1))),v={class:"options"};function f(e,t,a,n,o,i){const f=(0,l.up)("CheckBoxWrap"),g=(0,l.up)("el-switch"),w=(0,l.up)("el-button"),k=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(k,{class:"options",title:"设备选项","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(w,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(w,{type:"success",plain:"",onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(f,{ref:"items",onChange:n.handleDevicesChange,data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"选择设备"},null,8,["onChange","data","items"])]),c,(0,l._)("div",d,[(0,l._)("div",m,[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.options,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t,class:"flex"},[(0,l._)("span",p,(0,s.zw)(e.label),1),h,(0,l._)("div",v,[1==n.pluginState.system.devices.length?((0,l.wg)(),(0,l.j4)(g,{key:0,onChange:t=>n.handleOptionChange(e),modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,"inline-prompt":"","active-text":"禁用","inactive-text":"启用",size:"large"},null,8,["onChange","modelValue","onUpdate:modelValue"])):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Wm)(w,{size:"default",type:"danger",plain:"",onClick:t=>n.handleSubmit(e,!0)},{default:(0,l.w5)((()=>[(0,l.Uk)("禁用")])),_:2},1032,["onClick"]),(0,l.Wm)(w,{size:"default",type:"success",plain:"",onClick:t=>n.handleSubmit(e,!1)},{default:(0,l.w5)((()=>[(0,l.Uk)("开启")])),_:2},1032,["onClick"])],64))])])))),128))])])])])])),_:1},8,["modelValue"])}var g=a(4870),w=a(1443),k=a(5291),y=a(2683),_=a(7800),C=a(7178),x={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:w.Z,PrevBoxWrap:k.Z},setup(e,{emit:t}){const a=(0,y.d)(),n=(0,o.$)(),s=(0,g.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.system.devices)),loading:!1,options:[]});(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=(0,g.iH)(null),u=()=>{s.show=!1},r=()=>{const e=n.value.system.devices.map((e=>e.MachineName)),t=a.value.allDevices.filter((t=>e.indexOf(t.MachineName)>=0)).reduce(((e,t,a)=>(e=Object.assign(e,t.System.RegistryKeys),e)),{}),l=Object.keys(t),o=l.map((e=>{const a=t[e];return{key:e,label:a.Desc,index:a.Index,value:!1}})).filter((e=>e.label)).sort(((e,t)=>e.index-t.index));s.options=o},c=e=>{if(n.value.system.devices=e,r(),1==n.value.system.devices.length){const e=n.value.system.devices[0].MachineName,t=a.value.allDevices.filter((t=>t.MachineName==e))[0];if(t){const e=t.System.RegistryValues,a=s.options;if(e&&e.length==a.length){for(let t=0;t{(0,_.z)(n.value.system.devices.map((e=>e.MachineName)),e.key,e.value).then((()=>{C.z8.success("已执行")})).catch((()=>{C.z8.error("执行失败")}))},m=(e,t)=>{0!=n.value.system.devices.length?(0,_.z)(n.value.system.devices.map((e=>e.MachineName)),e.key,t).then((()=>{C.z8.success("已执行")})).catch((()=>{C.z8.error("执行失败")})):C.z8.error("请选择一个设备")};return{state:s,globalData:a,pluginState:n,items:i,handleCancel:u,handleDevicesChange:c,handleOptionChange:d,handleSubmit:m}}},D=a(89);const W=(0,D.Z)(x,[["render",f],["__scopeId","data-v-ede9893e"]]);var b=W,V={components:{SystemOptions:b},setup(){const e=(0,o.$)();return{pluginState:e}}};const S=(0,D.Z)(V,[["render",n]]);var I=S},6576:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("el-switch"),u=(0,l.up)("el-col");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l.Wm)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"usb",size:"small",onClick:n.handleUSB,disabled:"","model-value":n.usb,"inline-prompt":"","active-text":"U盘","inactive-text":"U盘"},null,8,["onClick","model-value"])])),_:1}),(0,l.Wm)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"usb",size:"small",onClick:n.handleSetting,disabled:"","model-value":n.setting,"inline-prompt":"","active-text":"设置","inactive-text":"设置"},null,8,["onClick","model-value"])])),_:1}),(0,l.Wm)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"usb",size:"small",onClick:n.handleShutdown,disabled:"","model-value":n.shutdown,"inline-prompt":"","active-text":"关机","inactive-text":"关机"},null,8,["onClick","model-value"])])),_:1})],64)}var o=a(2115),s=a(6e3),i=a(7178),u=a(7800),r={sort:4,props:["data"],setup(e){const t=e.data,a=((0,o.$)(),(0,l.Fl)((()=>!(!t.System.RegistryValues||!t.System.RegistryKeys.USBSTOR)&&"1"==t.System.RegistryValues[t.System.RegistryKeys.USBSTOR.Index]))),n=(0,l.Fl)((()=>!(!t.System.RegistryValues||!t.System.RegistryKeys.NoControlPanel)&&"1"==t.System.RegistryValues[t.System.RegistryKeys.NoControlPanel.Index])),r=(0,l.Fl)((()=>!(!t.System.RegistryValues||!t.System.RegistryKeys.NoClose)&&"1"==t.System.RegistryValues[t.System.RegistryKeys.NoClose.Index])),c=(t,a,l)=>new Promise(((n,o)=>{s.T.confirm(a,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,u.z)([e.data.MachineName],t,l).then((e=>{e?(i.z8.success("操作成功"),n()):(i.z8.error("操作失败"),o())})).catch((()=>{i.z8.error("操作失败"),o()}))})).catch((()=>{o()}))})),d=()=>{c("USBSTOR",a.value?"确定启用USB吗?":"确定禁用USB吗?",!a.value)},m=()=>{c("NoControlPanel",n.value?"确定启用设置吗?":"确定禁用设置吗?",!n.value)},p=()=>{const t=!r.value;c("NoClose",r.value?"确定启用关机按钮吗?":"确定禁用关机按钮吗?",t).then((()=>{(0,u.z)([e.data.MachineName],"NoLogOff",t),(0,u.z)([e.data.MachineName],"DisableLockWorkstation",t),(0,u.z)([e.data.MachineName],"HideFastUserSwitching",t),(0,u.z)([e.data.MachineName],"DisableChangePassword",t)}))};return{data:t,usb:a,setting:n,shutdown:r,handleUSB:d,handleSetting:m,handleShutdown:p}}},c=a(89);const d=(0,c.Z)(r,[["render",n],["__scopeId","data-v-fa904c9e"]]);var m=d},4647:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396),n=a(7139);const o={href:"javascript:;"},s={class:"volume-value"};function i(e,t,a,i,u,r){const c=(0,l.up)("Mute"),d=(0,l.up)("el-icon"),m=(0,l.up)("Microphone");return(0,l.wg)(),(0,l.iD)("a",o,[(0,l._)("span",{class:"volume",onClick:t[0]||(t[0]=(...e)=>i.handleVolume&&i.handleVolume(...e))},[i.data.Volume.Mute?((0,l.wg)(),(0,l.j4)(d,{key:0},{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1})):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(m)])),_:1}),(0,l._)("div",{class:"volume-bg",style:(0,n.j5)({height:`${i.data.Volume.Value}%`})},[(0,l.Wm)(d,{class:"value"},{default:(0,l.w5)((()=>[(0,l.Wm)(m)])),_:1})],4)],64))]),(0,l._)("p",s,(0,n.zw)(Math.floor(i.data.Volume.Value)),1)])}var u=a(2115),r={props:["data"],setup(e){const t=(0,u.$)(),a=()=>{t.value.volume.devices=[e.data],t.value.volume.showVolumeSingle=!0};return{data:e.data,handleVolume:a}}},c=a(89);const d=(0,c.Z)(r,[["render",i],["__scopeId","data-v-936167e0"]]);var m=d},1708:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return v}});var l=a(3396);const n={class:"item"},o={class:"subitem"},s=(0,l._)("span",{class:"label"},"系统静音",-1);function i(e,t,a,i,u,r){const c=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[s,(0,l.Wm)(c,{onClick:i.handleOpenMute},{default:(0,l.w5)((()=>[(0,l.Uk)("静音")])),_:1},8,["onClick"]),(0,l.Wm)(c,{onClick:i.handleCloseMute},{default:(0,l.w5)((()=>[(0,l.Uk)("取消")])),_:1},8,["onClick"])])])}var u=a(6e3),r=a(7178),c=a(2115),d=a(8048),m={setup(){const e=(0,c.$)(),t=()=>{l("确定设置静音吗?",d.H,!0)},a=()=>{l("确定取消静音吗?",d.H,!1)},l=(t,a,l)=>{u.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{const t=e.value.command.devices.map((e=>e.MachineName));a(t,l).then((e=>{e?r.z8.success("操作成功"):r.z8.error("操作失败")})).catch((()=>{r.z8.error("操作失败")}))})).catch((()=>{}))};return{pluginState:e,handleOpenMute:t,handleCloseMute:a}}},p=a(89);const h=(0,p.Z)(m,[["render",i]]);var v=h},8029:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Microphone"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleVolume},{default:(0,l.w5)((()=>[(0,l.Uk)("音量"),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2683),s=a(2115),i={setup(){const e=(0,s.$)(),t=(0,o.d)(),a=()=>{e.value.volume.devices=t.value.devices,e.value.volume.showVolume=!0};return{handleVolume:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},4214:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return Z}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Volume"),u=(0,l.up)("VolumeSingle");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.volume.showVolume?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.volume.showVolume,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.volume.showVolume=e)},null,8,["modelValue"])):(0,l.kq)("",!0),n.pluginState.volume.showVolumeSingle?((0,l.wg)(),(0,l.j4)(u,{key:1,modelValue:n.pluginState.volume.showVolumeSingle,"onUpdate:modelValue":t[1]||(t[1]=e=>n.pluginState.volume.showVolumeSingle=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115),s=a(7139);const i=e=>((0,l.dD)("data-v-2cba18e1"),e=e(),(0,l.Cn)(),e),u={class:"command-wrap flex"},r={class:"items"},c={class:"name"},d={class:"volume"},m={class:"value"},p=i((()=>(0,l._)("div",{class:"flex-1"},null,-1))),h={class:"commands"},v={class:"slider-wrap flex flex-column"},f={class:"silder flex flex-1"},g={class:"flex-1"},w={class:"btn"},k={class:"btn"};function y(e,t,a,n,o,i){const y=(0,l.up)("el-button"),_=(0,l.up)("Mute"),C=(0,l.up)("el-icon"),x=(0,l.up)("Microphone"),D=(0,l.up)("CheckBoxWrap"),W=(0,l.up)("el-slider"),b=(0,l.up)("PrevBoxWrap"),V=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(V,{class:"options",title:"调节音量","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(y,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(D,{ref:"devices",data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"全选"},{title:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l.Wm)(y,{size:"small",onClick:n.handleSelectMute},{default:(0,l.w5)((()=>[(0,l.Uk)("状态选择")])),_:1},8,["onClick"])])])),name:(0,l.w5)((e=>[(0,l._)("span",null,[(0,l._)("span",c,(0,s.zw)(e.item.MachineName),1),(0,l._)("strong",d,[e.item.VolumeMute?((0,l.wg)(),(0,l.j4)(C,{key:0},{default:(0,l.w5)((()=>[(0,l.Wm)(_)])),_:1})):((0,l.wg)(),(0,l.j4)(C,{key:1},{default:(0,l.w5)((()=>[(0,l.Wm)(x)])),_:1})),(0,l._)("strong",m,(0,s.zw)(e.item.Volume.Value?Math.floor(e.item.Volume.Value):e.item.Volume.Value)+"%",1)])])])),_:1},8,["data","items"])]),p,(0,l._)("div",h,[(0,l.Wm)(b,{ref:"commands",title:"调节音量"},{wrap:(0,l.w5)((()=>[(0,l._)("div",v,[(0,l._)("div",f,[(0,l._)("div",g,[(0,l.Wm)(W,{onChange:n.handleChangeVolume,modelValue:n.state.volume,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.volume=e),vertical:"",height:"100%"},null,8,["onChange","modelValue"])])]),(0,l._)("div",w,[(0,l.Wm)(y,{onClick:t[1]||(t[1]=e=>n.handleMute(!0))},{default:(0,l.w5)((()=>[(0,l.Uk)("设置静音")])),_:1})]),(0,l._)("div",k,[(0,l.Wm)(y,{onClick:t[2]||(t[2]=e=>n.handleMute(!1))},{default:(0,l.w5)((()=>[(0,l.Uk)("取消静音")])),_:1})])])])),_:1},512)])])])),_:1},8,["modelValue"])}var _=a(4870),C=a(1443),x=a(5291),D=a(7178),W=a(8048),b=a(2683),V={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:C.Z,PrevBoxWrap:x.Z},setup(e,{emit:t}){const a=(0,b.d)(),n=(0,o.$)(),s=(0,_.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.volume.devices)),mute:!1,loading:!1,volume:0});(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=()=>{s.show=!1},u=()=>{s.items=a.value.devices.filter((e=>e.Volume.Mute==s.mute)),D.z8.success(`已选中${s.mute?"静音":"未静音"}设备`),s.mute=!s.mute},r=(0,_.iH)(null),c=e=>{let t=r.value.getData();0!=_items.length?(0,W.H)(t.map((e=>e.MachineName)),e):D.z8.error("未选择任何设备")},d=()=>{let e=r.value.getData();0!=_items.length?(0,W.j)(e.map((e=>e.MachineName)),s.volume/100):D.z8.error("未选择任何设备")};return{state:s,globalData:a,devices:r,handleCancel:i,handleSelectMute:u,handleMute:c,handleChangeVolume:d}}},S=a(89);const I=(0,S.Z)(V,[["render",y],["__scopeId","data-v-2cba18e1"]]);var T=I,U=a.p+"img/volume.5d8f0803.gif";const N=e=>((0,l.dD)("data-v-3ca473a0"),e=e(),(0,l.Cn)(),e),j={class:"slider-wrap flex flex-column"},z={class:"silder flex flex-1"},M={class:"flex-1"},P={key:0,class:"gif"},L=N((()=>(0,l._)("img",{src:U},null,-1))),R=[L];function O(e,t,a,n,o,s){const i=(0,l.up)("el-slider"),u=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(u,{class:"volume-dialog",title:"调节音量","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{default:(0,l.w5)((()=>[(0,l._)("div",j,[(0,l._)("div",z,[(0,l._)("div",M,[(0,l.Wm)(i,{onChange:n.handleChangeVolume,modelValue:n.state.volume,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.volume=e)},null,8,["onChange","modelValue"])])]),n.state.showRecord?((0,l.wg)(),(0,l.iD)("div",P,R)):(0,l.kq)("",!0)])])),_:1},8,["modelValue"])}var E=a(2748),F={props:["modelValue","items"],emits:["update:modelValue"],setup(e,{emit:t}){const a=(0,b.d)(),n=(0,o.$)(),s=(0,_.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.volume.devices)),loading:!1,volume:n.value.volume.devices[0].Volume.Value,showRecord:!1});(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=()=>{s.show=!1},u=()=>{(0,W.j)(s.items.map((e=>e.MachineName)),s.volume/100)},r=()=>{s.showRecord=!0},c=()=>{s.showRecord=!1};return{Mic:E.uc7,state:s,globalData:a,handleCancel:i,handleChangeVolume:u,handleMicMouseDown:r,handleMicMouseUp:c}}};const B=(0,S.Z)(F,[["render",O],["__scopeId","data-v-3ca473a0"]]);var $=B,H={components:{Volume:T,VolumeSingle:$},setup(){const e=(0,o.$)();return{pluginState:e}}};const A=(0,S.Z)(H,[["render",n]]);var Z=A},4611:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("el-switch"),u=(0,l.up)("el-col");return(0,l.wg)(),(0,l.j4)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"volume",size:"small",onClick:n.handleVolumeMute,"model-value":n.data.Volume.Mute,"inline-prompt":"","active-text":"静音","inactive-text":"静音"},null,8,["onClick","model-value"])])),_:1})}var o=a(8048),s=a(6e3),i=a(7178),u=a(2115),r={sort:0,props:["data"],setup(e){(0,u.$)();const t=()=>{let t=e.data.Volume.Mute?"确定取消静音吗?":"确定静音吗?";s.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,o.H)([e.data.MachineName],!e.data.Volume.Mute).then((e=>{e?i.z8.success("操作成功"):i.z8.error("操作失败")})).catch((()=>{i.z8.error("操作失败")}))})).catch((()=>{}))};return{data:e.data,handleVolumeMute:t}}},c=a(89);const d=(0,c.Z)(r,[["render",n],["__scopeId","data-v-87940482"]]);var m=d},3788:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return v}});var l=a(3396);const n={class:"item"},o={class:"subitem"},s=(0,l._)("span",{class:"label"},"屏幕壁纸",-1);function i(e,t,a,i,u,r){const c=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[s,(0,l.Wm)(c,{onClick:i.handleOpenWallpaper},{default:(0,l.w5)((()=>[(0,l.Uk)("打开")])),_:1},8,["onClick"]),(0,l.Wm)(c,{onClick:i.handleCloseWallpaper},{default:(0,l.w5)((()=>[(0,l.Uk)("关闭")])),_:1},8,["onClick"])])])}var u=a(6e3),r=a(7178),c=a(2115),d=a(9528),m={setup(){const e=(0,c.$)(),t=()=>{n("确定打开壁纸吗?",l,!0)},a=()=>{n("确定关闭壁纸吗?",l,!1)},l=(e,t)=>(0,d.i)(e,t,`http://${window.location.hostname}:${window.location.port}/bg.jpg`),n=(t,a,l)=>{u.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{const t=e.value.command.devices.map((e=>e.MachineName));a(t,l).then((e=>{e?r.z8.success("操作成功"):r.z8.error("操作失败")})).catch((()=>{r.z8.error("操作失败")}))})).catch((()=>{}))};return{pluginState:e,handleOpenWallpaper:t,handleCloseWallpaper:a}}},p=a(89);const h=(0,p.Z)(m,[["render",i]]);var v=h},9846:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("el-switch"),u=(0,l.up)("el-col");return(0,l.wg)(),(0,l.j4)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"wallpaper",size:"small",onClick:n.handleWallpaper,"model-value":n.data.Wallpaper.Value,"inline-prompt":"","active-text":"壁纸","inactive-text":"壁纸"},null,8,["onClick","model-value"])])),_:1})}var o=a(9528),s=a(6e3),i=a(7178),u=a(2115),r={sort:3,props:["data"],setup(e){(0,u.$)();const t=()=>{let t=e.data.Wallpaper.Value?"确定关闭壁纸吗?":"确定开启壁纸吗?";s.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,o.i)([e.data.MachineName],!e.data.Wallpaper.Value,`${window.location.origin}/bg.jpg`).then((e=>{e?i.z8.success("操作成功"):i.z8.error("操作失败")})).catch((()=>{i.z8.error("操作失败")}))})).catch((()=>{}))};return{data:e.data,handleWallpaper:t}}},c=a(89);const d=(0,c.Z)(r,[["render",n]]);var m=d},2681:function(e,t,a){var l={"./command/BtnLeft.vue":459,"./keyboard/BtnLeft.vue":6159,"./message/BtnLeft.vue":6353,"./system/BtnLeft.vue":5638};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=2681},6532:function(e,t,a){var l={"./active/BtnRight.vue":6657,"./hijack/BtnRight.vue":116,"./light/BtnRight.vue":1811,"./volume/BtnRight.vue":4647};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=6532},8023:function(e,t,a){var l={"./keyboard/Command.vue":1296,"./llock/Command.vue":1622,"./system/Command.vue":313,"./volume/Command.vue":1708,"./wallpaper/Command.vue":3788};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=8023},8575:function(e,t,a){var l={"./active/FootMenu.vue":1737,"./device/FootMenu.vue":4718,"./hijack/FootMenu.vue":3213,"./setting/FootMenu.vue":1274};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=8575},3136:function(e,t,a){var l={"./command/FootOptionBottom.vue":8196,"./hijack/rules/FootOptionBottom.vue":4140,"./light/FootOptionBottom.vue":1938};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=3136},6736:function(e,t,a){var l={"./active/FootOptionTop.vue":4190,"./message/FootOptionTop.vue":6980,"./volume/FootOptionTop.vue":8029};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=6736},138:function(e,t,a){var l={"./active/Index.vue":7285,"./active/windows/Index.vue":2206,"./command/Index.vue":8754,"./device/Index.vue":2075,"./hijack/Index.vue":2546,"./hijack/process/Index.vue":2244,"./hijack/rules/Index.vue":2838,"./keyboard/Index.vue":9815,"./light/Index.vue":9107,"./message/Index.vue":2571,"./setting/Index.vue":5975,"./system/Index.vue":4994,"./volume/Index.vue":4214};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=138},7138:function(e,t,a){var l={"./active/Screen.vue":6487,"./share/Screen.vue":4704};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=7138},9091:function(e){function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=function(){return[]},t.resolve=t,t.id=9091,e.exports=t},120:function(e,t,a){var l={"./share/TitleLeft.vue":2592};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=120},2648:function(e,t,a){var l={"./hijack/TitleRight.vue":3844};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=2648},345:function(e,t,a){var l={"./llock/Option.vue":3937,"./report/Option.vue":6744,"./system/Option.vue":6576,"./volume/Option.vue":4611,"./wallpaper/Option.vue":9846};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=345},4711:function(e,t,a){var l={"./active/index.js":3325,"./command/index.js":1459,"./device/index.js":181,"./hijack/index.js":1868,"./keyboard/index.js":7217,"./light/index.js":1958,"./llock/index.js":6458,"./message/index.js":2852,"./report/index.js":619,"./screen/index.js":5908,"./setting/index.js":4886,"./share/index.js":6194,"./system/index.js":5817,"./volume/index.js":5507,"./wallpaper/index.js":7242};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=4711}}]); \ No newline at end of file +(self["webpackChunkcmonitor_web"]=self["webpackChunkcmonitor_web"]||[]).push([[110],{7041:function(e,t,a){"use strict";a.d(t,{$K:function(){return s},Kd:function(){return n},Lb:function(){return c},Oq:function(){return u},PC:function(){return i},XD:function(){return o},fm:function(){return r}});var l=a(2843);const n=e=>(0,l.gQ)("active/get",e),o=e=>(0,l.gQ)("active/windows",e),s=(e,t,a)=>(0,l.gQ)("active/disallow",{usernames:e,filenames:t,ids:a||[]}),i=e=>(0,l.gQ)("active/AddGroup",e),u=(e,t)=>(0,l.gQ)("active/DeleteGroup",{username:e,id:t}),r=e=>(0,l.gQ)("active/add",e),c=(e,t,a)=>(0,l.gQ)("active/del",{username:e,groupid:t,id:a})},9418:function(e,t,a){"use strict";a.d(t,{G:function(){return n}});var l=a(2843);const n=(e,t)=>(0,l.gQ)("command/exec",{names:e,commands:t})},2331:function(e,t,a){"use strict";a.d(t,{$c:function(){return n},Az:function(){return u},Gn:function(){return p},HP:function(){return c},U4:function(){return d},XM:function(){return i},Zz:function(){return o},hG:function(){return m},sz:function(){return r},xc:function(){return s}});var l=a(2843);const n=()=>(0,l.gQ)("hijack/info"),o=e=>(0,l.gQ)("hijack/addName",e),s=e=>(0,l.gQ)("hijack/addProcessGroup",e),i=e=>(0,l.gQ)("hijack/deleteProcessGroup",e),u=e=>(0,l.gQ)("hijack/addProcess",e),r=e=>(0,l.gQ)("hijack/deleteProcess",e),c=e=>(0,l.gQ)("hijack/AddRule",e),d=e=>(0,l.gQ)("hijack/deleteRule",e),m=e=>(0,l.gQ)("hijack/UpdateDevices",e),p=e=>(0,l.gQ)("hijack/setRules",e)},4316:function(e,t,a){"use strict";a.d(t,{P:function(){return o},d:function(){return n}});var l=a(2843);const n=(e,t,a)=>(0,l.gQ)("Keyboard/Keyboard",{names:e,input:{key:t,type:a}}),o=e=>(0,l.gQ)("Keyboard/CtrlAltDelete",e)},3327:function(e,t,a){"use strict";a.d(t,{H:function(){return o},m:function(){return n}});var l=a(2843);const n=(e,t)=>(0,l.gQ)("llock/LockScreen",{names:e,value:t}),o=e=>(0,l.gQ)("llock/LockSystem",e)},2843:function(e,t,a){"use strict";a.d(t,{CU:function(){return k},Ke:function(){return y},c9:function(){return f},gQ:function(){return g},tw:function(){return r}});a(7658);var l=a(7178);let n=0,o=null,s="",i=1;const u={},r={connected:!1},c=()=>{const e=Date.now();for(let t in u){const a=u[t];e-a.time>a.timeout&&(a.reject("超时~"),delete u[t])}setTimeout(c,1e3)};c();const d={subs:{},add:function(e,t){"function"==typeof t&&(this.subs[e]||(this.subs[e]=[]),this.subs[e].push(t))},remove(e,t){let a=this.subs[e]||[];for(let l=a.length-1;l>=0;l--)a[l]==t&&a.splice(l,1)},push(e,t){let a=this.subs[e]||[];for(let l=a.length-1;l>=0;l--)a[l](t)}},m=()=>{r.connected=!0,d.push(w,r.connected)},p=e=>{r.connected=!1,d.push(w,r.connected),f()},h=e=>{if("string"!=typeof e.data)return void e.data.arrayBuffer().then((t=>{const a=new DataView(t).getInt8(),l=new FileReader;l.readAsText(e.data.slice(4,4+a),"utf8"),l.onload=()=>{let n=JSON.parse(l.result);n.Content={Name:n.Content,Img:e.data.slice(4+a,e.data.length),ArrayBuffer:t},v(n)}}));let t=JSON.parse(e.data);v(t)},v=e=>{let t=u[e.RequestId];t?(0==e.Code?t.resolve(e.Content):1==e.Code?t.reject(e.Content):255==e.Code?(t.reject(e.Content),t.errHandle||l.z8.error(`${t.path}:${e.Content}`)):d.push(e.Path,e.Content),delete u[e.RequestId]):d.push(e.Path,e.Content)},f=(e=s)=>{null!=o&&o.close(),s=e,o=new WebSocket(s),o.iddd=++i,o.onopen=m,o.onclose=p,o.onmessage=h},g=(e,t={},a=!1,l=15e3)=>new Promise(((s,i)=>{let c=++n;try{u[c]={resolve:s,reject:i,errHandle:a,path:e,time:Date.now(),timeout:l};let n=JSON.stringify({Path:e,RequestId:c,Content:"string"==typeof t?t:JSON.stringify(t)});r.connected&&1==o.readyState?o.send(n):i("网络错误~")}catch(d){i("网络错误~"),delete u[c]}})),w=Symbol(),k=e=>{d.add(w,e)},y=(e,t)=>{d.add(e,t)}},1468:function(e,t,a){"use strict";a.d(t,{FU:function(){return o},gp:function(){return n}});var l=a(2843);const n=()=>(0,l.gQ)("signin/list"),o=e=>(0,l.gQ)("signin/del",e)},7800:function(e,t,a){"use strict";a.d(t,{z:function(){return n}});var l=a(2843);const n=(e,t,a)=>(0,l.gQ)("system/RegistryOptions",{names:e,registry:{name:t,value:a}})},8048:function(e,t,a){"use strict";a.d(t,{H:function(){return o},j:function(){return n}});var l=a(2843);const n=(e,t)=>(0,l.gQ)("volume/update",{names:e,value:t}),o=(e,t)=>(0,l.gQ)("volume/mute",{names:e,value:t})},9528:function(e,t,a){"use strict";a.d(t,{i:function(){return n}});var l=a(2843);const n=(e,t,a="")=>(0,l.gQ)("wallpaper/update",{names:e,value:t,url:a})},3325:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{ActiveWindow:{Title:"",FileName:"",Desc:"",Pid:0,DisallowCount:0,WindowCount:0}}},state:{activeWindow:[{showTimes:!1,showWindows:!1,showChoose:!1,devices:[],showAddWindow:!1,showActiveWindows:!1}]},update(e,t){t.ActiveWindow&&(e.ActiveWindow.Title=t.ActiveWindow.Title,e.ActiveWindow.FileName=t.ActiveWindow.FileName,e.ActiveWindow.Desc=t.ActiveWindow.Desc,e.ActiveWindow.Pid=t.ActiveWindow.Pid,e.ActiveWindow.DisallowCount=t.ActiveWindow.DisallowCount,e.ActiveWindow.WindowCount=t.ActiveWindow.WindowCount||0)}}},1459:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{Command:{}}},state:{command:{showCommand:!1,devices:[]}},init(){},update(e,t){}}},181:function(e,t,a){"use strict";a.r(t),t["default"]={state:{device:{showDevices:!1}}}},1868:function(e,t,a){"use strict";a.r(t);var l=a(2683);t["default"]={field(){return{Hijack:{Upload:0,UploadText:"",Download:0,DownloadText:"",Count:0}}},state:{hijack:{showRules:!1,devices:[],showRuleSetting:!1,showProcessSetting:!1}},timer:0,speedCaches:{},sizeFormat(e){let t=["B","KB","MB","GB","TB"],a=t[0];while((a=t.shift())&&e.toFixed(2)>=1024)e/=1024;return"B"==a?[e,a]:[parseInt(e),a]},globalData:null,init(){this.globalData=(0,l.d)();const e=this.speedCaches,t=this.sizeFormat;this.timer=setInterval((()=>{this.globalData.value.devices.forEach((a=>{let l=e[a.MachineName]||{up:0,down:0};isNaN(l.up)&&(l.up=0),isNaN(l.down)&&(l.down=0),a.Hijack.Upload=a.Hijack.Upload||0,a.Hijack.Download=a.Hijack.Download||0;let n=a.Hijack.Upload-l.up;l.up=a.Hijack.Upload;let o=t(n);a.Hijack.UploadText=`${o[0]}${o[1]}/s`,n=a.Hijack.Download-l.down,l.down=a.Hijack.Download,o=t(n),a.Hijack.DownloadText=`${o[0]}${o[1]}/s`,e[a.MachineName]=l}))}),1e3)},update(e,t){t.Hijack&&(t.Hijack.length>0?(e.Hijack.Upload=t.Hijack[0],e.Hijack.Download=t.Hijack[1],e.Hijack.Count=t.Hijack[2]):(e.Hijack.Upload=t.Hijack.Upload,e.Hijack.Download=t.Hijack.Download,e.Hijack.Count=t.Hijack.Count))}}},7217:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{Keyboard:{}}},state:{keyboard:{showKeyBoard:!1,devices:[]}},init(){},update(e,t){}}},1958:function(e,t,a){"use strict";a.r(t);var l=a(2683);t["default"]={field(){return{Light:{Value:0}}},state:{light:{showLight:!1,showLightSingle:!1,devices:[]}},globalData:null,init(){this.globalData=(0,l.d)()},update(e,t){t.Light&&(e.Light.Value=Math.floor(+t.Light.Value),isNaN(e.Light.Value)&&(e.Light.Value=0))}}},6458:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{LLock:{LockScreen:!1}}},update(e,t){t.LLock&&(e.LLock.LockScreen=t.LLock.LockScreen)}}},2852:function(e,t,a){"use strict";a.r(t),t["default"]={state:{message:{showMessage:!1,devices:[]}}}},619:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return i}});var l=a(2843);const n=(e,t)=>(0,l.gQ)("report/update",{names:e,reportType:t},!1,1e3),o=e=>(0,l.gQ)("report/ping",e,!1,1e3);var s=a(2683),i={field(){return{Report:{fps:0,fpsTimes:0,ping:0,updated:!1}}},globalData:null,init(){this.globalData=(0,s.d)(),this.reportInterval(),this.reportPingInterval(),(0,l.Ke)("/notify/report/pong",(e=>{let t=this.globalData.value.devices.filter((t=>t.MachineName==e.Name))[0];t&&(t.Connected=!0,t.Report.ping=e.Time)})),this.fpsInterval()},uninit(){clearTimeout(this.reportTimer),clearTimeout(this.reportPingTimer)},reportTimer:0,reported:!0,reportInterval(){if(this.reported){this.reported=!1;const e=this.globalData.value.reportNames,t=this.globalData.value.devices;let a=2;t.filter((t=>e.indexOf(t.MachineName)>=0)).forEach((e=>{a&&=Number(e.Report.updated)+1,e.Report.updated=!0})),n(e,a).then((()=>{this.reported=!0,this.reportTimer=setTimeout((()=>{this.reportInterval()}),300)})).catch((()=>{this.reported=!0,this.reportTimer=setTimeout((()=>{this.reportInterval()}),300)}))}else this.reportTimer=setTimeout((()=>{this.reportInterval()}),300)},reportPingTimer:0,reportedPing:!0,reportPingInterval(){if(this.reportedPing){this.reportedPing=!1;let e=Date.now();o(this.globalData.value.reportNames).then((()=>{this.reportedPing=!0;let t=1e3-(Date.now()-e);t<10&&(t=10),this.reportPingTimer=setTimeout((()=>{this.reportPingInterval()}),t)})).catch((()=>{this.reportedPing=!0,this.reportPingTimer=setTimeout((()=>{this.reportPingInterval()}),1e3)}))}else this.reportPingTimer=setTimeout((()=>{this.reportPingInterval()}),1e3)},fpsInterval(){this.globalData.value.devices.forEach((e=>{e.Report.fps=e.Report.fpsTimes,e.Report.fpsTimes=0})),setTimeout((()=>{this.fpsInterval()}),1e3)},update(e,t){e.Report.fpsTimes++}}},5908:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return u}});a(7658);var l=a(2683),n=a(2843);const o=(e,t)=>(0,n.gQ)("screen/full",{names:e,type:t},!1,1e3),s=e=>(0,n.gQ)("screen/region",e,!1,1e3),i=(e,t)=>(0,n.gQ)("screen/clip",{name:e,clip:t},!1,1e3);var u={field(){return{Screen:{displays:[],regionImgs:[],fullImg:null,fullUpdated:!1,width:0,height:0,draw(e,t){this.drawFps(e,t),this.drawRectangle(e,t),this.drawTouch(e,t)},lastInput:0,captureTime:0,fps:{value:0,temp:0},drawFps(e,t){t.lineWidth=5,t.font="bold 60px Arial",t.fillStyle="rgba(0,0,0,0.5)",t.fillText(`FPS : ${this.fps.value} 、${this.captureTime}ms、LT : ${this.lastInput}ms`,50,70),t.lineWidth=2,t.strokeStyle="#fff",t.strokeText(`FPS : ${this.fps.value} 、${this.captureTime}ms 、LT : ${this.lastInput}ms`,50,70)},rectangles:[],drawRectangle(e,t){const a=this.rectangles||[];if(a.length>0&&1==this.touch.scale){t.lineWidth=5,t.strokeStyle="rgba(255,0,0,1)";for(let e=0;e{const n=new Image;n.param=t,n.src=e,n.onload=function(){a(n)}}))},handleScreenFull(e,t){const a=e.Name;if(-1==this.globalData.value.reportNames.indexOf(a))return;let l=this.globalData.value.devices.filter((e=>e.MachineName==a))[0];l&&(l.Screen.fps.temp++,"string"==typeof e.Img?this.imgOnload(`data:image/jpg;base64,${e.Img}`).then((e=>{l.Screen.fullImg=e})):createImageBitmap(e.Img).then((e=>{l.Screen.fullImg=e})))},handleScreenRegion(e,t){const a=e.Name;if(-1==this.globalData.value.reportNames.indexOf(a))return;let l=this.globalData.value.devices.filter((e=>e.MachineName==a))[0];l&&(l.Screen.fps.temp++,e.Img.arrayBuffer().then((t=>{const a=new DataView(t);let n=0;const o=[];while(n{l.Screen.regionImgs=e}))})))},handleScreenRectangles(e,t){const a=e.Name;if(-1==this.globalData.value.reportNames.indexOf(a))return;let l=this.globalData.value.devices.filter((e=>e.MachineName==a))[0];l&&(l.Screen.rectangles=e.Rectangles||[])},subMessage(){(0,n.Ke)("/notify/report/screen/full",((e,t)=>this.handleScreenFull(e,t))),(0,n.Ke)("/notify/report/screen/region",((e,t)=>this.handleScreenRegion(e,t))),(0,n.Ke)("/notify/report/screen/rectangles",((e,t)=>this.handleScreenRectangles(e,t)))},draw(){const e=this.globalData.value.devices.filter((e=>this.globalData.value.reportNames.indexOf(e.MachineName)>=0));for(let a=0;a{this.draw()}))},fpsInterval(){this.globalData.value.devices.forEach((e=>{e.Screen.fps.value=e.Screen.fps.temp,e.Screen.fps.temp=0})),setTimeout((()=>{this.fpsInterval()}),1e3)},clipTimer:0,clipInterver(){this.globalData.value.devices.forEach((e=>{e.Screen.touch.updated&&i(e.MachineName,{x:parseInt(e.Screen.touch.clip.x),y:parseInt(e.Screen.touch.clip.y),w:parseInt(e.Screen.touch.clip.w),h:parseInt(e.Screen.touch.clip.h)}).then((()=>{e.Screen.touch.updated=!1})).catch((()=>{e.Screen.touch.updated=!1}))})),this.clipTimer=setTimeout((()=>{this.clipInterver()}),16)},reported:!0,reportTimer:0,updateFull(){const e=this.globalData.value.reportNames,t=this.globalData.value.devices;let a=2;return t.filter((t=>e.indexOf(t.MachineName)>=0)).forEach((e=>{a&&=Number(e.Screen.fullUpdated)+1,e.Screen.fullUpdated=!0})),o(e,a)},updateRegion(){const e=this.globalData.value.reportNames;return s(e)},reportInterval(e=0){if(this.reported){this.reported=!1;const t=this.updateFull();t.then((()=>{this.reported=!0,this.reportTimer=setTimeout((()=>{this.reportInterval(++e)}),300)})).catch((t=>{console.log(t),this.reported=!0,this.reportTimer=setTimeout((()=>{this.reportInterval(++e)}),300)}))}else this.reportTimer=setTimeout((()=>{this.reportInterval(++e)}),300)},update(e,t){t.Screen&&(e.Screen.lastInput=t.Screen.LT||0,e.Screen.captureTime=t.Screen.CT||0,e.Screen.width=t.Screen.W||0,e.Screen.height=t.Screen.H||0)}}},4886:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{}},state:{setting:{showSetting:!1}}}},6194:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{Share:{KeyBoard:{Index:0,Value:""},UserName:{Index:1,Value:""},Lock:{Index:2,Value:{type:"list",val:"none",star1:0,star2:0,star3:0,notify:!1},TypeText:""},draw(e,t){if(this.KeyBoard.Value){let a=(e.height-100)/2,l=(e.width-50*this.KeyBoard.Value.length)/2;t.font="bold 100px Arial",t.fillStyle="rgba(0,0,0,0.5)",t.fillText(`${this.KeyBoard.Value}`,l,a),t.lineWidth=5,t.strokeStyle="rgba(255,255,255,0.7)",t.strokeText(`${this.KeyBoard.Value}`,l,a)}if("star"==this.Lock.Value.val||"ask"==this.Lock.Value.val){let a="";a=a.padEnd(5,"★");let l=120,n=(e.width-500)/2;t.beginPath(),t.lineWidth=5,t.font="bold 100px Arial",t.strokeStyle="#fff",t.strokeText(a,n,l),t.lineWidth=7,t.strokeStyle="rgba(0,0,0,0.5)",t.strokeText(a,n,l),a="";const o=this.Lock.Value,s=parseInt((o.star1+o.star2+o.star3)/3);a=a.padEnd(s,"☆"),t.lineWidth=2,t.strokeStyle="yellow",t.strokeText(a,n,l),t.closePath()}}}}},init(){},lockTypes:{code:"代码",lock:"锁屏",cmonitor:"班长",flag:"学习目标",class:"课程","remark-block":"图形化点评","remark-cpp":"C++点评"},update(e,t){if(t.Share){if(console.log(t.Share),t.Share.UserName&&(e.Share.UserName.Index=t.Share.UserName.Index,e.Share.UserName.Value=t.Share.UserName.Value),t.Share.Lock&&(e.Share.Lock.Index=t.Share.Lock.Index,t.Share.Lock.Value)){const a=JSON.parse(t.Share.Lock.Value);e.Share.Lock.Value.type=a.type,e.Share.Lock.Value.val=a.val,e.Share.Lock.Value.star1=a.star1||0,e.Share.Lock.Value.star2=a.star2||0,e.Share.Lock.Value.star3=a.star3||0,e.Share.Lock.TypeText=this.lockTypes[a.type]}t.Share.KeyBoard&&(e.Share.KeyBoard.Index=t.Share.KeyBoard.Index,e.Share.KeyBoard.Value=t.Share.KeyBoard.Value)}}}},5817:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{System:{RegistryValues:[],RegistryKeys:{},RegistrysCount:0,Cpu:0,Memory:0,Disk:0,Drives:[],getColor(e){let t="#0bd10b";return e>=.8?t="#fc0202":e>=.5&&(t="#ff9d1c"),t},draw(e,t){const a=10,l=[{text:"cpu",value:this.Cpu/100},{text:"memory",value:this.Memory/100}].concat(this.Drives.map((e=>({text:e.Name.toLowerCase(),value:(1-e.Free/e.Total).toFixed(2)}))));for(let n=0;n+e)),e.System.RegistrysCount=e.System.RegistryValues.filter((e=>"1"==e)).length),t.System.RegKeys&&(e.System.RegistryKeys=t.System.RegKeys))}}},5507:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{Volume:{Value:0,Mute:!1,MasterPeak:0,draw(e,t){this.MasterPeak-=1,this.MasterPeak<0?this.MasterPeak=0:(t.beginPath(),t.fillStyle="#0f0",t.fillRect(0,0,this.MasterPeak/100*e.width,10),t.closePath())}}}},state:{volume:{showVolume:!1,showVolumeSingle:!1,devices:[]}},init(){},update(e,t){t.Volume&&(e.Volume.Value=t.Volume.Value,e.Volume.Mute=t.Volume.Mute,t.Volume.MasterPeak>e.Volume.MasterPeak&&(e.Volume.MasterPeak=t.Volume.MasterPeak))}}},7242:function(e,t,a){"use strict";a.r(t),t["default"]={field(){return{Wallpaper:{Value:!1}}},update(e,t){t.Wallpaper&&(e.Wallpaper.Value=t.Wallpaper.Value)}}},2115:function(e,t,a){"use strict";a.d(t,{$:function(){return i},R:function(){return s}});var l=a(4870),n=a(3396);const o=Symbol(),s=e=>{const t=(0,l.iH)(e);return(0,n.JJ)(o,t),t},i=()=>(0,n.f3)(o)},2683:function(e,t,a){"use strict";a.d(t,{d:function(){return i},e:function(){return s}});var l=a(4870),n=a(3396);const o=Symbol(),s=()=>{const e=(0,l.iH)({username:"",publicUserName:"snltty",usernames:{},connected:!1,updateRuleFlag:0,updateDeviceFlag:0,allDevices:[],devices:(0,n.Fl)((()=>{const t=e.value.usernames[e.value.username];return t?e.value.allDevices.filter((e=>t.Devices.indexOf(e.MachineName)>=0)):[]})),reportNames:[]});return(0,n.JJ)(o,e),e},i=()=>(0,n.f3)(o)},780:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return we}});var l=a(3396);const n={class:"main-wrap flex flex-column flex-nowrap"},o={class:"head"},s={key:0,class:"body flex-1 scrollbar"};function i(e,t,a,i,u,r){const c=(0,l.up)("Head"),d=(0,l.up)("Device");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[(0,l.Wm)(c)]),i.showList?((0,l.wg)(),(0,l.iD)("div",s,[(0,l.Wm)(d)])):(0,l.kq)("",!0)])}const u={class:"username-wrap t-c"},r={class:"port-wrap t-c"};function c(e,t,a,n,o,s){const i=(0,l.up)("el-option"),c=(0,l.up)("el-select"),d=(0,l.up)("el-button"),m=(0,l.up)("el-dialog"),p=(0,l.up)("el-input");return(0,l.wg)(),(0,l.iD)("div",null,[(0,l.Wm)(m,{title:"选择角色","destroy-on-close":"",modelValue:n.showSelectUsername,"onUpdate:modelValue":t[1]||(t[1]=e=>n.showSelectUsername=e),center:"","show-close":!1,"close-on-click-modal":!1,"align-center":"",width:"70%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{type:"success",onClick:n.handleUsername,plain:""},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",u,[(0,l.Wm)(c,{filterable:"","allow-create":"","default-first-option":"",modelValue:n.state.username,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.username=e),onChange:n.handleChange,placeholder:"选择角色",size:"large"},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.usernames,(e=>((0,l.wg)(),(0,l.j4)(i,{key:e,label:e,value:e},null,8,["label","value"])))),128))])),_:1},8,["modelValue","onChange"])])])),_:1},8,["modelValue"]),(0,l.Wm)(m,{title:"管理接口","destroy-on-close":"",modelValue:n.showPort,"onUpdate:modelValue":t[3]||(t[3]=e=>n.showPort=e),center:"","show-close":!1,"close-on-click-modal":!1,"align-center":"",width:"70%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{type:"success",onClick:n.handleConnect,plain:""},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",r,[(0,l.Wm)(p,{modelValue:n.state.api,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.api=e),style:{width:"auto"}},null,8,["modelValue"])])])),_:1},8,["modelValue"])])}var d=a(4870),m=a(2843),p=a(2331),h=a(2483),v=a(2683),f={setup(){const e=(0,v.d)(),t=(0,h.yj)(),a=(0,d.qj)({api:t.query.api?`${window.location.hostname}:${t.query.api}`:localStorage.getItem("api")||`${window.location.hostname}:1801`,usernames:[],username:e.value.username||localStorage.getItem("username")||"",showPort:!1});localStorage.setItem("api",a.api),e.value.username=a.username;const n=(0,l.Fl)((()=>!e.value.username&&e.value.connected)),o=(0,l.Fl)((()=>0==e.value.connected&&a.showPort));(0,l.YP)((()=>e.value.updateRuleFlag),(()=>{s()})),(0,l.YP)((()=>e.value.updateDeviceFlag),(()=>{s()}));const s=()=>{(0,p.$c)().then((t=>{e.value.usernames=t,a.usernames=Object.keys(t)})).catch((()=>{}))},i=()=>{(0,m.c9)(`ws://${a.api}`),localStorage.setItem("api",a.api)},u=()=>{e.value.username=a.username||"",localStorage.setItem("username",e.value.username),document.title=`班长-${e.value.username}`},r=t=>{(0,p.Zz)(t).then((()=>{e.value.updateRuleFlag=Date.now()})).catch((()=>{e.value.updateRuleFlag=Date.now()}))};return(0,l.bv)((()=>{u(),i(),s(),setTimeout((()=>{a.showPort=!0}),100),(0,m.CU)((t=>{t&&(e.value.updateRuleFlag=Date.now())}))})),{state:a,showSelectUsername:n,showPort:o,handleUsername:u,handleConnect:i,handleChange:r}}},g=a(89);const w=(0,g.Z)(f,[["render",c],["__scopeId","data-v-57a222e9"]]);var k=w;const y={class:"device-list-wrap absolute flex flex-column",id:"device-list-wrap"},_={class:"items flex-1 relative scrollbar-1"},C={class:"foot"},x={class:"foot-options"},D={class:"foot-menu"};function W(e,t,a,n,o,s){const i=(0,l.up)("Items"),u=(0,l.up)("FootOptions"),r=(0,l.up)("FootMenu");return(0,l.wg)(),(0,l.iD)("div",y,[(0,l._)("div",_,[(0,l.Wm)(i)]),(0,l._)("div",C,[(0,l._)("div",x,[(0,l.Wm)(u)]),(0,l._)("div",D,[(0,l.Wm)(r)])]),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.indexModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t})))),128))])}const b={class:"foot-wrap"},V={class:"flex"};function S(e,t,a,n,o,s){return(0,l.wg)(),(0,l.iD)("div",b,[(0,l._)("ul",V,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.footMenuModules,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t},[((0,l.wg)(),(0,l.j4)((0,l.LL)(e)))])))),128))])])}var I={components:{},setup(){const e=a(8575),t=e.keys().map((t=>e(t).default)).sort(((e,t)=>e.sort-t.sort));return{footMenuModules:t}}};const T=(0,g.Z)(I,[["render",S],["__scopeId","data-v-27826286"]]);var U=T,N=a(7139);const j=e=>((0,l.dD)("data-v-49866454"),e=e(),(0,l.Cn)(),e),z={class:"foot-options-wrap flex"},M=j((()=>(0,l._)("span",{class:"flex-1"},null,-1))),P={class:"options-btn"},L=j((()=>(0,l._)("span",{class:"flex-1"},null,-1)));function R(e,t,a,n,o,s){const i=(0,l.up)("Refresh"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",z,[(0,l.Wm)(r,{size:"default",plain:"",dark:"",onClick:n.handleRefresh},{default:(0,l.w5)((()=>[(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"]),M,(0,l._)("div",P,[(0,l._)("p",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.footOptionTopModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t})))),128))]),(0,l._)("p",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.footOptionBottomModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t})))),128))])]),L,(0,l.Wm)(r,{size:"default",plain:"",dark:"",onClick:n.handleUpdate},{default:(0,l.w5)((()=>[(0,l.Uk)((0,N.zw)(n.username),1)])),_:1},8,["onClick"])])}var O=a(6e3),E={setup(){const e=a(6736),t=e.keys().map((t=>e(t).default)),n=a(3136),o=n.keys().map((e=>n(e).default)),s=(0,v.d)(),i=(0,l.Fl)((()=>s.value.username)),u=()=>{window.location.reload()},r=()=>{O.T.confirm("是否确定重选角色?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{s.value.username="",localStorage.setItem("username","")})).catch((()=>{}))};return{footOptionTopModules:t,footOptionBottomModules:o,username:i,handleRefresh:u,handleUpdate:r}}};const F=(0,g.Z)(E,[["render",R],["__scopeId","data-v-49866454"]]);var B=F;function $(e,t,a,n,o,s){const i=(0,l.up)("Item"),u=(0,l.up)("el-empty");return n.devices.length>0?((0,l.wg)(!0),(0,l.iD)(l.HY,{key:0},(0,l.Ko)(n.devices,(e=>((0,l.wg)(),(0,l.j4)(i,{key:e.MachineName,data:e},null,8,["data"])))),128)):((0,l.wg)(),(0,l.j4)(u,{key:1,description:"或许你应该先去选择管理设备"}))}const H=e=>((0,l.dD)("data-v-09c8d4b8"),e=e(),(0,l.Cn)(),e),A=H((()=>(0,l._)("div",{class:"bg"},null,-1))),Z={class:"value flex"},K={class:"machine-mame"},q=H((()=>(0,l._)("span",{class:"flex-1"},null,-1))),Y=H((()=>(0,l._)("span",{class:"flex-1"},null,-1))),Q={class:"img"},G={class:"inner"},J=["width","height","id"],X={class:"btns flex"},ee={class:"left"},te=H((()=>(0,l._)("div",{class:"flex-1"},null,-1))),ae={class:"right"},le={class:"options"};function ne(e,t,a,n,o,s){const i=(0,l.up)("el-row");return(0,l.wg)(),(0,l.iD)("div",{class:"device-item",style:(0,N.j5)(n.data.style)},[(0,l._)("dl",null,[(0,l._)("dt",null,[A,(0,l._)("div",Z,[(0,l._)("span",{class:(0,N.C_)(["name",{connected:n.data.Connected}])},[(0,l._)("span",K,(0,N.zw)(n.data.MachineName),1),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.titleLeftModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128))],2),q,((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.titleCenterModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128)),Y,((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.titleRightModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128))])]),(0,l._)("dd",Q,[(0,l._)("div",G,[n.data.Connected&&n.data.Screen.width>0&&n.data.Screen.height>0?((0,l.wg)(),(0,l.iD)("canvas",{key:0,width:n.data.Screen.width,height:n.data.Screen.height,id:`canvas-${n.data.MachineName}`,onDblclick:t[0]||(t[0]=(...e)=>n.handleCanvasReset&&n.handleCanvasReset(...e)),onTouchstart:t[1]||(t[1]=(...e)=>n.handleCanvasTouchstart&&n.handleCanvasTouchstart(...e)),onTouchend:t[2]||(t[2]=(...e)=>n.handleCanvasTouchend&&n.handleCanvasTouchend(...e)),onTouchmove:t[3]||(t[3]=(...e)=>n.handleCanvasTouchmove&&n.handleCanvasTouchmove(...e))},null,40,J)):(0,l.kq)("",!0),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.screenModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128)),(0,l._)("div",X,[(0,l._)("div",ee,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.btnLeftModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128))]),te,(0,l._)("div",ae,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.btnRightModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128))])])])]),(0,l._)("dd",le,[(0,l.Wm)(i,null,{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.optionModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t,data:n.data},null,8,["data"])))),128))])),_:1})])])],4)}var oe={props:{data:{type:Object,default:{}}},setup(e,{emit:t}){const l=e.data,n=a(120),o=n.keys().map((e=>n(e).default)),s=a(9091),i=s.keys().map((e=>s(e).default)),u=a(2648),r=u.keys().map((e=>u(e).default)),c=a(7138),d=c.keys().map((e=>c(e).default)),m=a(2681),p=m.keys().map((e=>m(e).default)),h=a(6532),v=h.keys().map((e=>h(e).default)),f=a(345),g=f.keys().map((e=>f(e).default)).sort(((e,t)=>(e.sort||0)-(t.sort||0))),w=e=>{l.Screen.touchstart&&l.Screen.touchstart(e)},k=e=>{l.Screen.touchend&&l.Screen.touchend(e)},y=e=>{l.Screen.touchmove&&l.Screen.touchmove(e)},_=()=>{l.Screen.reset&&l.Screen.reset()};return{data:l,titleLeftModules:o,titleCenterModules:i,titleRightModules:r,screenModules:d,btnLeftModules:p,btnRightModules:v,optionModules:g,handleCanvasTouchstart:w,handleCanvasTouchend:k,handleCanvasTouchmove:y,handleCanvasReset:_}}};const se=(0,g.Z)(oe,[["render",ne],["__scopeId","data-v-09c8d4b8"]]);var ie=se,ue=a(1468),re={components:{Item:ie},setup(){const e=a(4711),t=e.keys().map((t=>e(t).default));t.forEach((e=>{try{e.init&&e.init()}catch(t){console.log(t)}}));const n=(0,v.d)();(0,l.YP)((()=>n.value.updateDeviceFlag),(()=>{o()}));const o=()=>{(0,ue.gp)().then((e=>{n.value.allDevices=e.map((e=>t.reduce(((e,t,a)=>(t.field&&(e=Object.assign(e,t.field())),e)),e))).sort(((e,t)=>e.MachineName{c()}))})).catch((()=>{}))},s=(0,l.Fl)((()=>((0,l.Y3)((()=>{c()})),n.value.devices))),i=()=>{(0,m.Ke)("/notify/report/report",(e=>{if(-1==n.value.reportNames.indexOf(e.Name))return;"string"==typeof e.Report&&(e.Report=JSON.parse(e.Report));let a=n.value.devices.filter((t=>t.MachineName==e.Name))[0];a&&t.forEach((t=>{t.update&&t.update(a,e.Report)}))}))},u=()=>{(0,l.Y3)((()=>{document.querySelector("#device-list-wrap").querySelector(".items").addEventListener("scroll",c)}))},r=()=>{try{document.querySelector("#device-list-wrap").querySelector(".items").removeEventListener("scroll",c)}catch(e){}},c=()=>{try{const e=document.querySelector("#device-list-wrap").querySelector(".items"),t=e.scrollTop,a=e.querySelectorAll(".device-item");if(0==a.length)return;const l=e.offsetHeight,o=[...a].map(((e,a)=>{const n=e.offsetTop-t,o=n+e.offsetHeight/2,s=Math.abs(o-l/2);return{dom:e,index:a,offset:s}})),s=o.sort(((e,t)=>e.offset-t.offset))[0];for(let n=0;n1?(e=`background-color:rgba(255,255,255,${l});z-index:8;transform: translateZ(-${o}px) `,e+="translateY(30px);"):n>s.index&&s.indexe.index>=s.index-2&&e.index<=s.index+2)).map((e=>e.index));n.value.reportNames=n.value.devices.filter(((e,t)=>i.indexOf(t)>=0)).map((e=>e.MachineName))}catch(e){console.log(e)}};let d=0;const p=()=>{m.tw.connected&&(0,ue.gp)().then((e=>{n.value.allDevices.forEach((t=>{let a=e.filter((e=>e.MachineName==t.MachineName))[0];a&&(t.Connected=a.Connected)}))})).catch((()=>{})),d=setTimeout((()=>{p()}),1e3)};return(0,l.bv)((()=>{o(),u(),c(),i(),p()})),(0,l.Ah)((()=>{r(),clearTimeout(d),t.forEach((e=>{e.uninit&&e.uninit()}))})),{devices:s}}};const ce=(0,g.Z)(re,[["render",$]]);var de=ce,me=a(2115),pe={components:{Items:de,FootMenu:U,FootOptions:B},setup(){const e=a(4711),t=e.keys().map((t=>e(t).default)),l=t.reduce(((e,t,a)=>(t.state&&(e=Object.assign(e,t.state)),e)),{}),n=((0,me.R)(l),a(138)),o=n.keys().map((e=>n(e).default));return{indexModules:o}}};const he=(0,g.Z)(pe,[["render",W],["__scopeId","data-v-041d6b86"]]);var ve=he,fe={components:{Head:k,Device:ve},setup(){const e=(0,v.e)();(0,m.CU)((t=>{e.value.connected=t}));const t=(0,l.Fl)((()=>!!e.value.username&&e.value.connected));return{showList:t}}};const ge=(0,g.Z)(fe,[["render",i],["__scopeId","data-v-6beac69c"]]);var we=ge},1443:function(e,t,a){"use strict";a.d(t,{Z:function(){return f}});var l=a(3396),n=a(7139);const o=e=>((0,l.dD)("data-v-6b36cd30"),e=e(),(0,l.Cn)(),e),s={class:"checkbox-wrap absolute flex flex-column"},i={class:"head flex"},u=o((()=>(0,l._)("span",{class:"flex-1"},null,-1))),r={class:"body flex-1 scrollbar"},c={class:"flex-1"};function d(e,t,a,o,d,m){const p=(0,l.up)("el-checkbox"),h=(0,l.up)("el-checkbox-group");return(0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l._)("span",null,[(0,l.Wm)(p,{indeterminate:o.state.isIndeterminate,modelValue:o.state.checkAll,"onUpdate:modelValue":t[0]||(t[0]=e=>o.state.checkAll=e),onChange:o.handleCheckAllChange,label:o.state.title},null,8,["indeterminate","modelValue","onChange","label"])]),u,(0,l.WI)(e.$slots,"title",{},void 0,!0)]),(0,l._)("div",r,[(0,l.Wm)(h,{modelValue:o.state.checkList,"onUpdate:modelValue":t[1]||(t[1]=e=>o.state.checkList=e),onChange:o.handleChange},{default:(0,l.w5)((()=>[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(o.state.data,((t,a)=>((0,l.wg)(),(0,l.iD)("li",{key:a,class:"flex"},[(0,l._)("div",c,[(0,l.Wm)(p,{label:t[o.state.label]},{default:(0,l.w5)((()=>[(0,l.WI)(e.$slots,"name",{item:t},(()=>[(0,l.Uk)((0,n.zw)(t[o.state.text]),1)]),!0)])),_:2},1032,["label"])]),(0,l.WI)(e.$slots,"oper",{item:t},void 0,!0)])))),128))])])),_:3},8,["modelValue","onChange"])])])}var m=a(4870),p={props:["title","items","data","label","text"],emits:["change"],setup(e,{emit:t}){const a=(0,m.qj)({title:e.title,label:e.label,text:e.text||e.label,data:(0,l.Fl)((()=>e.data)),checkList:e.items.map((t=>t[e.label])),checkAll:!1,isIndeterminate:!1}),n=e=>{a.checkList=e?a.data.map((e=>e[a.label])):[],s(a.checkList)},o=e=>{s(e)},s=e=>{const l=e.length;a.isIndeterminate=l>0&&l0&&l==a.data.length,t("change",a.data.filter((e=>a.checkList.indexOf(e[a.label])>=0)))};(0,l.bv)((()=>{s(a.checkList)}));const i=()=>a.data.filter((e=>a.checkList.indexOf(e[a.label])>=0));return{state:a,handleCheckAllChange:n,handleChange:o,getData:i}}},h=a(89);const v=(0,h.Z)(p,[["render",d],["__scopeId","data-v-6b36cd30"]]);var f=v},5291:function(e,t,a){"use strict";a.d(t,{Z:function(){return f}});var l=a(3396),n=a(7139);const o=e=>((0,l.dD)("data-v-3f1c33d0"),e=e(),(0,l.Cn)(),e),s={class:"checkbox-wrap absolute flex flex-column"},i={class:"head flex"},u=o((()=>(0,l._)("span",{class:"flex-1"},null,-1))),r={class:"body flex-1 scrollbar"},c=["onClick"];function d(e,t,a,o,d,m){return(0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l._)("span",null,(0,n.zw)(o.state.title),1),u]),(0,l._)("div",r,[(0,l.WI)(e.$slots,"wrap",{},(()=>[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(o.state.data,((t,a)=>((0,l.wg)(),(0,l.iD)("li",{key:a,class:"flex"},[(0,l.WI)(e.$slots,"default",{item:t},(()=>[(0,l._)("div",{class:"default",onClick:e=>o.handleClick(t)},(0,n.zw)(t),9,c)]),!0)])))),128))])]),!0)])])}var m=a(4870),p={props:["title","data"],setup(e,{emit:t}){const a=(0,m.qj)({title:e.title,data:(0,l.Fl)((()=>e.data))}),n=e=>{t("prev",e)};return{state:a,handleClick:n}}},h=a(89);const v=(0,h.Z)(p,[["render",d],["__scopeId","data-v-3f1c33d0"]]);var f=v},6657:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396),n=a(7139);const o={href:"javascript:;"},s={class:"window-value"};function i(e,t,a,i,u,r){const c=(0,l.up)("Monitor"),d=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",o,[(0,l._)("span",{class:"window",onClick:t[0]||(t[0]=(...e)=>i.handleWindow&&i.handleWindow(...e))},[(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1})]),(0,l._)("p",s,(0,n.zw)(i.data.ActiveWindow.DisallowCount),1)])}var u=a(2115),r={props:["data"],setup(e){const t=(0,u.$)(),a=()=>{t.value.activeWindow.devices=[e.data],t.value.activeWindow.showChoose=!0};return{data:e.data,handleWindow:a}}},c=a(89);const d=(0,c.Z)(r,[["render",i],["__scopeId","data-v-6807b74e"]]);var m=d},1737:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return d}});var l=a(3396);const n=e=>((0,l.dD)("data-v-00407dd8"),e=e(),(0,l.Cn)(),e),o=n((()=>(0,l._)("span",null,"窗口",-1)));function s(e,t,a,n,s,i){const u=(0,l.up)("Monitor"),r=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleWindows&&n.handleWindows(...e))},[(0,l.Wm)(r,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u)])),_:1}),o])}var i=a(2115),u={sort:1,setup(){const e=(0,i.$)(),t=()=>{e.value.activeWindow.showWindows=!0};return{handleWindows:t}}},r=a(89);const c=(0,r.Z)(u,[["render",s],["__scopeId","data-v-00407dd8"]]);var d=c},4190:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Monitor"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleMessage},{default:(0,l.w5)((()=>[(0,l.Uk)("窗口"),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2683),s=a(2115),i={setup(){const e=(0,s.$)(),t=(0,o.d)(),a=()=>{e.value.activeWindow.devices=t.value.devices,e.value.activeWindow.showChoose=!0};return{handleMessage:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},7285:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return J}});var l=a(3396);const n={class:"active"};function o(e,t,a,o,s,i){const u=(0,l.up)("ActiveTimes"),r=(0,l.up)("Windows"),c=(0,l.up)("ChooseDig"),d=(0,l.up)("AddWindow"),m=(0,l.up)("ActiveWindows");return(0,l.wg)(),(0,l.iD)("div",n,[o.pluginState.activeWindow.showTimes?((0,l.wg)(),(0,l.j4)(u,{key:0,modelValue:o.pluginState.activeWindow.showTimes,"onUpdate:modelValue":t[0]||(t[0]=e=>o.pluginState.activeWindow.showTimes=e)},null,8,["modelValue"])):(0,l.kq)("",!0),o.pluginState.activeWindow.showWindows?((0,l.wg)(),(0,l.j4)(r,{key:1,modelValue:o.pluginState.activeWindow.showWindows,"onUpdate:modelValue":t[1]||(t[1]=e=>o.pluginState.activeWindow.showWindows=e)},null,8,["modelValue"])):(0,l.kq)("",!0),o.pluginState.activeWindow.showChoose?((0,l.wg)(),(0,l.j4)(c,{key:2,modelValue:o.pluginState.activeWindow.showChoose,"onUpdate:modelValue":t[2]||(t[2]=e=>o.pluginState.activeWindow.showChoose=e)},null,8,["modelValue"])):(0,l.kq)("",!0),o.pluginState.activeWindow.showAddWindow?((0,l.wg)(),(0,l.j4)(d,{key:3,modelValue:o.pluginState.activeWindow.showAddWindow,"onUpdate:modelValue":t[3]||(t[3]=e=>o.pluginState.activeWindow.showAddWindow=e)},null,8,["modelValue"])):(0,l.kq)("",!0),o.pluginState.activeWindow.showActiveWindows?((0,l.wg)(),(0,l.j4)(m,{key:4,modelValue:o.pluginState.activeWindow.showActiveWindows,"onUpdate:modelValue":t[4]||(t[4]=e=>o.pluginState.activeWindow.showActiveWindows=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var s=a(7139);const i={class:"wrap flex flex-column"},u={class:"inner flex-1 scrollbar"},r={class:"wrap flex flex-column"},c={class:"inner flex-1 scrollbar"};function d(e,t,a,n,o,d){const m=(0,l.up)("el-button"),p=(0,l.up)("el-progress"),h=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l.Wm)(h,{class:"options",title:"窗口使用时间统计","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(m,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(m,{type:"success",onClick:n.handleCancel,plain:""},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",i,[(0,l._)("h4",null,(0,s.zw)(n.state.startTime)+" - 至今("+(0,s.zw)((n.state.totalTime/1e3).toFixed(2))+"s)",1),(0,l._)("div",u,[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.list,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t},[(0,l._)("dl",null,[(0,l._)("dt",null,[(0,l.Uk)((0,s.zw)(e.Desc)+" ",1),(0,l.Wm)(m,{onClick:t=>n.showTitles(e),size:"small"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.titleLength),1)])),_:2},1032,["onClick"])]),(0,l._)("dd",null,[(0,l.Wm)(p,{percentage:(e.Time/n.state.totalTime*100).toFixed(2)},null,8,["percentage"])])])])))),128))])])])])),_:1},8,["modelValue"]),(0,l.Wm)(h,{class:"options",title:"详细标题","destroy-on-close":"",modelValue:n.state.showTitles,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.showTitles=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(m,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(m,{type:"success",onClick:n.handleCancel,plain:""},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",r,[(0,l._)("h5",null,(0,s.zw)(n.state.currentTime/1e3)+"s",1),(0,l._)("div",c,[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.currentTitles,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t},[(0,l._)("dl",null,[(0,l._)("dt",null,(0,s.zw)(e.t),1),(0,l._)("dd",null,[(0,l.Wm)(p,{percentage:(e.v/n.state.currentTime*100).toFixed(2)},null,8,["percentage"])])])])))),128))])])])])),_:1},8,["modelValue"])],64)}a(7658);var m=a(4870),p=a(7041),h=a(2115),v={props:["modelValue"],emits:["update:modelValue"],components:{},setup(e,{emit:t}){const a=(0,h.$)(),n=(0,m.qj)({show:e.modelValue,loading:!1,startTime:new Date,totalTime:1,list:[],showTitles:!1,currentTitles:[],currentTime:1});(0,l.YP)((()=>n.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{(0,p.Kd)(a.value.activeWindow.devices[0].MachineName).then((e=>{n.startTime=e.StartTime,n.totalTime=e.List.reduce(((e,t,a)=>(t.titleLength=Object.keys(t.Titles).length,e+=t.Time,e)),0),n.list=e.List.sort(((e,t)=>t.Time-e.Time))})).catch((e=>{}))},s=e=>{n.showTitles=!0;let t=[],a=0;for(let l in e.Titles)t.push({t:l,v:e.Titles[l]}),a+=e.Titles[l];n.currentTitles=t.sort(((e,t)=>t.v-e.v)),n.currentTime=a};(0,l.bv)((()=>{o()}));const i=()=>{n.show=!1};return{state:n,handleCancel:i,showTitles:s}}},f=a(89);const g=(0,f.Z)(v,[["render",d],["__scopeId","data-v-7407ef56"]]);var w=g;const k={class:"t-c"};function y(e,t,a,n,o,i){const u=(0,l.up)("el-option"),r=(0,l.up)("el-select"),c=(0,l.up)("el-button"),d=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(d,{title:"添加项","append-to-body":"","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),center:"","align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(c,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(c,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l._)("p",null,"标题:【"+(0,s.zw)(n.state.title)+"】",1),(0,l._)("p",null,"描述:【"+(0,s.zw)(n.state.desc)+"】",1),(0,l._)("p",null,"文件:【"+(0,s.zw)(n.state.filename)+"】",1),(0,l._)("p",k,[(0,l.Wm)(r,{modelValue:n.state.group,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.group=e),placeholder:"选择一个分组",style:{width:"13rem"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.groups,(e=>((0,l.wg)(),(0,l.j4)(u,{key:e.ID,label:e.Name,value:e.ID},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])])])),_:1},8,["modelValue"])}var _=a(2683),C=a(7178),x={props:["modelValue"],emits:["update:modelValue"],components:{},setup(e,{emit:t}){const a=(0,h.$)(),n=(0,_.d)(),o=(0,m.qj)({show:e.modelValue,group:0,title:"",desc:"",filename:"",groups:(0,l.Fl)((()=>{let e=n.value.usernames[n.value.username];return e?(e.Windows.length>0&&0==o.group&&(o.group=e.Windows[0].ID),e.Windows):[]}))});(0,l.YP)((()=>o.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)})),(0,l.bv)((()=>{const e=a.value.activeWindow.devices[0];if(!e)return;const t=e.ActiveWindow.FileName.split("\\");let l=t[t.length-1],n=e.ActiveWindow.Desc;const s=e.ActiveWindow.Title;"Application Frame Host"==n&&(l=s,n=s),o.title=s,o.desc=n,o.filename=l,o.showAdd=!0}));const s=()=>{o.show=!1},i=()=>{(0,p.fm)({username:n.value.username,GroupID:o.group,Item:{ID:0,Name:o.filename,Desc:o.desc}}).then((e=>{e?C.z8.error(`操作失败:${e}`):(C.z8.success("操作成功"),o.show=!1,n.value.updateRuleFlag=Date.now())})).catch((()=>{C.z8.error("操作失败")}))};return{state:o,handleCancel:s,handleSubmit:i}}};const D=(0,f.Z)(x,[["render",y],["__scopeId","data-v-37d67526"]]);var W=D;const b={class:"wrap flex flex-column"},V={class:"inner flex-1 scrollbar"},S={class:"flex-1"},I={class:"btns"};function T(e,t,a,n,o,i){const u=(0,l.up)("Delete"),r=(0,l.up)("el-icon"),c=(0,l.up)("el-button"),d=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(d,{class:"options",title:"当前打开窗口","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(c,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(c,{type:"success",onClick:n.handleCancel,plain:""},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",b,[(0,l._)("div",V,[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.list,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t,class:"flex"},[(0,l._)("div",S,(0,s.zw)(e.title),1),(0,l._)("div",I,[(0,l.Wm)(c,{type:"danger",plain:"",onClick:t=>n.handleCloseActive(e)},{default:(0,l.w5)((()=>[(0,l.Wm)(r,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u)])),_:1})])),_:2},1032,["onClick"])])])))),128))])])])])),_:1},8,["modelValue"])}var U=a(9418),N=a(6e3),j={props:["modelValue"],emits:["update:modelValue"],components:{},setup(e,{emit:t}){const a=(0,h.$)(),n=(0,m.qj)({show:e.modelValue,list:[]});(0,l.YP)((()=>n.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=["Microsoft Text Input Application","DragFileWindowTitle","TrafficMonitor","安装","Program Manager"],s=()=>{(0,p.XD)(a.value.activeWindow.devices[0].MachineName).then((e=>{const t=Object.keys(e).map((t=>({pid:t,title:e[t]}))).filter((e=>-1==o.indexOf(e.title)));n.list=t})).catch((e=>{}))};(0,l.bv)((()=>{s()}));const i=()=>{n.show=!1},u=e=>{const t=e.title,l=e.pid;N.T.confirm(`是否确定关闭焦点窗口?【${t}】`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,U.G)([a.value.activeWindow.devices[0].MachineName],[`taskkill /f /pid ${l}`]).then((e=>{e?(C.z8.success("操作成功"),setTimeout((()=>{s()}),1e3)):C.z8.error("操作失败")})).catch((()=>{C.z8.error("操作失败")}))})).catch((()=>{}))};return{state:n,handleCancel:i,handleCloseActive:u}}};const z=(0,f.Z)(j,[["render",T],["__scopeId","data-v-134f3cec"]]);var M=z,P=a(2206);const L=e=>((0,l.dD)("data-v-87931b18"),e=e(),(0,l.Cn)(),e),R={class:"rule-wrap flex"},O={class:"items"},E=L((()=>(0,l._)("div",{class:"flex-1"},null,-1))),F={class:"Exes flex flex-column"},B={class:"private"},$=L((()=>(0,l._)("div",{class:"flex-1"},null,-1))),H={class:"public"};function A(e,t,a,n,o,s){const i=(0,l.up)("CheckBoxWrap"),u=(0,l.up)("el-button"),r=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(r,{class:"options",title:"阻止窗口","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(u,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(u,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",R,[(0,l._)("div",O,[(0,l.Wm)(i,{ref:"devices",data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"选择设备"},null,8,["data","items"])]),E,(0,l._)("div",F,[(0,l._)("div",B,[(0,l.Wm)(i,{ref:"privateExes",data:n.state.privateExes,items:n.state.currentPrivate,label:"ID",text:"Name",title:"私有窗口"},null,8,["data","items"])]),$,(0,l._)("div",H,[(0,l.Wm)(i,{ref:"publicExes",data:n.state.publicExes,items:n.state.currentPublic,label:"ID",text:"Name",title:"公共窗口"},null,8,["data","items"])])])])])),_:1},8,["modelValue"])}var Z=a(1443),K={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:Z.Z},setup(e,{emit:t}){const a=(0,_.d)(),n=(0,h.$)(),o=(0,l.Fl)((()=>a.value.usernames[a.value.username])),s=a.value.publicUserName,i=(0,l.Fl)((()=>a.value.usernames[s])),u=i.value&&a.value.username!=s,r=(0,m.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.activeWindow.devices)),privateExes:(0,l.Fl)((()=>o.value?o.value.Windows:[])),publicExes:(0,l.Fl)((()=>u?i.value.Windows:[])),loading:!1,currentPrivate:[],currentPublic:[]});(0,l.YP)((()=>r.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)})),(0,l.bv)((()=>{if(1==r.items.length){let e=r.items[0];r.currentPrivate=r.privateExes.filter((t=>e.DisallowRunIds.indexOf(t.ID)>=0)),r.currentPublic=r.publicExes.filter((t=>e.DisallowRunIds.indexOf(t.ID)>=0))}}));const c=(0,m.iH)(null),d=(0,m.iH)(null),v=(0,m.iH)(null),f=()=>{const e=d.value.getData().map((e=>e.ID)),t=r.privateExes.filter((t=>e.indexOf(t.ID)>=0)),a=v.value.getData().map((e=>e.ID)),l=r.publicExes.filter((e=>a.indexOf(e.ID)>=0)),n=t.concat(l).reduce(((e,t,a)=>{let l=t.List.reduce(((e,t,a)=>(e=e.concat(t.Name.split(",")),e)),[]);for(let n=0;n{const e=c.value.getData();0!=e.length?N.T.confirm("如果未选择程序,则视为清空程序,是否确定应用?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{r.loading=!0;const t=f();(0,p.$K)(e.map((e=>e.MachineName)),t.exes,t.ids).then((l=>{r.loading=!1,C.z8.success("操作成功!"),a.value.devices.filter((t=>e.indexOf(t.MachineName)>=0)).forEach((e=>{e.DisallowRunIds=t.ids}))})).catch((e=>{r.loading=!1,C.z8.error("操作失败")}))})).catch((e=>{console.log(e)})):C.z8.error("未选择任何设备")},w=()=>{r.show=!1};return{state:r,globalData:a,devices:c,privateExes:d,publicExes:v,handleSubmit:g,handleCancel:w}}};const q=(0,f.Z)(K,[["render",A],["__scopeId","data-v-87931b18"]]);var Y=q,Q={components:{ActiveTimes:w,Windows:P["default"],ChooseDig:Y,AddWindow:W,ActiveWindows:M},setup(){const e=(0,h.$)();return{pluginState:e}}};const G=(0,f.Z)(Q,[["render",o]]);var J=G},6487:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return g}});var l=a(3396),n=a(7139),o=a(9242);const s={class:"title flex-1"},i={class:"btn"},u={class:"num"};function r(e,t,a,r,c,d){const m=(0,l.up)("CirclePlus"),p=(0,l.up)("el-icon"),h=(0,l.up)("Tickets");return(0,l.wg)(),(0,l.iD)("a",{class:"process flex",href:"javascript:;",onClick:t[2]||(t[2]=(...e)=>r.handleClick&&r.handleClick(...e))},[(0,l._)("span",s,(0,n.zw)(r.data.ActiveWindow.Title),1),(0,l._)("p",i,[(0,l._)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(0,o.iM)(((...e)=>r.handleAddExe&&r.handleAddExe(...e)),["stop"]))},[(0,l.Wm)(p,null,{default:(0,l.w5)((()=>[(0,l.Wm)(m)])),_:1})]),(0,l._)("a",{href:"javascript:;",onClick:t[1]||(t[1]=(0,o.iM)(((...e)=>r.handleShowWindows&&r.handleShowWindows(...e)),["stop"]))},[(0,l.Wm)(p,null,{default:(0,l.w5)((()=>[(0,l.Wm)(h)])),_:1}),(0,l._)("span",u,(0,n.zw)(r.data.ActiveWindow.WindowCount),1)])])])}var c=a(6e3),d=a(7178),m=a(9418),p=a(2115),h={props:["data"],setup(e,{emit:t}){const a=(0,p.$)(),l=()=>{const t=e.data.ActiveWindow.Title,a=e.data.ActiveWindow.Pid;c.T.confirm(`是否确定关闭焦点窗口?【${t}】`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,m.G)([e.data.MachineName],[`taskkill /f /pid ${a}`]).then((e=>{e?d.z8.success("操作成功"):d.z8.error("操作失败")})).catch((()=>{d.z8.error("操作失败")}))})).catch((()=>{}))},n=()=>{a.value.activeWindow.devices=[e.data],a.value.activeWindow.showAddWindow=!0},o=()=>{a.value.activeWindow.devices=[e.data],a.value.activeWindow.showActiveWindows=!0},s=()=>{a.value.activeWindow.devices=[e.data],a.value.activeWindow.showTimes=!0};let i=0;const u=()=>{if(i)return clearTimeout(i),i=0,void s();i=setTimeout((()=>{i=0,l()}),300)};return{data:e.data,handleAddExe:n,handleShowWindows:o,handleClick:u}}},v=a(89);const f=(0,v.Z)(h,[["render",r],["__scopeId","data-v-394c2481"]]);var g=f},2206:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return U}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Groups"),u=(0,l.up)("el-tab-pane"),r=(0,l.up)("Items"),c=(0,l.up)("el-tabs"),d=(0,l.up)("el-button"),m=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(m,{class:"options",title:"窗口限制","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","close-on-click-modal":!1,"align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l.Wm)(c,{type:"border-card"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{label:"窗口分组"},{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1}),(0,l.Wm)(u,{label:"窗口列表"},{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1})])),_:1})])),_:1},8,["modelValue"])}var o=a(4870);const s={class:"window-items-wrap flex flex-nowrap flex-column"},i={class:"head t-c flex"},u={class:"flex-1"},r={class:"prevs-wrap"};function c(e,t,a,n,o,c){const d=(0,l.up)("el-button"),m=(0,l.up)("el-table-column"),p=(0,l.up)("EditPen"),h=(0,l.up)("el-icon"),v=(0,l.up)("Delete"),f=(0,l.up)("el-popconfirm"),g=(0,l.up)("el-table"),w=(0,l.up)("el-input"),k=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l.Wm)(d,{onClick:t[0]||(t[0]=e=>n.handleAdd())},{default:(0,l.w5)((()=>[(0,l.Uk)("添加项")])),_:1})]),(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(g,{data:n.state.list,size:"small",border:"",stripe:"",style:{width:"100%"},height:"50vh"},{default:(0,l.w5)((()=>[(0,l.Wm)(m,{prop:"Name",label:"名称"}),(0,l.Wm)(m,{label:"操作",width:"110"},{default:(0,l.w5)((e=>[e.row.ID>1?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Wm)(d,{size:"small",onClick:t=>n.handleAdd(e.row)},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p)])),_:1})])),_:2},1032,["onClick"]),(0,l.Wm)(f,{title:"删除不可逆,是否确定?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.w5)((()=>[(0,l.Wm)(d,{size:"small",type:"danger"},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(v)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])],64)):(0,l.kq)("",!0)])),_:1})])),_:1},8,["data"])])]),(0,l.Wm)(k,{title:""+(0==n.state.currentItem.ID?"添加项":"修改项"),"destroy-on-close":"",modelValue:n.state.showEdit,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.showEdit=e),center:"","close-on-click-modal":!1,"align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleEditCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(d,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleEditSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l.Wm)(w,{modelValue:n.state.currentItem.Name,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.currentItem.Name=e),size:"large",placeholder:"分组名称"},null,8,["modelValue"])])])),_:1},8,["title","modelValue"])])}var d=a(7178),m=a(7041),p=a(2683),h={setup(){const e=(0,p.d)(),t=(0,o.qj)({loading:!1,currentItem:{ID:0,Name:""},showEdit:!1,list:(0,l.Fl)((()=>{let a=e.value.usernames[e.value.username];return a?(0==t.group&&a.Windows.length>0&&(t.group=a.Windows[0].ID),a.Windows):[]}))}),a=e=>{e=e||{Name:"",ID:0},t.currentItem.Name=e.Name,t.currentItem.ID=e.ID,t.showEdit=!0},n=a=>{t.loading=!0,(0,m.Oq)(e.value.username,a.ID).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")}))},s=()=>{t.showEdit=!1},i=()=>{t.currentItem.Name=t.currentItem.Name.replace(/^\s|\s$/g,""),t.currentItem.Name&&(t.loading=!0,(0,m.PC)({UserName:e.value.username,Group:t.currentItem}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),t.showEdit=!1,e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")})))};return{state:t,handleAdd:a,handleDel:n,handleEditCancel:s,handleEditSubmit:i}}},v=a(89);const f=(0,v.Z)(h,[["render",c],["__scopeId","data-v-3aff4911"]]);var g=f;const w=e=>((0,l.dD)("data-v-d270371c"),e=e(),(0,l.Cn)(),e),k={class:"windows-items-wrap flex flex-nowrap flex-column"},y={class:"head t-c flex"},_=w((()=>(0,l._)("span",{class:"flex-1"},null,-1))),C={class:"flex-1"},x={class:"prevs-wrap"},D={style:{"padding-top":"1rem"}};function W(e,t,a,n,o,s){const i=(0,l.up)("el-option"),u=(0,l.up)("el-select"),r=(0,l.up)("el-button"),c=(0,l.up)("el-table-column"),d=(0,l.up)("EditPen"),m=(0,l.up)("el-icon"),p=(0,l.up)("Delete"),h=(0,l.up)("el-popconfirm"),v=(0,l.up)("el-table"),f=(0,l.up)("el-input"),g=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)("div",k,[(0,l._)("div",y,[(0,l.Wm)(u,{modelValue:n.state.group,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.group=e),placeholder:"选择一个分组",style:{width:"13rem"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.groups,(e=>((0,l.wg)(),(0,l.j4)(i,{key:e.ID,label:e.Name,value:e.ID},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),_,(0,l.Wm)(r,{onClick:t[1]||(t[1]=e=>n.handleAdd())},{default:(0,l.w5)((()=>[(0,l.Uk)("添加项")])),_:1})]),(0,l._)("div",C,[(0,l._)("div",x,[(0,l.Wm)(v,{data:n.state.list,size:"small",border:"",stripe:"",style:{width:"100%"},height:"50vh"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{prop:"Name",label:"名称"}),(0,l.Wm)(c,{prop:"Desc",label:"描述"}),(0,l.Wm)(c,{label:"操作",width:"110"},{default:(0,l.w5)((e=>[(0,l.Wm)(r,{size:"small",onClick:t=>n.handleAdd(e.row)},{default:(0,l.w5)((()=>[(0,l.Wm)(m,null,{default:(0,l.w5)((()=>[(0,l.Wm)(d)])),_:1})])),_:2},1032,["onClick"]),(0,l.Wm)(h,{title:"删除不可逆,是否确定?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.w5)((()=>[(0,l.Wm)(r,{size:"small",type:"danger"},{default:(0,l.w5)((()=>[(0,l.Wm)(m,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data"])])]),(0,l.Wm)(g,{title:""+(0==n.state.currentItem.ID?"添加项":"修改项"),"destroy-on-close":"",modelValue:n.state.showEdit,"onUpdate:modelValue":t[4]||(t[4]=e=>n.state.showEdit=e),center:"","close-on-click-modal":!1,"align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(r,{onClick:n.handleEditCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(r,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleEditSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l._)("p",null,[(0,l.Wm)(f,{modelValue:n.state.currentItem.Desc,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.currentItem.Desc=e),size:"large",placeholder:"名称"},null,8,["modelValue"])]),(0,l._)("p",D,[(0,l.Wm)(f,{modelValue:n.state.currentItem.Name,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.currentItem.Name=e),size:"large",placeholder:"文件,多个逗号间隔,无后缀则按标题处理"},null,8,["modelValue"])])])])),_:1},8,["title","modelValue"])])}var b={setup(){const e=(0,p.d)(),t=(0,o.qj)({loading:!1,group:0,currentItem:{ID:0,Name:"",Desc:""},showEdit:!1,groups:(0,l.Fl)((()=>{let a=e.value.usernames[e.value.username];return a?(0==t.group&&a.Windows.length>0&&(t.group=a.Windows[0].ID),a.Windows):[]})),list:(0,l.Fl)((()=>{let e=t.groups.filter((e=>e.ID==t.group))[0];return e?e.List:[]}))}),a=e=>{e=e||{Name:"",ID:0,Desc:""},t.currentItem.Name=e.Name,t.currentItem.Desc=e.Desc,t.currentItem.ID=e.ID,t.showEdit=!0},n=a=>{t.loading=!0,(0,m.Lb)(e.value.username,t.group,a.ID).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")}))},s=()=>{t.showEdit=!1},i=()=>{t.currentItem.Name=t.currentItem.Name.replace(/^\s|\s$/g,""),t.currentItem.Name&&(t.loading=!0,(0,m.fm)({UserName:e.value.username,GroupID:t.group,Item:t.currentItem}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),t.showEdit=!1,e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")})))};return{state:t,handleAdd:a,handleDel:n,handleEditCancel:s,handleEditSubmit:i}}};const V=(0,v.Z)(b,[["render",W],["__scopeId","data-v-d270371c"]]);var S=V,I={props:["modelValue"],emits:["update:modelValue"],components:{Groups:g,Items:S},setup(e,{emit:t}){const a=(0,o.qj)({show:e.modelValue,loading:!1});(0,l.YP)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));(0,p.d)();const n=()=>{a.show=!1};return{state:a,handleCancel:n}}};const T=(0,v.Z)(I,[["render",n]]);var U=T},459:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return r}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ScaleToOriginal"),u=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("div",null,[(0,l._)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleCommand&&n.handleCommand(...e))},[(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])])}var o=a(2115),s={props:["data"],setup(e){const t=(0,o.$)(),a=()=>{t.value.command.devices=[e.data],t.value.command.showCommand=!0};return{handleCommand:a}}},i=a(89);const u=(0,i.Z)(s,[["render",n],["__scopeId","data-v-28d57024"]]);var r=u},8196:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ScaleToOriginal"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleCommand},{default:(0,l.w5)((()=>[(0,l.Uk)("命令"),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2683),s=a(2115),i={setup(){const e=(0,s.$)(),t=(0,o.d)(),a=()=>{e.value.command.devices=t.value.devices,e.value.command.showCommand=!0};return{handleCommand:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},8754:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return x}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ChooseDig");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.command.showCommand?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.command.showCommand,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.command.showCommand=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115);const s=e=>((0,l.dD)("data-v-668c193e"),e=e(),(0,l.Cn)(),e),i={class:"command-wrap common-command-wrap flex"},u={class:"items"},r=s((()=>(0,l._)("div",{class:"flex-1"},null,-1))),c={class:"commands"},d={class:"inner absolute scrollbar"};function m(e,t,a,n,o,s){const m=(0,l.up)("CheckBoxWrap"),p=(0,l.up)("el-button"),h=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(h,{class:"options",title:"执行命令","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(p,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",i,[(0,l._)("div",u,[(0,l.Wm)(m,{ref:"items",onChange:n.handleDevicesChange,data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"选择设备"},null,8,["onChange","data","items"])]),r,(0,l._)("div",c,[(0,l._)("div",d,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.commandModules,((e,t)=>((0,l.wg)(),(0,l.j4)((0,l.LL)(e),{key:t})))),128))])])])])),_:1},8,["modelValue"])}var p=a(4870),h=a(1443),v=a(5291),f=a(2683),g={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:h.Z,PrevBoxWrap:v.Z},setup(e,{emit:t}){const n=a(8023),s=n.keys().map((e=>n(e).default)),i=(0,f.d)(),u=(0,o.$)(),r=(0,p.qj)({show:e.modelValue,items:(0,l.Fl)((()=>u.value.command.devices)),loading:!1});(0,l.YP)((()=>r.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const c=(0,p.iH)(null),d=()=>{r.show=!1},m=e=>{u.value.command.devices=e};return{state:r,globalData:i,items:c,commandModules:s,handleCancel:d,handleDevicesChange:m}}},w=a(89);const k=(0,w.Z)(g,[["render",m],["__scopeId","data-v-668c193e"]]);var y=k,_={components:{ChooseDig:y},setup(){const e=(0,o.$)();return{pluginState:e}}};const C=(0,w.Z)(_,[["render",n]]);var x=C},4718:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return d}});var l=a(3396);const n=e=>((0,l.dD)("data-v-5e5b55e3"),e=e(),(0,l.Cn)(),e),o=n((()=>(0,l._)("span",null,"设备",-1)));function s(e,t,a,n,s,i){const u=(0,l.up)("Grid"),r=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleDevices&&n.handleDevices(...e))},[(0,l.Wm)(r,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u)])),_:1}),o])}var i=a(2115),u={sort:0,setup(){const e=(0,i.$)(),t=()=>{e.value.device.showDevices=!0};return{handleDevices:t}}},r=a(89);const c=(0,r.Z)(u,[["render",s],["__scopeId","data-v-5e5b55e3"]]);var d=c},2075:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return _}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ChooseDig");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.device.showDevices?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.device.showDevices,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.device.showDevices=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115);const s={class:"devices-wrap"},i={class:"del-btn"};function u(e,t,a,n,o,u){const r=(0,l.up)("Delete"),c=(0,l.up)("el-icon"),d=(0,l.up)("el-popconfirm"),m=(0,l.up)("CheckBoxWrap"),p=(0,l.up)("el-button"),h=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(h,{class:"options",title:"选择你的设备","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","close-on-click-modal":!1,"align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(p,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(p,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",s,[(0,l.Wm)(m,{ref:"devices",data:n.state.list,items:n.state.items,label:"MachineName",text:"MachineName",title:"选择设备"},{oper:(0,l.w5)((e=>[(0,l._)("div",null,[(0,l.Wm)(d,{title:"删除不可逆,是否确认?",onConfirm:t=>n.handleDel(e.item.MachineName)},{reference:(0,l.w5)((()=>[(0,l._)("span",i,[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1})])])),_:2},1032,["onConfirm"])])])),_:1},8,["data","items"])])])),_:1},8,["modelValue"])}var r=a(4870),c=a(1443),d=a(2331),m=a(1468),p=a(7178),h=a(2683),v={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:c.Z},setup(e,{emit:t}){const a=(0,h.d)(),n=(0,r.qj)({show:e.modelValue,loading:!1,list:(0,l.Fl)((()=>a.value.allDevices)),items:(0,l.Fl)((()=>a.value.devices))});(0,l.YP)((()=>n.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const o=()=>{n.show=!1,a.value.updateDeviceFlag=Date.now()},s=e=>{n.loading=!0,(0,m.FU)(e).then((()=>{n.loading=!1,a.value.updateDeviceFlag=Date.now()})).catch((()=>{n.loading=!1}))},i=(0,r.iH)(null),u=()=>{const e=i.value.getData();n.loading=!0,(0,d.hG)({username:a.value.username,devices:e.map((e=>e.MachineName))}).then((e=>{n.loading=!1,a.value.updateDeviceFlag=Date.now(),e?p.z8.error(e):(p.z8.success("操作成功!"),n.show=!1)})).catch((()=>{n.loading=!1,p.z8.error("操作失败!")}))};return(0,l.bv)((()=>{a.value.updateDeviceFlag=Date.now()})),{state:n,devices:i,handleCancel:o,handleSubmit:u,handleDel:s}}},f=a(89);const g=(0,f.Z)(v,[["render",u],["__scopeId","data-v-97145bf0"]]);var w=g,k={components:{ChooseDig:w},setup(){const e=(0,o.$)();return{pluginState:e}}};const y=(0,f.Z)(k,[["render",n]]);var _=y},116:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return d}});var l=a(3396),n=a(7139);const o={class:"value"};function s(e,t,a,s,i,u){const r=(0,l.up)("Umbrella"),c=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>s.handleRule&&s.handleRule(...e))},[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1}),(0,l._)("span",o,(0,n.zw)(s.data.Hijack.Count),1)])}var i=a(2115),u={props:["data"],setup(e){const t=(0,i.$)(),a=()=>{t.value.hijack.devices=[e.data],t.value.hijack.showRules=!0};return{data:e.data,handleRule:a}}},r=a(89);const c=(0,r.Z)(u,[["render",s],["__scopeId","data-v-10febbed"]]);var d=c},3213:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return p}});var l=a(3396);const n=e=>((0,l.dD)("data-v-0672e0ec"),e=e(),(0,l.Cn)(),e),o={href:"javascript:;"},s={class:"el-dropdown-link"},i=n((()=>(0,l._)("span",null,"网络",-1)));function u(e,t,a,n,u,r){const c=(0,l.up)("Umbrella"),d=(0,l.up)("el-icon"),m=(0,l.up)("arrow-down"),p=(0,l.up)("el-dropdown-item"),h=(0,l.up)("el-dropdown-menu"),v=(0,l.up)("el-dropdown");return(0,l.wg)(),(0,l.iD)("a",o,[(0,l.Wm)(v,null,{dropdown:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p,{onClick:n.handleProcess},{default:(0,l.w5)((()=>[(0,l.Uk)("程序配置")])),_:1},8,["onClick"]),(0,l.Wm)(p,{divided:"",onClick:n.handleRule},{default:(0,l.w5)((()=>[(0,l.Uk)("分组配置")])),_:1},8,["onClick"])])),_:1})])),default:(0,l.w5)((()=>[(0,l._)("span",s,[(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1}),i,(0,l.Wm)(d,{class:"el-icon--right"},{default:(0,l.w5)((()=>[(0,l.Wm)(m)])),_:1})])])),_:1})])}var r=a(2115),c={sort:2,setup(){const e=(0,r.$)(),t=()=>{e.value.hijack.showProcessSetting=!0},a=()=>{e.value.hijack.showRuleSetting=!0};return{handleProcess:t,handleRule:a}}},d=a(89);const m=(0,d.Z)(c,[["render",u],["__scopeId","data-v-0672e0ec"]]);var p=m},2546:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return I}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ChooseDig"),u=(0,l.up)("RuleSetting"),r=(0,l.up)("ProcessSetting");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.hijack.showRules?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.hijack.showRules,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.hijack.showRules=e)},null,8,["modelValue"])):(0,l.kq)("",!0),n.pluginState.hijack.showRuleSetting?((0,l.wg)(),(0,l.j4)(u,{key:1,modelValue:n.pluginState.hijack.showRuleSetting,"onUpdate:modelValue":t[1]||(t[1]=e=>n.pluginState.hijack.showRuleSetting=e)},null,8,["modelValue"])):(0,l.kq)("",!0),n.pluginState.hijack.showProcessSetting?((0,l.wg)(),(0,l.j4)(r,{key:2,modelValue:n.pluginState.hijack.showProcessSetting,"onUpdate:modelValue":t[2]||(t[2]=e=>n.pluginState.hijack.showProcessSetting=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115);const s=e=>((0,l.dD)("data-v-1d10a778"),e=e(),(0,l.Cn)(),e),i={class:"rule-wrap flex"},u={class:"items"},r=s((()=>(0,l._)("div",{class:"flex-1"},null,-1))),c={class:"rules flex flex-column"},d={class:"private"},m=s((()=>(0,l._)("div",{class:"flex-1"},null,-1))),p={class:"public"};function h(e,t,a,n,o,s){const h=(0,l.up)("CheckBoxWrap"),v=(0,l.up)("el-button"),f=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(f,{class:"options",title:"网络限制","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(v,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(v,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",i,[(0,l._)("div",u,[(0,l.Wm)(h,{ref:"devices",data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"选择设备"},null,8,["data","items"])]),r,(0,l._)("div",c,[(0,l._)("div",d,[(0,l.Wm)(h,{ref:"privateRules",data:n.state.privateRules,items:n.state.currentPrivate,label:"ID",text:"Name",title:"私有限制"},null,8,["data","items"])]),m,(0,l._)("div",p,[(0,l.Wm)(h,{ref:"publicRules",data:n.state.publicRules,items:n.state.currentPublic,label:"ID",text:"Name",title:"公共限制"},null,8,["data","items"])])])])])),_:1},8,["modelValue"])}a(7658);var v=a(4870),f=a(1443),g=a(7178),w=a(6e3),k=a(2331),y=a(2683),_={props:["modelValue","items"],emits:["update:modelValue"],components:{CheckBoxWrap:f.Z},setup(e,{emit:t}){const a=(0,y.d)(),n=(0,o.$)(),s=(0,l.Fl)((()=>a.value.usernames[a.value.username])),i=a.value.publicUserName,u=(0,l.Fl)((()=>a.value.usernames[i])),r=u.value&&a.value.username!=i,c=(0,v.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.hijack.devices)),privateRules:(0,l.Fl)((()=>s.value?s.value.Rules:[])),publicRules:(0,l.Fl)((()=>r?u.value.Rules:[])),loading:!1,currentPrivate:[],currentPublic:[]});(0,l.YP)((()=>c.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)})),(0,l.bv)((()=>{if(1==c.items.length){let e=c.items[0];c.currentPrivate=c.privateRules.filter((t=>e.RuleIds.indexOf(t.ID)>=0)),c.currentPublic=c.publicRules.filter((t=>e.RuleIds.indexOf(t.ID)>=0))}}));const d=(0,v.iH)(null),m=(0,v.iH)(null),p=(0,v.iH)(null),h=()=>{const e=m.value.getData().map((e=>e.ID)),t=p.value.getData().map((e=>e.ID)),a=s.value,l=u.value,n=a.Rules.filter((t=>e.indexOf(t.ID)>=0)).map((e=>a.Processs.filter((t=>e.PrivateProcesss.indexOf(t.ID)>=0)))),o=l.Rules.filter((e=>t.indexOf(e.ID)>=0)).map((e=>l.Processs.filter((t=>e.PublicProcesss.indexOf(t.ID)>=0)))),i=n.concat(o).reduce(((e,t,a)=>(e=e.concat(t.reduce(((e,t,a)=>(e=e.concat(t.List),e)),[])),e)),[]),r=[];return i.forEach((e=>{0==r.filter((t=>t.Name==e.Name&&t.DataType==e.DataType&&t.AllowType==e.AllowType)).length&&r.push(e)})),{ids:e.concat(t),list:{AllowProcesss:r.filter((e=>0==e.DataType&&0==e.AllowType)).map((e=>e.Name)),DeniedProcesss:r.filter((e=>0==e.DataType&&1==e.AllowType)).map((e=>e.Name)),AllowDomains:r.filter((e=>1==e.DataType&&0==e.AllowType)).map((e=>e.Name)),DeniedDomains:r.filter((e=>1==e.DataType&&1==e.AllowType)).map((e=>e.Name)),AllowIPs:r.filter((e=>2==e.DataType&&0==e.AllowType)).map((e=>e.Name)),DeniedIPs:r.filter((e=>2==e.DataType&&1==e.AllowType)).map((e=>e.Name))}}},f=()=>{const e=d.value.getData();0!=e.length?w.T.confirm("如果未选择任何限制,则视为清空限制,是否确定应用限制?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{c.loading=!0;const t=h();(0,k.Gn)({Devices:e.map((e=>e.MachineName)),Rules:t.list,ids:t.ids}).then((l=>{c.loading=!1,l&&l.length>0?g.z8.error(`操作失败,失败设备:${l.join(",")}`):(g.z8.success("操作成功!"),a.value.devices.filter((t=>e.indexOf(t.MachineName)>=0)).forEach((e=>{e.RuleIds=t.ids})))})).catch((e=>{c.loading=!1,g.z8.error("操作失败")}))})).catch((()=>{})):g.z8.error("未选择任何设备")},_=()=>{c.show=!1};return{state:c,globalData:a,devices:d,privateRules:m,publicRules:p,handleSubmit:f,handleCancel:_}}},C=a(89);const x=(0,C.Z)(_,[["render",h],["__scopeId","data-v-1d10a778"]]);var D=x,W=a(2838),b=a(2244),V={components:{ChooseDig:D,RuleSetting:W["default"],ProcessSetting:b["default"]},setup(){const e=(0,o.$)();return{pluginState:e}}};const S=(0,C.Z)(V,[["render",n]]);var I=S},3844:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396),n=a(7139);const o={class:"speed"};function s(e,t,a,s,i,u){const r=(0,l.up)("Upload"),c=(0,l.up)("el-icon"),d=(0,l.up)("Download");return(0,l.wg)(),(0,l.iD)("span",o,[(0,l._)("span",null,[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1}),(0,l.Uk)(" "+(0,n.zw)(s.data.Hijack.UploadText),1)]),(0,l._)("span",null,[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Wm)(d)])),_:1}),(0,l.Uk)(" "+(0,n.zw)(s.data.Hijack.DownloadText),1)])])}var i={props:["data"],setup(e){return{data:e.data}}},u=a(89);const r=(0,u.Z)(i,[["render",s],["__scopeId","data-v-6a822c73"]]);var c=r},2244:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return M}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Groups"),u=(0,l.up)("el-tab-pane"),r=(0,l.up)("Items"),c=(0,l.up)("el-tabs"),d=(0,l.up)("el-button"),m=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(m,{class:"options",title:"限制程序配置","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","close-on-click-modal":!1,"align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l.Wm)(c,{type:"border-card"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{label:"程序分组"},{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1}),(0,l.Wm)(u,{label:"程序列表"},{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1})])),_:1})])),_:1},8,["modelValue"])}var o=a(4870);const s={class:"process-items-wrap flex flex-nowrap flex-column"},i={class:"head t-c flex"},u={class:"flex-1"},r={class:"prevs-wrap"};function c(e,t,a,n,o,c){const d=(0,l.up)("el-button"),m=(0,l.up)("el-table-column"),p=(0,l.up)("EditPen"),h=(0,l.up)("el-icon"),v=(0,l.up)("Delete"),f=(0,l.up)("el-popconfirm"),g=(0,l.up)("el-table"),w=(0,l.up)("el-input"),k=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l.Wm)(d,{onClick:t[0]||(t[0]=e=>n.handleAdd())},{default:(0,l.w5)((()=>[(0,l.Uk)("添加项")])),_:1})]),(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(g,{data:n.state.list,size:"small",border:"",stripe:"",style:{width:"100%"},height:"50vh"},{default:(0,l.w5)((()=>[(0,l.Wm)(m,{prop:"Name",label:"名称"}),(0,l.Wm)(m,{label:"操作",width:"110"},{default:(0,l.w5)((e=>[e.row.ID>1?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Wm)(d,{size:"small",onClick:t=>n.handleAdd(e.row)},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p)])),_:1})])),_:2},1032,["onClick"]),(0,l.Wm)(f,{title:"删除不可逆,是否确定?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.w5)((()=>[(0,l.Wm)(d,{size:"small",type:"danger"},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(v)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])],64)):(0,l.kq)("",!0)])),_:1})])),_:1},8,["data"])])]),(0,l.Wm)(k,{title:""+(0==n.state.currentItem.ID?"添加项":"修改项"),"destroy-on-close":"",modelValue:n.state.showEdit,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.showEdit=e),center:"","close-on-click-modal":!1,"align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleEditCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(d,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleEditSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l.Wm)(w,{modelValue:n.state.currentItem.Name,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.currentItem.Name=e),size:"large",placeholder:"分组名称"},null,8,["modelValue"])])])),_:1},8,["title","modelValue"])])}var d=a(7178),m=a(2331),p=a(2683),h={setup(){const e=(0,p.d)(),t=(0,o.qj)({loading:!1,currentItem:{ID:0,Name:""},showEdit:!1,list:(0,l.Fl)((()=>{let a=e.value.usernames[e.value.username];return a?(0==t.group&&a.Processs.length>0&&(t.group=a.Processs[0].ID),a.Processs):[]}))}),a=e=>{e=e||{Name:"",ID:0},t.currentItem.Name=e.Name,t.currentItem.ID=e.ID,t.showEdit=!0},n=a=>{t.loading=!0,(0,m.XM)({UserName:e.value.username,ID:a.ID}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")}))},s=()=>{t.showEdit=!1},i=()=>{t.currentItem.Name=t.currentItem.Name.replace(/^\s|\s$/g,""),t.currentItem.Name&&(t.loading=!0,(0,m.xc)({UserName:e.value.username,Group:t.currentItem}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),t.showEdit=!1,e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")})))};return{state:t,handleAdd:a,handleDel:n,handleEditCancel:s,handleEditSubmit:i}}},v=a(89);const f=(0,v.Z)(h,[["render",c],["__scopeId","data-v-270ff067"]]);var g=f,w=a(7139);const k=e=>((0,l.dD)("data-v-1905f2ff"),e=e(),(0,l.Cn)(),e),y={class:"process-items-wrap flex flex-nowrap flex-column"},_={class:"head t-c flex"},C=k((()=>(0,l._)("span",{class:"flex-1"},null,-1))),x={class:"flex-1"},D={class:"prevs-wrap"},W=k((()=>(0,l._)("div",{class:"alert"},[(0,l._)("p",null,"1、黑名单优先"),(0,l._)("p",null,"2、支持进程名,域名,ip(支持掩码)"),(0,l._)("p",null,"3、进程,域名,后序截取判断")],-1))),b={style:{"padding-bottom":"1rem"}},V={class:"t-c",style:{"padding-bottom":"1rem"}},S={class:"t-c"};function I(e,t,a,n,o,s){const i=(0,l.up)("el-option"),u=(0,l.up)("el-select"),r=(0,l.up)("el-button"),c=(0,l.up)("el-table-column"),d=(0,l.up)("EditPen"),m=(0,l.up)("el-icon"),p=(0,l.up)("Delete"),h=(0,l.up)("el-popconfirm"),v=(0,l.up)("el-table"),f=(0,l.up)("el-input"),g=(0,l.up)("el-radio"),k=(0,l.up)("el-radio-group"),I=(0,l.up)("el-switch"),T=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)("div",y,[(0,l._)("div",_,[(0,l.Wm)(u,{modelValue:n.state.group,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.group=e),placeholder:"选择一个分组",style:{width:"13rem"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.groups,(e=>((0,l.wg)(),(0,l.j4)(i,{key:e.ID,label:e.Name,value:e.ID},null,8,["label","value"])))),128))])),_:1},8,["modelValue"]),C,(0,l.Wm)(r,{onClick:t[1]||(t[1]=e=>n.handleAdd())},{default:(0,l.w5)((()=>[(0,l.Uk)("添加项")])),_:1})]),(0,l._)("div",x,[(0,l._)("div",D,[(0,l.Wm)(v,{data:n.state.list,size:"small",border:"",stripe:"",style:{width:"100%"},height:"50vh"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{prop:"Name",label:"名称"},{default:(0,l.w5)((e=>[(0,l._)("strong",{class:(0,w.C_)(`allow-type-${e.row.AllowType}`)},(0,w.zw)(e.row.Name),3)])),_:1}),(0,l.Wm)(c,{label:"操作",width:"110"},{default:(0,l.w5)((e=>[(0,l.Wm)(r,{size:"small",onClick:t=>n.handleAdd(e.row)},{default:(0,l.w5)((()=>[(0,l.Wm)(m,null,{default:(0,l.w5)((()=>[(0,l.Wm)(d)])),_:1})])),_:2},1032,["onClick"]),(0,l.Wm)(h,{title:"删除不可逆,是否确定?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.w5)((()=>[(0,l.Wm)(r,{size:"small",type:"danger"},{default:(0,l.w5)((()=>[(0,l.Wm)(m,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data"])])]),(0,l.Wm)(T,{title:""+(0==n.state.currentItem.ID?"添加项":"修改项"),"destroy-on-close":"",modelValue:n.state.showEdit,"onUpdate:modelValue":t[5]||(t[5]=e=>n.state.showEdit=e),center:"","close-on-click-modal":!1,"align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(r,{onClick:n.handleEditCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(r,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleEditSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[W,(0,l._)("div",b,[(0,l.Wm)(f,{modelValue:n.state.currentItem.Name,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.currentItem.Name=e),size:"large",placeholder:"进程 | 域名 | ip(支持掩码/32)"},null,8,["modelValue"])]),(0,l._)("div",V,[(0,l.Wm)(k,{modelValue:n.state.currentItem.DataType,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.currentItem.DataType=e)},{default:(0,l.w5)((()=>[(0,l.Wm)(g,{label:0},{default:(0,l.w5)((()=>[(0,l.Uk)("进程")])),_:1}),(0,l.Wm)(g,{label:1},{default:(0,l.w5)((()=>[(0,l.Uk)("域名")])),_:1}),(0,l.Wm)(g,{label:2},{default:(0,l.w5)((()=>[(0,l.Uk)("IP")])),_:1})])),_:1},8,["modelValue"])]),(0,l._)("div",S,[(0,l.Wm)(I,{modelValue:n.state.currentItem.AllowType,"onUpdate:modelValue":t[4]||(t[4]=e=>n.state.currentItem.AllowType=e),size:"large","active-text":"允许","inactive-text":"阻止","active-value":0,"inactive-value":1},null,8,["modelValue"])])])])),_:1},8,["title","modelValue"])])}var T={setup(){const e=(0,p.d)(),t=(0,o.qj)({loading:!1,group:0,currentItem:{ID:0,Name:"",AllowType:1,DataType:0},showEdit:!1,groups:(0,l.Fl)((()=>{let a=e.value.usernames[e.value.username];return a?(0==t.group&&a.Processs.length>0&&(t.group=a.Processs[0].ID),a.Processs):[]})),list:(0,l.Fl)((()=>{let e=t.groups.filter((e=>e.ID==t.group))[0];return e?e.List:[]}))});(0,l.YP)((()=>t.currentItem.Name),(()=>{a(t.currentItem.Name)}));const a=e=>{const a=/^.{0,}(\.exe)$/.test(e),l=/^((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))(\/\d{1,})?$/.test(e);t.currentItem.DataType=a?0:l?2:1,l&&e.indexOf("/")<0&&(t.currentItem.Name=t.currentItem.Name+"/32")},n=e=>{e=e||{Name:"",ID:0,AllowType:1,DataType:0},t.currentItem.Name=e.Name,t.currentItem.ID=e.ID,t.currentItem.AllowType=e.AllowType,t.showEdit=!0},s=a=>{t.loading=!0,(0,m.sz)({UserName:e.value.username,GroupID:t.group,ID:a.ID}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")}))},i=()=>{t.showEdit=!1},u=()=>{t.currentItem.Name=t.currentItem.Name.replace(/^\s|\s$/g,""),t.currentItem.Name&&(t.loading=!0,(0,m.Az)({UserName:e.value.username,GroupID:t.group,Item:t.currentItem}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),t.showEdit=!1,e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")})))};return{state:t,handleNameChange:a,handleAdd:n,handleDel:s,handleEditCancel:i,handleEditSubmit:u}}};const U=(0,v.Z)(T,[["render",I],["__scopeId","data-v-1905f2ff"]]);var N=U,j={props:["modelValue"],emits:["update:modelValue"],components:{Groups:g,Items:N},setup(e,{emit:t}){const a=(0,o.qj)({show:e.modelValue,loading:!1});(0,l.YP)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));(0,p.d)();const n=()=>{a.show=!1};return{state:a,handleCancel:n}}};const z=(0,v.Z)(j,[["render",n]]);var M=z},4140:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Umbrella"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleRule},{default:(0,l.w5)((()=>[(0,l.Uk)("网络"),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2115),s=a(2683),i={setup(){const e=(0,o.$)(),t=(0,s.d)(),a=()=>{e.value.hijack.devices=t.value.devices,e.value.hijack.showRules=!0};return{handleRule:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},2838:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return j}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Groups"),u=(0,l.up)("el-tab-pane"),r=(0,l.up)("Rule"),c=(0,l.up)("el-tabs"),d=(0,l.up)("el-button"),m=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(m,{class:"options",title:"限制组配置","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","close-on-click-modal":!1,"align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l.Wm)(c,{type:"border-card"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{label:"限制组"},{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1}),(0,l.Wm)(u,{label:"限制内容"},{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1})])),_:1})])),_:1},8,["modelValue"])}var o=a(4870);const s={class:"rule-items-wrap flex flex-nowrap flex-column"},i={class:"head t-c flex"},u={class:"flex-1"},r={class:"prevs-wrap"};function c(e,t,a,n,o,c){const d=(0,l.up)("el-button"),m=(0,l.up)("el-table-column"),p=(0,l.up)("EditPen"),h=(0,l.up)("el-icon"),v=(0,l.up)("Delete"),f=(0,l.up)("el-popconfirm"),g=(0,l.up)("el-table"),w=(0,l.up)("el-input"),k=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l.Wm)(d,{onClick:t[0]||(t[0]=e=>n.handleAdd())},{default:(0,l.w5)((()=>[(0,l.Uk)("添加项")])),_:1})]),(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(g,{data:n.state.list,size:"small",border:"",stripe:"",style:{width:"100%"},height:"50vh"},{default:(0,l.w5)((()=>[(0,l.Wm)(m,{prop:"Name",label:"名称"}),(0,l.Wm)(m,{label:"操作",width:"110"},{default:(0,l.w5)((e=>[e.row.ID>1?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Wm)(d,{size:"small",onClick:t=>n.handleAdd(e.row)},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(p)])),_:1})])),_:2},1032,["onClick"]),(0,l.Wm)(f,{title:"删除不可逆,是否确定?",onConfirm:t=>n.handleDel(e.row)},{reference:(0,l.w5)((()=>[(0,l.Wm)(d,{size:"small",type:"danger"},{default:(0,l.w5)((()=>[(0,l.Wm)(h,null,{default:(0,l.w5)((()=>[(0,l.Wm)(v)])),_:1})])),_:1})])),_:2},1032,["onConfirm"])],64)):(0,l.kq)("",!0)])),_:1})])),_:1},8,["data"])])]),(0,l.Wm)(k,{title:""+(0==n.state.currentItem.ID?"添加项":"修改项"),"destroy-on-close":"",modelValue:n.state.showEdit,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.showEdit=e),center:"","close-on-click-modal":!1,"align-center":"",width:"80%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(d,{onClick:n.handleEditCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(d,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleEditSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l.Wm)(w,{modelValue:n.state.currentItem.Name,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.currentItem.Name=e),size:"large",placeholder:"分组名称"},null,8,["modelValue"])])])),_:1},8,["title","modelValue"])])}var d=a(7178),m=a(2331),p=a(2683),h={setup(){const e=(0,p.d)(),t=(0,o.qj)({loading:!1,currentItem:{ID:0,Name:""},showEdit:!1,list:(0,l.Fl)((()=>{let a=e.value.usernames[e.value.username];return a?(0==t.group&&a.Rules.length>0&&(t.group=a.Rules[0].ID),a.Rules):[]}))}),a=e=>{e=e||{Name:"",ID:0},t.currentItem.Name=e.Name,t.currentItem.ID=e.ID,t.showEdit=!0},n=a=>{t.loading=!0,(0,m.U4)({UserName:e.value.username,ID:a.ID}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")}))},s=()=>{t.showEdit=!1},i=()=>{t.currentItem.Name=t.currentItem.Name.replace(/^\s|\s$/g,""),t.currentItem.Name&&(t.loading=!0,(0,m.HP)({UserName:e.value.username,Rule:t.currentItem}).then((a=>{t.loading=!1,a?d.z8.error(a):(d.z8.success("操作成功!"),t.showEdit=!1,e.value.updateRuleFlag=Date.now())})).catch((e=>{t.loading=!1,d.z8.error("操作失败!")})))};return{state:t,handleAdd:a,handleDel:n,handleEditCancel:s,handleEditSubmit:i}}},v=a(89);const f=(0,v.Z)(h,[["render",c],["__scopeId","data-v-75241a7e"]]);var g=f;const w=e=>((0,l.dD)("data-v-b042e218"),e=e(),(0,l.Cn)(),e),k={class:"command-wrap flex flex-column"},y={class:"head t-c flex"},_=w((()=>(0,l._)("div",{class:"flex-1"},null,-1))),C={class:"body flex flex-1"},x={class:"private"},D=w((()=>(0,l._)("div",{class:"flex-1"},null,-1))),W={class:"public"};function b(e,t,a,n,o,s){const i=(0,l.up)("el-option"),u=(0,l.up)("el-select"),r=(0,l.up)("el-button"),c=(0,l.up)("CheckBoxWrap");return(0,l.wg)(),(0,l.iD)("div",k,[(0,l._)("div",y,[(0,l._)("div",null,[(0,l.Wm)(u,{modelValue:n.state.group,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.group=e),placeholder:"选择一个分组",style:{width:"13rem"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.groups,(e=>((0,l.wg)(),(0,l.j4)(i,{key:e.ID,label:e.Name,value:e.ID},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])]),_,(0,l._)("div",null,[(0,l.Wm)(r,{onClick:t[1]||(t[1]=e=>n.handleSave()),loading:n.state.loading},{default:(0,l.w5)((()=>[(0,l.Uk)("保存选择")])),_:1},8,["loading"])])]),(0,l._)("div",C,[(0,l._)("div",x,[(0,l.Wm)(c,{ref:"privateProcess",data:n.state.privateProcess,items:n.state.privateProcessItems,label:"ID",text:"Name",title:"私有程序组"},null,8,["data","items"])]),D,(0,l._)("div",W,[(0,l.Wm)(c,{ref:"publicProcess",data:n.state.publicProcess,items:n.state.publicProcessItems,label:"ID",text:"Name",title:"公共程序组"},null,8,["data","items"])])])])}var V=a(1443),S={components:{CheckBoxWrap:V.Z},setup(){const e=(0,p.d)(),t=(0,l.Fl)((()=>e.value.usernames[e.value.username])),a=e.value.publicUserName,n=(0,l.Fl)((()=>e.value.usernames[a])),s=n.value&&e.value.username!=a,i=(0,o.qj)({loading:!1,group:0,groups:(0,l.Fl)((()=>t.value?(0==i.group&&t.value.Rules.length>0&&(i.group=t.value.Rules[0].ID),t.value.Rules):[])),rule:(0,l.Fl)((()=>{if(t){let e=t.value.Rules.filter((e=>e.ID==i.group))[0];if(e)return e}return{ID:0,Name:"",PrivateProcesss:[],PublicProcesss:[]}})),privateProcess:(0,l.Fl)((()=>t.value?t.value.Processs:[])),privateProcessItems:(0,l.Fl)((()=>t.value?t.value.Processs.filter((e=>i.rule.PrivateProcesss.indexOf(e.ID)>=0)):[])),publicProcess:(0,l.Fl)((()=>s?n.value.Processs:[])),publicProcessItems:(0,l.Fl)((()=>s?n.value.Processs.filter((e=>i.rule.PublicProcesss.indexOf(e.ID)>=0)):[]))});(0,l.YP)((()=>i.show),(e=>{e||setTimeout((()=>{emit("update:modelValue",e)}),300)}));const u=(0,o.iH)(null),r=(0,o.iH)(null),c=()=>{let a=t.value.Rules.filter((e=>e.ID==i.group))[0];a?(a.PrivateProcesss=u.value.getData().map((e=>e.ID)),a.PublicProcesss=r.value.getData().map((e=>e.ID)),i.loading=!0,(0,m.HP)({UserName:e.value.username,Rule:a}).then((t=>{i.loading=!1,t?d.z8.error(t):(d.z8.success("操作成功"),e.value.updateRuleFlag=Date.now())})).catch((()=>{i.loading=!1,d.z8.error("操作失败")}))):d.z8.error("未选择任何限制分组")};return{state:i,handleSave:c,privateProcess:u,publicProcess:r}}};const I=(0,v.Z)(S,[["render",b],["__scopeId","data-v-b042e218"]]);var T=I,U={props:["modelValue"],emits:["update:modelValue"],components:{Groups:g,Rule:T},setup(e,{emit:t}){const a=(0,o.qj)({show:e.modelValue});(0,l.YP)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=()=>{a.show=!1};return{state:a,handleCancel:n}}};const N=(0,v.Z)(U,[["render",n]]);var j=N},6159:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return p}});var l=a(3396),n=a.p+"img/keyboard.0621787b.svg";const o=e=>((0,l.dD)("data-v-54274fe8"),e=e(),(0,l.Cn)(),e),s=o((()=>(0,l._)("img",{src:n,width:"20"},null,-1))),i=[s];function u(e,t,a,n,o,s){return(0,l.wg)(),(0,l.iD)("div",null,[(0,l._)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleKeyBoard&&n.handleKeyBoard(...e))},i)])}var r=a(2115),c={props:["data"],setup(e){const t=(0,r.$)(),a=()=>{t.value.keyboard.devices=[e.data],t.value.keyboard.showKeyBoard=!0};return{handleKeyBoard:a}}},d=a(89);const m=(0,d.Z)(c,[["render",u],["__scopeId","data-v-54274fe8"]]);var p=m},1296:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return v}});var l=a(3396);const n={class:"item"},o={class:"subitem"},s=(0,l._)("span",{class:"label"},"安全选项",-1);function i(e,t,a,i,u,r){const c=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[s,(0,l.Wm)(c,{onClick:i.handleSas},{default:(0,l.w5)((()=>[(0,l.Uk)("Ctrl+Alt+Delete")])),_:1},8,["onClick"])])])}var u=a(6e3),r=a(7178),c=a(2115),d=a(4316),m={setup(){const e=(0,c.$)(),t=()=>{a("确定发送ctrl+alt+delete吗?",d.P)},a=(t,a)=>{u.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{const t=e.value.command.devices.map((e=>e.MachineName));a(t).then((e=>{e?r.z8.success("操作成功"):r.z8.error("操作失败")})).catch((()=>{r.z8.error("操作失败")}))})).catch((()=>{}))};return{pluginState:e,handleSas:t}}},p=a(89);const h=(0,p.Z)(m,[["render",i]]);var v=h},9815:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return w}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("KeyBoard");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.keyboard.showKeyBoard?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.keyboard.showKeyBoard,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.keyboard.showKeyBoard=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115),s=a(7139);const i={class:"keyboard-wrap"},u=["onTouchstart","onTouchend"];function r(e,t,a,n,o,r){const c=(0,l.up)("Close"),d=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("div",i,[(0,l._)("a",{href:"javascript:;",class:"close",onClick:t[0]||(t[0]=(...e)=>n.handleClose&&n.handleClose(...e))},[(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1})]),(0,l._)("h3",null,(0,s.zw)(n.state.name),1),(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.list,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t,class:"flex"},[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e,((e,t)=>((0,l.wg)(),(0,l.iD)("div",{key:t,class:"flex-1 key",style:(0,s.j5)(e.style)},[(0,l._)("div",{class:"inner",onTouchstart:t=>n.handleKeyDown(e),onTouchend:t=>n.handleKeyUp(e)},(0,s.zw)(e.text),41,u)],4)))),128))])))),128))])])}var c=a(4870),d=a(4316),m={setup(){const e=(0,o.$)(),t=(0,c.qj)({name:(0,l.Fl)((()=>e.value.keyboard.devices.length>0?e.value.keyboard.devices[0].MachineName:"unknow")),names:(0,l.Fl)((()=>e.value.keyboard.devices.map((e=>e.MachineName)))),list:[[{text:"1",key:49},{text:"2",key:50},{text:"3",key:51},{text:"4",key:52},{text:"5",key:53}],[{text:"6",key:54},{text:"7",key:55},{text:"8",key:56},{text:"9",key:57},{text:"0",key:48}],[{text:"Esc",style:"flex:0.8",key:27},{text:"F1",key:112},{text:"F4",key:115},{text:"F5",key:116},{text:"F12",key:123},{text:"-",key:109},{text:"+",key:107}],[{text:"Tab",key:9},{text:"Q",key:81},{text:"W",key:87},{text:"E",key:69},{text:"Y",key:89},{text:"Ins",key:45},{text:"Back",key:8}],[{text:"Cap",key:20},{text:"A",key:65},{text:"S",key:83},{text:"D",key:68},{text:"L",key:76},{text:"Enter",key:13}],[{text:"Shift",style:"flex:1.5",key:160},{text:"Z",key:90},{text:"X",key:88},{text:"C",key:67},{text:"V",key:86},{text:"Num",key:144}],[{text:"Ctrl",key:162},{text:"Win",key:91},{text:"Alt",key:18},{text:"Space",key:32}]]}),a=e=>{(0,d.d)(t.names,e.key,0)},n=e=>{(0,d.d)(t.names,e.key,2)},s=()=>{e.value.keyboard.showKeyBoard=!1};return{state:t,handleKeyDown:a,handleKeyUp:n,handleClose:s}}},p=a(89);const h=(0,p.Z)(m,[["render",r],["__scopeId","data-v-359681c4"]]);var v=h,f={components:{KeyBoard:v},setup(){const e=(0,o.$)();return{pluginState:e}}};const g=(0,p.Z)(f,[["render",n]]);var w=g},1811:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396),n=a(7139);const o={href:"javascript:;"},s={class:"light-value"};function i(e,t,a,i,u,r){const c=(0,l.up)("Sunny"),d=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",o,[(0,l._)("span",{class:"light",onClick:t[0]||(t[0]=(...e)=>i.handleLight&&i.handleLight(...e))},[(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1}),(0,l._)("div",{class:"light-bg",style:(0,n.j5)({height:`${i.data.Light.Value}%`})},[(0,l.Wm)(d,{class:"value"},{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1})],4)]),(0,l._)("p",s,(0,n.zw)(i.data.Light.Value),1)])}var u=a(2115),r={props:["data"],setup(e){const t=(0,u.$)(),a=()=>{t.value.light.devices=[e.data],t.value.light.showLightSingle=!0};return{data:e.data,handleLight:a}}},c=a(89);const d=(0,c.Z)(r,[["render",i],["__scopeId","data-v-79103ff6"]]);var m=d},1938:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Sunny"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleLight},{default:(0,l.w5)((()=>[(0,l.Uk)("亮度 "),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2683),s=a(2115),i={setup(){const e=(0,s.$)(),t=(0,o.d)(),a=()=>{e.value.light.devices=t.value.devices,e.value.light.showLight=!0};return{handleLight:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},9107:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return O}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Light"),u=(0,l.up)("LightSingle");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.light.showLight?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.light.showLight,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.light.showLight=e)},null,8,["modelValue"])):(0,l.kq)("",!0),n.pluginState.light.showLightSingle?((0,l.wg)(),(0,l.j4)(u,{key:1,modelValue:n.pluginState.light.showLightSingle,"onUpdate:modelValue":t[1]||(t[1]=e=>n.pluginState.light.showLightSingle=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115),s=a(7139);const i=e=>((0,l.dD)("data-v-244e18ca"),e=e(),(0,l.Cn)(),e),u={class:"command-wrap flex"},r={class:"items"},c={class:"name"},d={class:"light"},m={class:"value"},p=i((()=>(0,l._)("div",{class:"flex-1"},null,-1))),h={class:"commands"},v={class:"slider-wrap flex flex-column"},f={class:"silder flex flex-1"},g={class:"flex-1"};function w(e,t,a,n,o,i){const w=(0,l.up)("Sunny"),k=(0,l.up)("el-icon"),y=(0,l.up)("CheckBoxWrap"),_=(0,l.up)("el-slider"),C=(0,l.up)("PrevBoxWrap"),x=(0,l.up)("el-button"),D=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(D,{class:"options",title:"调节亮度","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(x,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(y,{ref:"items",data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"全选"},{name:(0,l.w5)((e=>[(0,l._)("span",null,[(0,l._)("span",c,(0,s.zw)(e.item.MachineName),1),(0,l._)("strong",d,[(0,l.Wm)(k,null,{default:(0,l.w5)((()=>[(0,l.Wm)(w)])),_:1}),(0,l._)("strong",m,(0,s.zw)(e.item.Light.Value?Math.floor(e.item.Light.Value):e.item.Light.Value)+"%",1)])])])),_:1},8,["data","items"])]),p,(0,l._)("div",h,[(0,l.Wm)(C,{ref:"commands",title:"调节亮度"},{wrap:(0,l.w5)((()=>[(0,l._)("div",v,[(0,l._)("div",f,[(0,l._)("div",g,[(0,l.Wm)(_,{type:"success",onChange:n.handleChangeLight,modelValue:n.state.light,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.light=e),vertical:"",height:"100%"},null,8,["onChange","modelValue"])])])])])),_:1},512)])])])),_:1},8,["modelValue"])}var k=a(4870),y=a(1443),_=a(5291),C=a(7178),x=a(2843);const D=(e,t)=>(0,x.gQ)("light/update",{names:e,value:t});var W=a(2683),b={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:y.Z,PrevBoxWrap:_.Z},setup(e,{emit:t}){const a=(0,W.d)(),n=(0,o.$)(),s=(0,k.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.light.devices)),mute:!1,loading:!1,light:0});(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=()=>{s.show=!1},u=(0,k.iH)(null),r=()=>{let e=u.value.getData();0!=e.length?D(e.map((e=>e.MachineName)),s.light):C.z8.error("未选择任何设备")};return{state:s,globalData:a,devices:u,handleCancel:i,handleChangeLight:r}}},V=a(89);const S=(0,V.Z)(b,[["render",w],["__scopeId","data-v-244e18ca"]]);var I=S;const T={class:"slider-wrap flex flex-column"},U={class:"silder flex flex-1"},N={class:"flex-1"};function j(e,t,a,n,o,s){const i=(0,l.up)("el-slider"),u=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(u,{title:"调节亮度","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{default:(0,l.w5)((()=>[(0,l._)("div",T,[(0,l._)("div",U,[(0,l._)("div",N,[(0,l.Wm)(i,{onChange:n.handleChangeLight,modelValue:n.state.light,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.light=e)},null,8,["onChange","modelValue"])])])])])),_:1},8,["modelValue"])}var z={props:["modelValue","items"],emits:["update:modelValue"],components:{},setup(e,{emit:t}){const a=(0,W.d)(),n=(0,o.$)(),s=(0,k.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.light.devices)),loading:!1,light:n.value.light.devices[0].Light.Value});(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=()=>{s.show=!1},u=()=>{D(s.items.map((e=>e.MachineName)),s.light)};return{state:s,globalData:a,handleCancel:i,handleChangeLight:u}}};const M=(0,V.Z)(z,[["render",j],["__scopeId","data-v-6a9d819b"]]);var P=M,L={components:{Light:I,LightSingle:P},setup(){const e=(0,o.$)();return{pluginState:e}}};const R=(0,V.Z)(L,[["render",n]]);var O=R},1622:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return g}});var l=a(3396);const n={class:"item"},o={class:"subitem"},s=(0,l._)("span",{class:"label"},"屏幕锁定",-1),i={class:"subitem"},u=(0,l._)("span",{class:"label"},"系统锁定",-1);function r(e,t,a,r,c,d){const m=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[s,(0,l.Wm)(m,{onClick:r.handleLockScreen},{default:(0,l.w5)((()=>[(0,l.Uk)("锁定")])),_:1},8,["onClick"]),(0,l.Wm)(m,{onClick:r.handleUnLockScreen},{default:(0,l.w5)((()=>[(0,l.Uk)("解锁")])),_:1},8,["onClick"])]),(0,l._)("div",i,[u,(0,l.Wm)(m,{onClick:r.handleLockSystem},{default:(0,l.w5)((()=>[(0,l.Uk)("锁定(WIN+L)")])),_:1},8,["onClick"])])])}var c=a(6e3),d=a(7178),m=a(2115),p=a(3327),h={setup(){const e=(0,m.$)(),t=()=>{n("确定锁定屏幕吗?",p.m,!0)},a=()=>{n("确定解锁屏幕吗?",p.m,!1)},l=()=>{n("确定解锁系统吗?",p.H,!0)},n=(t,a,l)=>{c.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{const t=e.value.command.devices.map((e=>e.MachineName));a(t,l).then((e=>{e?d.z8.success("操作成功"):d.z8.error("操作失败")})).catch((()=>{d.z8.error("操作失败")}))})).catch((()=>{}))};return{pluginState:e,handleLockScreen:t,handleUnLockScreen:a,handleLockSystem:l}}},v=a(89);const f=(0,v.Z)(h,[["render",r]]);var g=f},3937:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("el-switch"),u=(0,l.up)("el-col");return(0,l.wg)(),(0,l.j4)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"llock",size:"small",onClick:n.handleLock,"model-value":n.data.LLock.LockScreen,"inline-prompt":"","active-text":"锁屏","inactive-text":"锁屏"},null,8,["onClick","model-value"])])),_:1})}var o=a(3327),s=a(2115),i=a(6e3),u=a(7178),r={sort:2,props:["data"],setup(e){(0,s.$)();const t=()=>{let t=e.data.LLock.LockScreen?"确定解除锁屏吗?":"确定开启锁屏吗?";i.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,o.m)([e.data.MachineName],!e.data.LLock.LockScreen).then((e=>{e?u.z8.success("操作成功"):u.z8.error("操作失败")})).catch((()=>{u.z8.error("操作失败")}))})).catch((()=>{}))};return{data:e.data,handleLock:t}}},c=a(89);const d=(0,c.Z)(r,[["render",n],["__scopeId","data-v-5b7c10b5"]]);var m=d},6353:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return r}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Bell"),u=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleMessage&&n.handleMessage(...e))},[(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])}var o=a(2115),s={props:["data"],setup(e){const t=(0,o.$)(),a=()=>{t.value.message.devices=[e.data],t.value.message.showMessage=!0};return{handleMessage:a}}},i=a(89);const u=(0,i.Z)(s,[["render",n]]);var r=u},6980:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Bell"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleMessage},{default:(0,l.w5)((()=>[(0,l.Uk)("提醒"),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2683),s=a(2115),i={setup(){const e=(0,s.$)(),t=(0,o.d)(),a=()=>{e.value.message.devices=t.value.devices,e.value.message.showMessage=!0};return{handleMessage:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},2571:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return I}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ChooseDig");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.message.showMessage?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.message.showMessage,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.message.showMessage=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115);const s=e=>((0,l.dD)("data-v-34040146"),e=e(),(0,l.Cn)(),e),i={class:"command-wrap flex"},u={class:"items"},r=s((()=>(0,l._)("div",{class:"flex-1"},null,-1))),c={class:"prevs-wrap flex flex-column flex-nowrap"},d={class:"prevs"},m=s((()=>(0,l._)("div",{class:"flex-1"},null,-1))),p={class:"times"},h={class:"prev"};function v(e,t,a,n,o,s){const v=(0,l.up)("CheckBoxWrap"),f=(0,l.up)("PrevBoxWrap"),g=(0,l.up)("el-input"),w=(0,l.up)("el-button"),k=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(k,{class:"options",title:"发送提醒","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(w,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(w,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",i,[(0,l._)("div",u,[(0,l.Wm)(v,{ref:"devices",data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"选择设备"},null,8,["data","items"])]),r,(0,l._)("div",c,[(0,l._)("div",d,[(0,l.Wm)(f,{ref:"prevs",data:n.state.prevs,onPrev:n.handlePrev,title:"快捷短语"},null,8,["data","onPrev"])]),m,(0,l._)("div",null,[(0,l._)("div",p,[(0,l.Wm)(g,{modelValue:n.state.sec,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.sec=e),size:"large"},{append:(0,l.w5)((()=>[(0,l.Uk)("秒钟")])),_:1},8,["modelValue"])]),(0,l._)("div",h,[(0,l.Wm)(g,{modelValue:n.state.prev,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.prev=e),type:"textarea",resize:"none",placeholder:"输入提醒消息"},null,8,["modelValue"])])])])])])),_:1},8,["modelValue"])}a(7658);var f=a(4870),g=a(1443),w=a(5291),k=a(7178),y=a(6e3),_=a(9418),C=a(2683),x={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:g.Z,PrevBoxWrap:w.Z},setup(e,{emit:t}){const a=(0,C.d)(),n=(0,o.$)(),s=(0,f.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.message.devices)),prevs:["请注意上课纪律!","请勿玩游戏!","请勿大声喧哗!"],sec:10,prev:"",loading:!1});try{1==n.value.message.devices.length&&n.value.message.devices[0].Share.UserName.Value&&s.prevs.push(`【${n.value.message.devices[0].Share.UserName.Value}】请注意上课纪律!`)}catch(m){}(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=e=>{s.prev=e},u=(0,f.iH)(null),r=(0,f.iH)(null),c=()=>{let e=u.value.getData();0!=e.length?0!=s.prev.length?y.T.confirm("是否确定发送消息?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{s.loading=!0,(0,_.G)(e.map((e=>e.MachineName)),[`start message.win.exe "${s.prev}" ${s.sec}`]).then((e=>{e?k.z8.success("操作成功"):k.z8.error("操作失败"),s.loading=!1})).catch((()=>{s.loading=!1,k.z8.error("操作失败")}))})).catch((()=>{})):k.z8.error("未填写消息"):k.z8.error("未选择任何设备")},d=()=>{s.show=!1};return{state:s,globalData:a,devices:u,prevs:r,handleSubmit:c,handleCancel:d,handlePrev:i}}},D=a(89);const W=(0,D.Z)(x,[["render",v],["__scopeId","data-v-34040146"]]);var b=W,V={components:{ChooseDig:b},setup(){const e=(0,o.$)();return{pluginState:e}}};const S=(0,D.Z)(V,[["render",n]]);var I=S},528:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return r}});var l=a(3396),n=a(7139);function o(e,t,a,o,s,i){const u=(0,l.up)("el-col");return(0,l.wg)(),(0,l.j4)(u,{span:6,class:"time"},{default:(0,l.w5)((()=>[(0,l._)("span",null,"fps:"+(0,n.zw)(o.data.Report.fps)+"、"+(0,n.zw)(o.data.Report.ping)+"ms",1)])),_:1})}var s={sort:-1,props:["data"],setup(e){return{data:e.data}}},i=a(89);const u=(0,i.Z)(s,[["render",o],["__scopeId","data-v-328e5aa7"]]);var r=u},1274:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return d}});var l=a(3396);const n=e=>((0,l.dD)("data-v-3ab1cd5b"),e=e(),(0,l.Cn)(),e),o=n((()=>(0,l._)("span",null,"设置",-1)));function s(e,t,a,n,s,i){const u=(0,l.up)("Help"),r=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>n.handleSetting&&n.handleSetting(...e))},[(0,l.Wm)(r,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u)])),_:1}),o])}var i=a(2115),u={sort:0,setup(){const e=(0,i.$)(),t=()=>{e.value.setting.showSetting=!0};return{handleSetting:t}}},r=a(89);const c=(0,r.Z)(u,[["render",s],["__scopeId","data-v-3ab1cd5b"]]);var d=c},5975:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return y}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("ChooseDig");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.setting.showSetting?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.setting.showSetting,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.setting.showSetting=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115);const s={class:"setting-wrap"};function i(e,t,a,n,o,i){const u=(0,l.up)("el-input-number"),r=(0,l.up)("el-form-item"),c=(0,l.up)("el-checkbox"),d=(0,l.up)("el-form"),m=(0,l.up)("el-button"),p=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(p,{title:"设置","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[6]||(t[6]=e=>n.state.show=e),center:"","close-on-click-modal":!1,"align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(m,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(m,{type:"success",plain:"",loading:n.state.loading,onClick:n.handleSubmit},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["loading","onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",s,[(0,l.Wm)(d,{ref:"ruleFormRef",model:n.state.form,rules:n.state.rules,"label-width":"100px"},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{label:"报告延迟(ms)",prop:"ReportDelay"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{size:"large",modelValue:n.state.form.ReportDelay,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.form.ReportDelay=e),min:17,max:1e3,"controls-position":"right"},null,8,["modelValue"])])),_:1}),(0,l.Wm)(r,{label:"截屏延迟(ms)",prop:"ScreenDelay"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{size:"large",modelValue:n.state.form.ScreenDelay,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.form.ScreenDelay=e),min:17,max:1e3,"controls-position":"right"},null,8,["modelValue"])])),_:1}),(0,l.Wm)(r,{label:"截屏缩放",prop:"ScreenScale"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{size:"large",modelValue:n.state.form.ScreenScale,"onUpdate:modelValue":t[2]||(t[2]=e=>n.state.form.ScreenScale=e),min:.1,max:1,step:.1,"controls-position":"right"},null,8,["modelValue"])])),_:1}),(0,l.Wm)(r,{label:"保存配置",prop:"SaveSetting"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{modelValue:n.state.form.SaveSetting,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.form.SaveSetting=e)},{default:(0,l.w5)((()=>[(0,l.Uk)("保存限制配置")])),_:1},8,["modelValue"])])),_:1}),(0,l.Wm)(r,{label:"黑屏唤醒",prop:"WakeUp"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{modelValue:n.state.form.WakeUp,"onUpdate:modelValue":t[4]||(t[4]=e=>n.state.form.WakeUp=e)},{default:(0,l.w5)((()=>[(0,l.Uk)("黑屏时唤醒")])),_:1},8,["modelValue"])])),_:1}),(0,l.Wm)(r,{label:"声音峰值",prop:"VolumeMasterPeak"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{modelValue:n.state.form.VolumeMasterPeak,"onUpdate:modelValue":t[5]||(t[5]=e=>n.state.form.VolumeMasterPeak=e)},{default:(0,l.w5)((()=>[(0,l.Uk)("报告声音峰值")])),_:1},8,["modelValue"])])),_:1})])),_:1},8,["model","rules"])])])),_:1},8,["modelValue"])}var u=a(4870),r=a(1443),c=a(2843);const d=()=>(0,c.gQ)("setting/get"),m=e=>(0,c.gQ)("setting/set",e);var p=a(7178),h={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:r.Z},setup(e,{emit:t}){const a=(0,u.qj)({show:e.modelValue,loading:!1,rules:[],form:{ReportDelay:0,ScreenDelay:0,ScreenScale:0,SaveSetting:!0,WakeUp:!0,VolumeMasterPeak:!0}});(0,l.YP)((()=>a.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const n=()=>{d().then((e=>{a.form.ReportDelay=e.ReportDelay,a.form.ScreenDelay=e.ScreenDelay,a.form.ScreenScale=e.ScreenScale,a.form.SaveSetting=e.SaveSetting,a.form.WakeUp=e.WakeUp,a.form.VolumeMasterPeak=e.VolumeMasterPeak})).catch((()=>{}))},o=()=>{a.show=!1},s=(0,u.iH)(null),i=()=>{a.loading=!0,m(a.form).then((e=>{a.loading=!1,e?(p.z8.success("操作成功!"),a.show=!1):p.z8.error("操作失败!")})).catch((()=>{a.loading=!1,p.z8.error("操作失败!")}))};return(0,l.bv)((()=>{n()})),{state:a,devices:s,handleCancel:o,handleSubmit:i}}},v=a(89);const f=(0,v.Z)(h,[["render",i],["__scopeId","data-v-398854f9"]]);var g=f,w={components:{ChooseDig:g},setup(){const e=(0,o.$)();return{pluginState:e}}};const k=(0,v.Z)(w,[["render",n]]);var y=k},4704:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return D}});var l=a(3396),n=a(7139);const o=e=>((0,l.dD)("data-v-131f0fcf"),e=e(),(0,l.Cn)(),e),s={key:0,class:"share-lock-wrap"},i={class:"inner"},u={class:"stars"},r={class:"line flex flex-nowrap"},c=o((()=>(0,l._)("span",null,"读题分析",-1))),d={class:"line flex flex-nowrap"},m=o((()=>(0,l._)("span",null,"程序设计",-1))),p={class:"line flex flex-nowrap"},h=o((()=>(0,l._)("span",null,"数据校验",-1)));function v(e,t,a,o,v,f){const g=(0,l.up)("el-checkbox"),w=(0,l.up)("el-rate"),k=(0,l.up)("el-button"),y=(0,l.up)("el-popconfirm");return"ask"==o.data.Share.Lock.Value.val?((0,l.wg)(),(0,l.iD)("div",s,[(0,l._)("div",i,[(0,l._)("h5",null,[(0,l._)("span",null,"【"+(0,n.zw)(o.data.Share.Lock.TypeText)+"】",1),"remark-block"==o.data.Share.Lock.Value.type||"remark-cpp"==o.data.Share.Lock.Value.type?((0,l.wg)(),(0,l.j4)(g,{key:0,modelValue:o.data.Share.Lock.Value.notify,"onUpdate:modelValue":t[0]||(t[0]=e=>o.data.Share.Lock.Value.notify=e),size:"small"},{default:(0,l.w5)((()=>[(0,l.Uk)("广播")])),_:1},8,["modelValue"])):(0,l.kq)("",!0)]),(0,l._)("div",u,["remark-block"==o.data.Share.Lock.Value.type||"remark-cpp"==o.data.Share.Lock.Value.type?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l._)("div",r,[c,(0,l.Wm)(w,{onChange:o.handleStarChange,modelValue:o.data.Share.Lock.Value.star1,"onUpdate:modelValue":t[1]||(t[1]=e=>o.data.Share.Lock.Value.star1=e),size:"large"},null,8,["onChange","modelValue"])]),(0,l._)("div",d,[m,(0,l.Wm)(w,{onChange:o.handleStarChange,modelValue:o.data.Share.Lock.Value.star2,"onUpdate:modelValue":t[2]||(t[2]=e=>o.data.Share.Lock.Value.star2=e),size:"large"},null,8,["onChange","modelValue"])]),(0,l._)("div",p,[h,(0,l.Wm)(w,{onChange:o.handleStarChange,modelValue:o.data.Share.Lock.Value.star3,"onUpdate:modelValue":t[3]||(t[3]=e=>o.data.Share.Lock.Value.star3=e),size:"large"},null,8,["onChange","modelValue"])])],64)):(0,l.kq)("",!0)]),(0,l._)("div",null,[(0,l.Wm)(y,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"确认驳回请求吗?",onConfirm:o.handleReject},{reference:(0,l.w5)((()=>[(0,l.Wm)(k,{loading:o.state.loading,type:"danger",plain:"",round:"",size:"small"},{default:(0,l.w5)((()=>[(0,l.Uk)("驳回")])),_:1},8,["loading"])])),_:1},8,["onConfirm"]),(0,l.Wm)(y,{"confirm-button-text":"确认","cancel-button-text":"取消",title:"确认通过请求吗?",onConfirm:o.handleConfirm},{reference:(0,l.w5)((()=>[(0,l.Wm)(k,{loading:o.state.loading,type:"success",plain:"",round:"",size:"small"},{default:(0,l.w5)((()=>[(0,l.Uk)("确认")])),_:1},8,["loading"])])),_:1},8,["onConfirm"])])])])):(0,l.kq)("",!0)}var f=a(4870),g=a(2843);const w=(e,t)=>(0,g.gQ)("share/update",{name:e,item:t}),k=(e,t,a,l,n)=>(0,g.gQ)("notify/update",{speed:e,msg:t,star1:a,star2:l,star3:n});var y=a(7178),_={props:["data"],setup(e){const t=(0,f.qj)({loading:!1}),a=()=>{t.loading=!0;let a=JSON.parse(JSON.stringify(e.data.Share.Lock.Value));a.val="reject",w(e.data.MachineName,{index:e.data.Share.Lock.Index,value:JSON.stringify(a)}).then((e=>{t.loading=!1,e?y.z8.success("操作成功!"):y.z8.error("操作失败!")})).catch((()=>{t.loading=!1,y.z8.error("操作失败!")}))},l=()=>{t.loading=!0;let a=JSON.parse(JSON.stringify(e.data.Share.Lock.Value));a.val="confirm",e.data.Share.Lock.Value.notify=!1,w(e.data.MachineName,{index:e.data.Share.Lock.Index,value:JSON.stringify(a)}).then((l=>{t.loading=!1,l?(y.z8.success("操作成功!"),a.notify&&k(2,e.data.Share.UserName.Value,a.star1,a.star2,a.star3)):y.z8.error("操作失败!")})).catch((()=>{t.loading=!1,y.z8.error("操作失败!")}))},n=()=>{t.loading=!0;let a=JSON.parse(JSON.stringify(e.data.Share.Lock.Value));w(e.data.MachineName,{index:e.data.Share.Lock.Index,value:JSON.stringify(a)}).then((e=>{t.loading=!1})).catch((()=>{t.loading=!1,y.z8.error("操作失败!")}))};return{data:e.data,state:t,handleReject:a,handleConfirm:l,handleStarChange:n}}},C=a(89);const x=(0,C.Z)(_,[["render",v],["__scopeId","data-v-131f0fcf"]]);var D=x},2592:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396),n=a(7139);const o={key:0,class:"user-name"};function s(e,t,a,s,i,u){return s.data.Share.UserName.Value?((0,l.wg)(),(0,l.iD)("i",o," - "+(0,n.zw)(s.data.Share.UserName.Value),1)):(0,l.kq)("",!0)}var i={props:["data"],setup(e){return{data:e.data}}},u=a(89);const r=(0,u.Z)(i,[["render",s],["__scopeId","data-v-793dbf84"]]);var c=r},5638:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return d}});var l=a(3396),n=a(7139);const o={class:"value"};function s(e,t,a,s,i,u){const r=(0,l.up)("Tools"),c=(0,l.up)("el-icon");return(0,l.wg)(),(0,l.iD)("div",null,[(0,l._)("a",{href:"javascript:;",onClick:t[0]||(t[0]=(...e)=>s.handleSystemOptions&&s.handleSystemOptions(...e))},[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Wm)(r)])),_:1}),(0,l._)("span",o,(0,n.zw)(a.data.System.RegistrysCount),1)])])}var i=a(2115),u={props:["data"],setup(e){const t=(0,i.$)(),a=()=>{t.value.system.devices=[e.data],t.value.system.showSystemOptions=!0};return{handleSystemOptions:a}}},r=a(89);const c=(0,r.Z)(u,[["render",s],["__scopeId","data-v-53f45bd0"]]);var d=c},313:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return w}});var l=a(3396);const n={class:"item"},o={class:"subitem"},s=(0,l._)("span",{class:"label"},"操作系统",-1),i={class:"subitem"},u=(0,l._)("span",{class:"label"},"系统桌面",-1);function r(e,t,a,r,c,d){const m=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[s,(0,l.Wm)(m,{onClick:r.handleRebotSystem},{default:(0,l.w5)((()=>[(0,l.Uk)("重启")])),_:1},8,["onClick"]),(0,l.Wm)(m,{onClick:r.handleCloseSystem},{default:(0,l.w5)((()=>[(0,l.Uk)("关机")])),_:1},8,["onClick"])]),(0,l._)("div",i,[u,(0,l.Wm)(m,{onClick:r.handleOpenDisktop},{default:(0,l.w5)((()=>[(0,l.Uk)("开启")])),_:1},8,["onClick"]),(0,l.Wm)(m,{onClick:r.handleCloseDisktop},{default:(0,l.w5)((()=>[(0,l.Uk)("关闭")])),_:1},8,["onClick"])])])}var c=a(6e3),d=a(7178),m=a(2115),p=a(9418),h=a(2683),v={setup(){const e=(0,m.$)(),t=((0,h.d)(),()=>{o("确定重启系统吗?","shutdown -r -f -t 00")}),a=()=>{o("确定关闭系统吗?","shutdown -s -f -t 00")},l=()=>{o("确定开启桌面吗?","start explorer.exe")},n=()=>{o("确定关闭桌面吗?",'taskkill /f /t /im "explorer.exe"')},o=(t,a,l)=>{c.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{const t=e.value.command.devices.map((e=>e.MachineName)),n="string"==typeof a?(0,p.G)(t,[a]):a(t,l);n.then((e=>{e?d.z8.success("操作成功"):d.z8.error("操作失败")})).catch((()=>{d.z8.error("操作失败")}))})).catch((()=>{}))};return{pluginState:e,handleRebotSystem:t,handleCloseSystem:a,handleOpenDisktop:l,handleCloseDisktop:n}}},f=a(89);const g=(0,f.Z)(v,[["render",r]]);var w=g},4994:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return I}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("SystemOptions");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.system.showSystemOptions?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.system.showSystemOptions,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.system.showSystemOptions=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115),s=a(7139);const i=e=>((0,l.dD)("data-v-ede9893e"),e=e(),(0,l.Cn)(),e),u={class:"command-wrap common-command-wrap flex"},r={class:"items"},c=i((()=>(0,l._)("div",{class:"flex-1"},null,-1))),d={class:"commands"},m={class:"inner absolute scrollbar"},p={class:"label"},h=i((()=>(0,l._)("span",{class:"flex-1"},null,-1))),v={class:"options"};function f(e,t,a,n,o,i){const f=(0,l.up)("CheckBoxWrap"),g=(0,l.up)("el-switch"),w=(0,l.up)("el-button"),k=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(k,{class:"options",title:"设备选项","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(w,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"]),(0,l.Wm)(w,{type:"success",plain:"",onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("确 定")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(f,{ref:"items",onChange:n.handleDevicesChange,data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"选择设备"},null,8,["onChange","data","items"])]),c,(0,l._)("div",d,[(0,l._)("div",m,[(0,l._)("ul",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(n.state.options,((e,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t,class:"flex"},[(0,l._)("span",p,(0,s.zw)(e.label),1),h,(0,l._)("div",v,[1==n.pluginState.system.devices.length?((0,l.wg)(),(0,l.j4)(g,{key:0,onChange:t=>n.handleOptionChange(e),modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,"inline-prompt":"","active-text":"禁用","inactive-text":"启用",size:"large"},null,8,["onChange","modelValue","onUpdate:modelValue"])):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Wm)(w,{size:"default",type:"danger",plain:"",onClick:t=>n.handleSubmit(e,!0)},{default:(0,l.w5)((()=>[(0,l.Uk)("禁用")])),_:2},1032,["onClick"]),(0,l.Wm)(w,{size:"default",type:"success",plain:"",onClick:t=>n.handleSubmit(e,!1)},{default:(0,l.w5)((()=>[(0,l.Uk)("开启")])),_:2},1032,["onClick"])],64))])])))),128))])])])])])),_:1},8,["modelValue"])}var g=a(4870),w=a(1443),k=a(5291),y=a(2683),_=a(7800),C=a(7178),x={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:w.Z,PrevBoxWrap:k.Z},setup(e,{emit:t}){const a=(0,y.d)(),n=(0,o.$)(),s=(0,g.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.system.devices)),loading:!1,options:[]});(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=(0,g.iH)(null),u=()=>{s.show=!1},r=()=>{const e=n.value.system.devices.map((e=>e.MachineName)),t=a.value.allDevices.filter((t=>e.indexOf(t.MachineName)>=0)).reduce(((e,t,a)=>(e=Object.assign(e,t.System.RegistryKeys),e)),{}),l=Object.keys(t),o=l.map((e=>{const a=t[e];return{key:e,label:a.Desc,index:a.Index,value:!1}})).filter((e=>e.label)).sort(((e,t)=>e.index-t.index));s.options=o},c=e=>{if(n.value.system.devices=e,r(),1==n.value.system.devices.length){const e=n.value.system.devices[0].MachineName,t=a.value.allDevices.filter((t=>t.MachineName==e))[0];if(t){const e=t.System.RegistryValues,a=s.options;if(e&&e.length==a.length){for(let t=0;t{(0,_.z)(n.value.system.devices.map((e=>e.MachineName)),e.key,e.value).then((()=>{C.z8.success("已执行")})).catch((()=>{C.z8.error("执行失败")}))},m=(e,t)=>{0!=n.value.system.devices.length?(0,_.z)(n.value.system.devices.map((e=>e.MachineName)),e.key,t).then((()=>{C.z8.success("已执行")})).catch((()=>{C.z8.error("执行失败")})):C.z8.error("请选择一个设备")};return{state:s,globalData:a,pluginState:n,items:i,handleCancel:u,handleDevicesChange:c,handleOptionChange:d,handleSubmit:m}}},D=a(89);const W=(0,D.Z)(x,[["render",f],["__scopeId","data-v-ede9893e"]]);var b=W,V={components:{SystemOptions:b},setup(){const e=(0,o.$)();return{pluginState:e}}};const S=(0,D.Z)(V,[["render",n]]);var I=S},6576:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("el-switch"),u=(0,l.up)("el-col");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l.Wm)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"usb",size:"small",onClick:n.handleUSB,disabled:"","model-value":n.usb,"inline-prompt":"","active-text":"U盘","inactive-text":"U盘"},null,8,["onClick","model-value"])])),_:1}),(0,l.Wm)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"usb",size:"small",onClick:n.handleSetting,disabled:"","model-value":n.setting,"inline-prompt":"","active-text":"设置","inactive-text":"设置"},null,8,["onClick","model-value"])])),_:1}),(0,l.Wm)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"usb",size:"small",onClick:n.handleShutdown,disabled:"","model-value":n.shutdown,"inline-prompt":"","active-text":"关机","inactive-text":"关机"},null,8,["onClick","model-value"])])),_:1})],64)}var o=a(2115),s=a(6e3),i=a(7178),u=a(7800),r={sort:4,props:["data"],setup(e){const t=e.data,a=((0,o.$)(),(0,l.Fl)((()=>!(!t.System.RegistryValues||!t.System.RegistryKeys.USBSTOR)&&"1"==t.System.RegistryValues[t.System.RegistryKeys.USBSTOR.Index]))),n=(0,l.Fl)((()=>!(!t.System.RegistryValues||!t.System.RegistryKeys.NoControlPanel)&&"1"==t.System.RegistryValues[t.System.RegistryKeys.NoControlPanel.Index])),r=(0,l.Fl)((()=>!(!t.System.RegistryValues||!t.System.RegistryKeys.NoClose)&&"1"==t.System.RegistryValues[t.System.RegistryKeys.NoClose.Index])),c=(t,a,l)=>new Promise(((n,o)=>{s.T.confirm(a,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,u.z)([e.data.MachineName],t,l).then((e=>{e?(i.z8.success("操作成功"),n()):(i.z8.error("操作失败"),o())})).catch((()=>{i.z8.error("操作失败"),o()}))})).catch((()=>{o()}))})),d=()=>{c("USBSTOR",a.value?"确定启用USB吗?":"确定禁用USB吗?",!a.value)},m=()=>{c("NoControlPanel",n.value?"确定启用设置吗?":"确定禁用设置吗?",!n.value)},p=()=>{const t=!r.value;c("NoClose",r.value?"确定启用关机按钮吗?":"确定禁用关机按钮吗?",t).then((()=>{(0,u.z)([e.data.MachineName],"NoLogOff",t),(0,u.z)([e.data.MachineName],"DisableLockWorkstation",t),(0,u.z)([e.data.MachineName],"HideFastUserSwitching",t),(0,u.z)([e.data.MachineName],"DisableChangePassword",t)}))};return{data:t,usb:a,setting:n,shutdown:r,handleUSB:d,handleSetting:m,handleShutdown:p}}},c=a(89);const d=(0,c.Z)(r,[["render",n],["__scopeId","data-v-fa904c9e"]]);var m=d},4647:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396),n=a(7139);const o={href:"javascript:;"},s={class:"volume-value"};function i(e,t,a,i,u,r){const c=(0,l.up)("Mute"),d=(0,l.up)("el-icon"),m=(0,l.up)("Microphone");return(0,l.wg)(),(0,l.iD)("a",o,[(0,l._)("span",{class:"volume",onClick:t[0]||(t[0]=(...e)=>i.handleVolume&&i.handleVolume(...e))},[i.data.Volume.Mute?((0,l.wg)(),(0,l.j4)(d,{key:0},{default:(0,l.w5)((()=>[(0,l.Wm)(c)])),_:1})):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(m)])),_:1}),(0,l._)("div",{class:"volume-bg",style:(0,n.j5)({height:`${i.data.Volume.Value}%`})},[(0,l.Wm)(d,{class:"value"},{default:(0,l.w5)((()=>[(0,l.Wm)(m)])),_:1})],4)],64))]),(0,l._)("p",s,(0,n.zw)(Math.floor(i.data.Volume.Value)),1)])}var u=a(2115),r={props:["data"],setup(e){const t=(0,u.$)(),a=()=>{t.value.volume.devices=[e.data],t.value.volume.showVolumeSingle=!0};return{data:e.data,handleVolume:a}}},c=a(89);const d=(0,c.Z)(r,[["render",i],["__scopeId","data-v-936167e0"]]);var m=d},1708:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return v}});var l=a(3396);const n={class:"item"},o={class:"subitem"},s=(0,l._)("span",{class:"label"},"系统静音",-1);function i(e,t,a,i,u,r){const c=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[s,(0,l.Wm)(c,{onClick:i.handleOpenMute},{default:(0,l.w5)((()=>[(0,l.Uk)("静音")])),_:1},8,["onClick"]),(0,l.Wm)(c,{onClick:i.handleCloseMute},{default:(0,l.w5)((()=>[(0,l.Uk)("取消")])),_:1},8,["onClick"])])])}var u=a(6e3),r=a(7178),c=a(2115),d=a(8048),m={setup(){const e=(0,c.$)(),t=()=>{l("确定设置静音吗?",d.H,!0)},a=()=>{l("确定取消静音吗?",d.H,!1)},l=(t,a,l)=>{u.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{const t=e.value.command.devices.map((e=>e.MachineName));a(t,l).then((e=>{e?r.z8.success("操作成功"):r.z8.error("操作失败")})).catch((()=>{r.z8.error("操作失败")}))})).catch((()=>{}))};return{pluginState:e,handleOpenMute:t,handleCloseMute:a}}},p=a(89);const h=(0,p.Z)(m,[["render",i]]);var v=h},8029:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return c}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Microphone"),u=(0,l.up)("el-icon"),r=(0,l.up)("el-button");return(0,l.wg)(),(0,l.j4)(r,{size:"small",plain:"",dark:"",onClick:n.handleVolume},{default:(0,l.w5)((()=>[(0,l.Uk)("音量"),(0,l.Wm)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i)])),_:1})])),_:1},8,["onClick"])}var o=a(2683),s=a(2115),i={setup(){const e=(0,s.$)(),t=(0,o.d)(),a=()=>{e.value.volume.devices=t.value.devices,e.value.volume.showVolume=!0};return{handleVolume:a}}},u=a(89);const r=(0,u.Z)(i,[["render",n]]);var c=r},4214:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return Z}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("Volume"),u=(0,l.up)("VolumeSingle");return(0,l.wg)(),(0,l.iD)("div",null,[n.pluginState.volume.showVolume?((0,l.wg)(),(0,l.j4)(i,{key:0,modelValue:n.pluginState.volume.showVolume,"onUpdate:modelValue":t[0]||(t[0]=e=>n.pluginState.volume.showVolume=e)},null,8,["modelValue"])):(0,l.kq)("",!0),n.pluginState.volume.showVolumeSingle?((0,l.wg)(),(0,l.j4)(u,{key:1,modelValue:n.pluginState.volume.showVolumeSingle,"onUpdate:modelValue":t[1]||(t[1]=e=>n.pluginState.volume.showVolumeSingle=e)},null,8,["modelValue"])):(0,l.kq)("",!0)])}var o=a(2115),s=a(7139);const i=e=>((0,l.dD)("data-v-2cba18e1"),e=e(),(0,l.Cn)(),e),u={class:"command-wrap flex"},r={class:"items"},c={class:"name"},d={class:"volume"},m={class:"value"},p=i((()=>(0,l._)("div",{class:"flex-1"},null,-1))),h={class:"commands"},v={class:"slider-wrap flex flex-column"},f={class:"silder flex flex-1"},g={class:"flex-1"},w={class:"btn"},k={class:"btn"};function y(e,t,a,n,o,i){const y=(0,l.up)("el-button"),_=(0,l.up)("Mute"),C=(0,l.up)("el-icon"),x=(0,l.up)("Microphone"),D=(0,l.up)("CheckBoxWrap"),W=(0,l.up)("el-slider"),b=(0,l.up)("PrevBoxWrap"),V=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(V,{class:"options",title:"调节音量","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[3]||(t[3]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{footer:(0,l.w5)((()=>[(0,l.Wm)(y,{onClick:n.handleCancel},{default:(0,l.w5)((()=>[(0,l.Uk)("取 消")])),_:1},8,["onClick"])])),default:(0,l.w5)((()=>[(0,l._)("div",u,[(0,l._)("div",r,[(0,l.Wm)(D,{ref:"devices",data:n.globalData.devices,items:n.state.items,label:"MachineName",title:"全选"},{title:(0,l.w5)((()=>[(0,l._)("div",null,[(0,l.Wm)(y,{size:"small",onClick:n.handleSelectMute},{default:(0,l.w5)((()=>[(0,l.Uk)("状态选择")])),_:1},8,["onClick"])])])),name:(0,l.w5)((e=>[(0,l._)("span",null,[(0,l._)("span",c,(0,s.zw)(e.item.MachineName),1),(0,l._)("strong",d,[e.item.VolumeMute?((0,l.wg)(),(0,l.j4)(C,{key:0},{default:(0,l.w5)((()=>[(0,l.Wm)(_)])),_:1})):((0,l.wg)(),(0,l.j4)(C,{key:1},{default:(0,l.w5)((()=>[(0,l.Wm)(x)])),_:1})),(0,l._)("strong",m,(0,s.zw)(e.item.Volume.Value?Math.floor(e.item.Volume.Value):e.item.Volume.Value)+"%",1)])])])),_:1},8,["data","items"])]),p,(0,l._)("div",h,[(0,l.Wm)(b,{ref:"commands",title:"调节音量"},{wrap:(0,l.w5)((()=>[(0,l._)("div",v,[(0,l._)("div",f,[(0,l._)("div",g,[(0,l.Wm)(W,{onChange:n.handleChangeVolume,modelValue:n.state.volume,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.volume=e),vertical:"",height:"100%"},null,8,["onChange","modelValue"])])]),(0,l._)("div",w,[(0,l.Wm)(y,{onClick:t[1]||(t[1]=e=>n.handleMute(!0))},{default:(0,l.w5)((()=>[(0,l.Uk)("设置静音")])),_:1})]),(0,l._)("div",k,[(0,l.Wm)(y,{onClick:t[2]||(t[2]=e=>n.handleMute(!1))},{default:(0,l.w5)((()=>[(0,l.Uk)("取消静音")])),_:1})])])])),_:1},512)])])])),_:1},8,["modelValue"])}var _=a(4870),C=a(1443),x=a(5291),D=a(7178),W=a(8048),b=a(2683),V={props:["modelValue"],emits:["update:modelValue"],components:{CheckBoxWrap:C.Z,PrevBoxWrap:x.Z},setup(e,{emit:t}){const a=(0,b.d)(),n=(0,o.$)(),s=(0,_.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.volume.devices)),mute:!1,loading:!1,volume:0});(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=()=>{s.show=!1},u=()=>{s.items=a.value.devices.filter((e=>e.Volume.Mute==s.mute)),D.z8.success(`已选中${s.mute?"静音":"未静音"}设备`),s.mute=!s.mute},r=(0,_.iH)(null),c=e=>{let t=r.value.getData();0!=_items.length?(0,W.H)(t.map((e=>e.MachineName)),e):D.z8.error("未选择任何设备")},d=()=>{let e=r.value.getData();0!=_items.length?(0,W.j)(e.map((e=>e.MachineName)),s.volume/100):D.z8.error("未选择任何设备")};return{state:s,globalData:a,devices:r,handleCancel:i,handleSelectMute:u,handleMute:c,handleChangeVolume:d}}},S=a(89);const I=(0,S.Z)(V,[["render",y],["__scopeId","data-v-2cba18e1"]]);var T=I,U=a.p+"img/volume.5d8f0803.gif";const N=e=>((0,l.dD)("data-v-3ca473a0"),e=e(),(0,l.Cn)(),e),j={class:"slider-wrap flex flex-column"},z={class:"silder flex flex-1"},M={class:"flex-1"},P={key:0,class:"gif"},L=N((()=>(0,l._)("img",{src:U},null,-1))),R=[L];function O(e,t,a,n,o,s){const i=(0,l.up)("el-slider"),u=(0,l.up)("el-dialog");return(0,l.wg)(),(0,l.j4)(u,{class:"volume-dialog",title:"调节音量","destroy-on-close":"",modelValue:n.state.show,"onUpdate:modelValue":t[1]||(t[1]=e=>n.state.show=e),center:"","align-center":"",width:"94%"},{default:(0,l.w5)((()=>[(0,l._)("div",j,[(0,l._)("div",z,[(0,l._)("div",M,[(0,l.Wm)(i,{onChange:n.handleChangeVolume,modelValue:n.state.volume,"onUpdate:modelValue":t[0]||(t[0]=e=>n.state.volume=e)},null,8,["onChange","modelValue"])])]),n.state.showRecord?((0,l.wg)(),(0,l.iD)("div",P,R)):(0,l.kq)("",!0)])])),_:1},8,["modelValue"])}var E=a(2748),F={props:["modelValue","items"],emits:["update:modelValue"],setup(e,{emit:t}){const a=(0,b.d)(),n=(0,o.$)(),s=(0,_.qj)({show:e.modelValue,items:(0,l.Fl)((()=>n.value.volume.devices)),loading:!1,volume:n.value.volume.devices[0].Volume.Value,showRecord:!1});(0,l.YP)((()=>s.show),(e=>{e||setTimeout((()=>{t("update:modelValue",e)}),300)}));const i=()=>{s.show=!1},u=()=>{(0,W.j)(s.items.map((e=>e.MachineName)),s.volume/100)},r=()=>{s.showRecord=!0},c=()=>{s.showRecord=!1};return{Mic:E.uc7,state:s,globalData:a,handleCancel:i,handleChangeVolume:u,handleMicMouseDown:r,handleMicMouseUp:c}}};const B=(0,S.Z)(F,[["render",O],["__scopeId","data-v-3ca473a0"]]);var $=B,H={components:{Volume:T,VolumeSingle:$},setup(){const e=(0,o.$)();return{pluginState:e}}};const A=(0,S.Z)(H,[["render",n]]);var Z=A},4611:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("el-switch"),u=(0,l.up)("el-col");return(0,l.wg)(),(0,l.j4)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"volume",size:"small",onClick:n.handleVolumeMute,"model-value":n.data.Volume.Mute,"inline-prompt":"","active-text":"静音","inactive-text":"静音"},null,8,["onClick","model-value"])])),_:1})}var o=a(8048),s=a(6e3),i=a(7178),u=a(2115),r={sort:0,props:["data"],setup(e){(0,u.$)();const t=()=>{let t=e.data.Volume.Mute?"确定取消静音吗?":"确定静音吗?";s.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,o.H)([e.data.MachineName],!e.data.Volume.Mute).then((e=>{e?i.z8.success("操作成功"):i.z8.error("操作失败")})).catch((()=>{i.z8.error("操作失败")}))})).catch((()=>{}))};return{data:e.data,handleVolumeMute:t}}},c=a(89);const d=(0,c.Z)(r,[["render",n],["__scopeId","data-v-87940482"]]);var m=d},3788:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return v}});var l=a(3396);const n={class:"item"},o={class:"subitem"},s=(0,l._)("span",{class:"label"},"屏幕壁纸",-1);function i(e,t,a,i,u,r){const c=(0,l.up)("el-button");return(0,l.wg)(),(0,l.iD)("div",n,[(0,l._)("div",o,[s,(0,l.Wm)(c,{onClick:i.handleOpenWallpaper},{default:(0,l.w5)((()=>[(0,l.Uk)("打开")])),_:1},8,["onClick"]),(0,l.Wm)(c,{onClick:i.handleCloseWallpaper},{default:(0,l.w5)((()=>[(0,l.Uk)("关闭")])),_:1},8,["onClick"])])])}var u=a(6e3),r=a(7178),c=a(2115),d=a(9528),m={setup(){const e=(0,c.$)(),t=()=>{n("确定打开壁纸吗?",l,!0)},a=()=>{n("确定关闭壁纸吗?",l,!1)},l=(e,t)=>(0,d.i)(e,t,`http://${window.location.hostname}:${window.location.port}/bg.jpg`),n=(t,a,l)=>{u.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{const t=e.value.command.devices.map((e=>e.MachineName));a(t,l).then((e=>{e?r.z8.success("操作成功"):r.z8.error("操作失败")})).catch((()=>{r.z8.error("操作失败")}))})).catch((()=>{}))};return{pluginState:e,handleOpenWallpaper:t,handleCloseWallpaper:a}}},p=a(89);const h=(0,p.Z)(m,[["render",i]]);var v=h},9846:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return m}});var l=a(3396);function n(e,t,a,n,o,s){const i=(0,l.up)("el-switch"),u=(0,l.up)("el-col");return(0,l.wg)(),(0,l.j4)(u,{span:3},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{class:"wallpaper",size:"small",onClick:n.handleWallpaper,"model-value":n.data.Wallpaper.Value,"inline-prompt":"","active-text":"壁纸","inactive-text":"壁纸"},null,8,["onClick","model-value"])])),_:1})}var o=a(9528),s=a(6e3),i=a(7178),u=a(2115),r={sort:3,props:["data"],setup(e){(0,u.$)();const t=()=>{let t=e.data.Wallpaper.Value?"确定关闭壁纸吗?":"确定开启壁纸吗?";s.T.confirm(t,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,o.i)([e.data.MachineName],!e.data.Wallpaper.Value,`${window.location.origin}/bg.jpg`).then((e=>{e?i.z8.success("操作成功"):i.z8.error("操作失败")})).catch((()=>{i.z8.error("操作失败")}))})).catch((()=>{}))};return{data:e.data,handleWallpaper:t}}},c=a(89);const d=(0,c.Z)(r,[["render",n]]);var m=d},2681:function(e,t,a){var l={"./command/BtnLeft.vue":459,"./keyboard/BtnLeft.vue":6159,"./message/BtnLeft.vue":6353,"./system/BtnLeft.vue":5638};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=2681},6532:function(e,t,a){var l={"./active/BtnRight.vue":6657,"./hijack/BtnRight.vue":116,"./light/BtnRight.vue":1811,"./volume/BtnRight.vue":4647};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=6532},8023:function(e,t,a){var l={"./keyboard/Command.vue":1296,"./llock/Command.vue":1622,"./system/Command.vue":313,"./volume/Command.vue":1708,"./wallpaper/Command.vue":3788};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=8023},8575:function(e,t,a){var l={"./active/FootMenu.vue":1737,"./device/FootMenu.vue":4718,"./hijack/FootMenu.vue":3213,"./setting/FootMenu.vue":1274};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=8575},3136:function(e,t,a){var l={"./command/FootOptionBottom.vue":8196,"./hijack/rules/FootOptionBottom.vue":4140,"./light/FootOptionBottom.vue":1938};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=3136},6736:function(e,t,a){var l={"./active/FootOptionTop.vue":4190,"./message/FootOptionTop.vue":6980,"./volume/FootOptionTop.vue":8029};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=6736},138:function(e,t,a){var l={"./active/Index.vue":7285,"./active/windows/Index.vue":2206,"./command/Index.vue":8754,"./device/Index.vue":2075,"./hijack/Index.vue":2546,"./hijack/process/Index.vue":2244,"./hijack/rules/Index.vue":2838,"./keyboard/Index.vue":9815,"./light/Index.vue":9107,"./message/Index.vue":2571,"./setting/Index.vue":5975,"./system/Index.vue":4994,"./volume/Index.vue":4214};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=138},7138:function(e,t,a){var l={"./active/Screen.vue":6487,"./share/Screen.vue":4704};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=7138},9091:function(e){function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=function(){return[]},t.resolve=t,t.id=9091,e.exports=t},120:function(e,t,a){var l={"./share/TitleLeft.vue":2592};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=120},2648:function(e,t,a){var l={"./hijack/TitleRight.vue":3844};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=2648},345:function(e,t,a){var l={"./llock/Option.vue":3937,"./report/Option.vue":528,"./system/Option.vue":6576,"./volume/Option.vue":4611,"./wallpaper/Option.vue":9846};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=345},4711:function(e,t,a){var l={"./active/index.js":3325,"./command/index.js":1459,"./device/index.js":181,"./hijack/index.js":1868,"./keyboard/index.js":7217,"./light/index.js":1958,"./llock/index.js":6458,"./message/index.js":2852,"./report/index.js":619,"./screen/index.js":5908,"./setting/index.js":4886,"./share/index.js":6194,"./system/index.js":5817,"./volume/index.js":5507,"./wallpaper/index.js":7242};function n(e){var t=o(e);return a(t)}function o(e){if(!a.o(l,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return l[e]}n.keys=function(){return Object.keys(l)},n.resolve=o,e.exports=n,n.id=4711}}]); \ No newline at end of file diff --git a/cmonitor/publish/web/js/app.457c686d.js b/cmonitor/publish/web/js/app.d66ed62e.js similarity index 97% rename from cmonitor/publish/web/js/app.457c686d.js rename to cmonitor/publish/web/js/app.d66ed62e.js index 485faf69..350c04f5 100644 --- a/cmonitor/publish/web/js/app.457c686d.js +++ b/cmonitor/publish/web/js/app.d66ed62e.js @@ -1 +1 @@ -(function(){"use strict";var n={6894:function(n,e,t){var o=t(9242),r=t(3396);function i(n,e){const t=(0,r.up)("router-view");return(0,r.wg)(),(0,r.j4)(t)}var u=t(89);const a={},c=(0,u.Z)(a,[["render",i]]);var f=c,m=t(2483);const p=[{path:"/",name:"home",component:()=>t.e(110).then(t.bind(t,780))}],s=(0,m.p7)({history:(0,m.r5)(),routes:p});var l=s,d=t(881),v=(t(4415),t(4926),t(3942),t(2748));const h=(0,o.ri)(f);h.component(v.MK.name,v.MK),h.component(v.LWA.name,v.LWA),h.component(v.rjZ.name,v.rjZ),h.component(v.K5e.name,v.K5e),h.component(v.gqx.name,v.gqx),h.component(v.UWx.name,v.UWx),h.component(v.qHu.name,v.qHu),h.component(v.HG3.name,v.HG3),h.component(v.hYj.name,v.hYj),h.component(v.a3S.name,v.a3S),h.component(v.PjE.name,v.PjE),h.component(v.Lyo.name,v.Lyo),h.component(v.v0C.name,v.v0C),h.component(v.Uos.name,v.Uos),h.component(v.g7M.name,v.g7M),h.component(v.U3h.name,v.U3h),h.component(v.HEZ.name,v.HEZ),h.component(v.K3k.name,v.K3k),h.component(v.Gq5.name,v.Gq5),h.component(v.Ruj.name,v.Ruj),h.component(v.ugo.name,v.ugo),h.component(v.i1i.name,v.i1i),h.component(v.v3j.name,v.v3j),h.component(v.UcX.name,v.UcX),h.component(v.rGh.name,v.rGh),h.component(v.x8P.name,v.x8P),h.component(v.WWB.name,v.WWB),h.component(v.w1W.name,v.w1W),h.component(v.NuB.name,v.NuB),h.use(d.Z,{size:"default"}).use(l).mount("#app")}},e={};function t(o){var r=e[o];if(void 0!==r)return r.exports;var i=e[o]={exports:{}};return n[o].call(i.exports,i,i.exports,t),i.exports}t.m=n,function(){var n=[];t.O=function(e,o,r,i){if(!o){var u=1/0;for(m=0;m=i)&&Object.keys(t.O).every((function(n){return t.O[n](o[c])}))?o.splice(c--,1):(a=!1,i0&&n[m-1][2]>i;m--)n[m]=n[m-1];n[m]=[o,r,i]}}(),function(){t.n=function(n){var e=n&&n.__esModule?function(){return n["default"]}:function(){return n};return t.d(e,{a:e}),e}}(),function(){t.d=function(n,e){for(var o in e)t.o(e,o)&&!t.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:e[o]})}}(),function(){t.f={},t.e=function(n){return Promise.all(Object.keys(t.f).reduce((function(e,o){return t.f[o](n,e),e}),[]))}}(),function(){t.u=function(n){return"js/"+n+".844b62dc.js"}}(),function(){t.miniCssF=function(n){return"css/"+n+".3ae4c36c.css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"===typeof window)return window}}()}(),function(){t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)}}(),function(){var n={},e="cmonitor.web:";t.l=function(o,r,i,u){if(n[o])n[o].push(r);else{var a,c;if(void 0!==i)for(var f=document.getElementsByTagName("script"),m=0;mt.e(110).then(t.bind(t,780))}],s=(0,m.p7)({history:(0,m.r5)(),routes:p});var l=s,d=t(881),v=(t(4415),t(4926),t(3942),t(2748));const h=(0,o.ri)(f);h.component(v.MK.name,v.MK),h.component(v.LWA.name,v.LWA),h.component(v.rjZ.name,v.rjZ),h.component(v.K5e.name,v.K5e),h.component(v.gqx.name,v.gqx),h.component(v.UWx.name,v.UWx),h.component(v.qHu.name,v.qHu),h.component(v.HG3.name,v.HG3),h.component(v.hYj.name,v.hYj),h.component(v.a3S.name,v.a3S),h.component(v.PjE.name,v.PjE),h.component(v.Lyo.name,v.Lyo),h.component(v.v0C.name,v.v0C),h.component(v.Uos.name,v.Uos),h.component(v.g7M.name,v.g7M),h.component(v.U3h.name,v.U3h),h.component(v.HEZ.name,v.HEZ),h.component(v.K3k.name,v.K3k),h.component(v.Gq5.name,v.Gq5),h.component(v.Ruj.name,v.Ruj),h.component(v.ugo.name,v.ugo),h.component(v.i1i.name,v.i1i),h.component(v.v3j.name,v.v3j),h.component(v.UcX.name,v.UcX),h.component(v.rGh.name,v.rGh),h.component(v.x8P.name,v.x8P),h.component(v.WWB.name,v.WWB),h.component(v.w1W.name,v.w1W),h.component(v.NuB.name,v.NuB),h.use(d.Z,{size:"default"}).use(l).mount("#app")}},e={};function t(o){var r=e[o];if(void 0!==r)return r.exports;var i=e[o]={exports:{}};return n[o].call(i.exports,i,i.exports,t),i.exports}t.m=n,function(){var n=[];t.O=function(e,o,r,i){if(!o){var u=1/0;for(m=0;m=i)&&Object.keys(t.O).every((function(n){return t.O[n](o[c])}))?o.splice(c--,1):(a=!1,i0&&n[m-1][2]>i;m--)n[m]=n[m-1];n[m]=[o,r,i]}}(),function(){t.n=function(n){var e=n&&n.__esModule?function(){return n["default"]}:function(){return n};return t.d(e,{a:e}),e}}(),function(){t.d=function(n,e){for(var o in e)t.o(e,o)&&!t.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:e[o]})}}(),function(){t.f={},t.e=function(n){return Promise.all(Object.keys(t.f).reduce((function(e,o){return t.f[o](n,e),e}),[]))}}(),function(){t.u=function(n){return"js/"+n+".7ce02d8e.js"}}(),function(){t.miniCssF=function(n){return"css/"+n+".9f40a1e3.css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"===typeof window)return window}}()}(),function(){t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)}}(),function(){var n={},e="cmonitor.web:";t.l=function(o,r,i,u){if(n[o])n[o].push(r);else{var a,c;if(void 0!==i)for(var f=document.getElementsByTagName("script"),m=0;m @@ -54,7 +54,7 @@ namespace cmonitor.server.api.services _ = messengerSender.SendOnly(new MessageRequestWrap { Connection = cache.Connection, - MessengerId = (ushort)ScreenMessengerIds.Clip, + MessengerId = (ushort)ScreenMessengerIds.CaptureClip, Timeout = 1000, Payload = MemoryPackSerializer.Serialize(screenClipParamInfo.Clip) }); @@ -77,7 +77,7 @@ namespace cmonitor.server.api.services _ = messengerSender.SendOnly(new MessageRequestWrap { Connection = cache.Connection, - MessengerId = (ushort)ScreenMessengerIds.Region, + MessengerId = (ushort)ScreenMessengerIds.CaptureRegion, Timeout = 1000, }).ContinueWith((result) => { diff --git a/cmonitor/server/client/ClientConfig.cs b/cmonitor/server/client/ClientConfig.cs index 09aaecbb..cae25954 100644 --- a/cmonitor/server/client/ClientConfig.cs +++ b/cmonitor/server/client/ClientConfig.cs @@ -101,8 +101,8 @@ namespace cmonitor.server.client } } - private ScreenShareState _screenShareState; - public ScreenShareState ScreenShareState + private ScreenShareStates _screenShareState; + public ScreenShareStates ScreenShareState { get => _screenShareState; set { @@ -111,6 +111,17 @@ namespace cmonitor.server.client } } + + private string _userSid = string.Empty; + public string UserSid + { + get => _userSid; set + { + _userSid = value; + updated = true; + } + } + public void Save() { configDataProvider.Save(this).Wait(); diff --git a/cmonitor/server/client/reports/llock/LLockReport.cs b/cmonitor/server/client/reports/llock/LLockReport.cs index 5d896bc5..b7ed213e 100644 --- a/cmonitor/server/client/reports/llock/LLockReport.cs +++ b/cmonitor/server/client/reports/llock/LLockReport.cs @@ -58,7 +58,7 @@ namespace cmonitor.server.client.reports.llock if (open) { CommandHelper.Windows(string.Empty, new string[] { - $"start llock.win.exe {config.ShareMemoryKey} {config.ShareMemoryLength * Config.ShareMemoryItemLength} {Config.ShareMemoryLLockIndex}" + $"start llock.win.exe {config.ShareMemoryKey} {config.ShareMemoryLength} {Config.ShareMemoryLLockIndex}" }); } }); diff --git a/cmonitor/server/client/reports/screen/ScreenReport.cs b/cmonitor/server/client/reports/screen/ScreenReport.cs index 9a763f42..78d498af 100644 --- a/cmonitor/server/client/reports/screen/ScreenReport.cs +++ b/cmonitor/server/client/reports/screen/ScreenReport.cs @@ -4,6 +4,7 @@ using cmonitor.server.service.messengers.screen; using MemoryPack; using cmonitor.server.client.reports.screen.helpers; using cmonitor.server.client.reports.screen.winapiss; +using System.IO.MemoryMappedFiles; namespace cmonitor.server.client.reports.screen { @@ -31,19 +32,11 @@ namespace cmonitor.server.client.reports.screen this.clientConfig = clientConfig; if (config.IsCLient) { - ScreenCaptureTask(); dxgiDesktop = new DxgiDesktop(0, config); gdiDesktop = new GdiDesktop(config); - InitSise(); - } - } - private void InitSise() - { - displays = DisplaysEnumerationHelper.GetDisplays(); - if (DisplayHelper.GetSystemScale(out _, out _, out int w, out int h)) - { - report.W = w; - report.H = h; + CaptureTask(); + DisplaysInit(); + ScreenShareInit(); } } @@ -66,7 +59,18 @@ namespace cmonitor.server.client.reports.screen } return null; } - public void MonitorState(bool onState) + + + private void DisplaysInit() + { + displays = DisplaysEnumerationHelper.GetDisplays(); + if (DisplayHelper.GetSystemScale(out _, out _, out int w, out int h)) + { + report.W = w; + report.H = h; + } + } + public void DisplayState(bool onState) { if (onState) { @@ -80,33 +84,55 @@ namespace cmonitor.server.client.reports.screen } - public void ShareState(ScreenShareState screenShareState) + MemoryMappedFile mmf; + MemoryMappedViewAccessor accessor; + byte[] shareScreenBytes = new byte[1 * 1024 * 1024]; + private void ScreenShareInit() + { + if (OperatingSystem.IsWindows()) + { + mmf = MemoryMappedFile.CreateOrOpen($"{config.ShareMemoryKey}/screen", shareScreenBytes.Length); + accessor = mmf.CreateViewAccessor(); + } + } + public void ScreenShareState(ScreenShareStates screenShareState) { clientConfig.ScreenShareState = screenShareState; } + public void ScreenShare(Memory data) + { + if (data.Length > 0 && data.Length <= shareScreenBytes.Length && accessor != null) + { + data.CopyTo(shareScreenBytes); + accessor.WriteArray(0, shareScreenBytes, 0, data.Length); + } + } + private ScreenReportType screenReportType = ScreenReportType.Full; private ScreenReportFullType screenReportFullType = ScreenReportFullType.Full | ScreenReportFullType.Trim; private long ticks = 0; - public void Full(ScreenReportFullType screenReportFullType) + public void CaptureFull(ScreenReportFullType screenReportFullType) { ticks = DateTime.UtcNow.Ticks; screenReportType = ScreenReportType.Full; this.screenReportFullType |= screenReportFullType; } - public void Clip(ScreenClipInfo screenClipInfo) + public void CaptureClip(ScreenClipInfo screenClipInfo) { ticks = DateTime.UtcNow.Ticks; screenReportType = ScreenReportType.Full; gdiDesktop.Clip(screenClipInfo); } - public void Region() + public void CaptureRegion() { ticks = DateTime.UtcNow.Ticks; screenReportType = ScreenReportType.Region; } - private void ScreenCaptureTask() + + private Memory fullImageMemory = Helper.EmptyArray; + private void CaptureTask() { if (OperatingSystem.IsWindows() == false) { @@ -118,14 +144,14 @@ namespace cmonitor.server.client.reports.screen { int delayms = 0; bool connected = clientSignInState.Connected == true; - bool shareState = (clientConfig.ScreenShareState & ScreenShareState.Sender) == ScreenShareState.Sender; + bool shareState = (clientConfig.ScreenShareState & ScreenShareStates.Sender) == ScreenShareStates.Sender; bool time = (DateTime.UtcNow.Ticks - ticks) / TimeSpan.TicksPerMillisecond < 1000; if (connected && (shareState || time)) { try { long start = DateTime.UtcNow.Ticks; - await ScreenCapture(); + await CaptureFrame(); delayms = (int)((DateTime.UtcNow.Ticks - start) / TimeSpan.TicksPerMillisecond); } catch (Exception ex) @@ -145,13 +171,12 @@ namespace cmonitor.server.client.reports.screen } }, TaskCreationOptions.LongRunning); } - private Memory fullImageMemory = Helper.EmptyArray; - private async Task ScreenCapture() + private async Task CaptureFrame() { - DesktopFrame frame = GetFrame(); - await SendFrame(frame); + DesktopFrame frame = CaptureGetFrame(); + await CaptureSendFrame(frame); } - private DesktopFrame GetFrame() + private DesktopFrame CaptureGetFrame() { DesktopFrame frame = null; @@ -188,7 +213,7 @@ namespace cmonitor.server.client.reports.screen return frame; } - private async Task SendFrame(DesktopFrame frame) + private async Task CaptureSendFrame(DesktopFrame frame) { if (frame == null) { @@ -200,7 +225,7 @@ namespace cmonitor.server.client.reports.screen await messengerSender.SendOnly(new MessageRequestWrap { Connection = clientSignInState.Connection, - MessengerId = (ushort)ScreenMessengerIds.FullReport, + MessengerId = (ushort)ScreenMessengerIds.CaptureFullReport, Payload = frame.FullImage, }); } @@ -209,7 +234,7 @@ namespace cmonitor.server.client.reports.screen await messengerSender.SendOnly(new MessageRequestWrap { Connection = clientSignInState.Connection, - MessengerId = (ushort)ScreenMessengerIds.RegionReport, + MessengerId = (ushort)ScreenMessengerIds.CaptureRegionReport, Payload = frame.RegionImage, }); } @@ -218,7 +243,7 @@ namespace cmonitor.server.client.reports.screen await messengerSender.SendOnly(new MessageRequestWrap { Connection = clientSignInState.Connection, - MessengerId = (ushort)ScreenMessengerIds.Rectangles, + MessengerId = (ushort)ScreenMessengerIds.CaptureRectangles, Payload = MemoryPackSerializer.Serialize(frame.UpdatedRegions), }); } @@ -273,7 +298,7 @@ namespace cmonitor.server.client.reports.screen public int H { get; set; } } - public enum ScreenShareState : byte + public enum ScreenShareStates : byte { None = 0, Sender = 1, diff --git a/cmonitor/server/client/reports/screen/Win32Interop.cs b/cmonitor/server/client/reports/screen/Win32Interop.cs index 8da64cc5..a46227b4 100644 --- a/cmonitor/server/client/reports/screen/Win32Interop.cs +++ b/cmonitor/server/client/reports/screen/Win32Interop.cs @@ -1,6 +1,7 @@ using cmonitor.server.client.reports.screen.winapis; using cmonitor.server.client.reports.screen.winapiss; using common.libs; +using Microsoft.Win32; using System.ComponentModel; using System.Diagnostics; using System.Runtime.InteropServices; @@ -322,6 +323,71 @@ namespace cmonitor.server.client.reports.screen } return string.Empty; } + public static string GetDefaultUserSid() + { + if (OperatingSystem.IsWindows() == false) + { + return string.Empty; + } + + List registrySids = Registry.Users.GetSubKeyNames().ToList(); + List sids = new List(); + int resumeHandle = 0; + int result = NetApi32.NetUserEnum(null, 0, 2, out IntPtr bufPtr, -1, out int entriesRead, out int totalEntries, ref resumeHandle); + if (result == 0) + { + try + { + for (int i = 0; i < entriesRead; i++) + { + USER_INFO_0 userInfo = (USER_INFO_0)Marshal.PtrToStructure(bufPtr + (Marshal.SizeOf(typeof(USER_INFO_0)) * i), typeof(USER_INFO_0)); + + int cbSid = 0; + int cchReferencedDomainName = 0; + int peUse; + StringBuilder referencedDomainName = new StringBuilder(); + IntPtr pSid = IntPtr.Zero; + + bool bSuccess = LookupAccountName(null, userInfo.usri0_name, pSid, ref cbSid, referencedDomainName, ref cchReferencedDomainName, out peUse); + if (!bSuccess && cbSid > 0) + { + pSid = Marshal.AllocHGlobal(cbSid); + referencedDomainName.EnsureCapacity(cchReferencedDomainName); + bSuccess = LookupAccountName(null, userInfo.usri0_name, pSid, ref cbSid, referencedDomainName, ref cchReferencedDomainName, out peUse); + } + + if (bSuccess) + { + if (ConvertSidToStringSid(pSid, out string stringSid)) + { + if (registrySids.Contains(stringSid)) + { + sids.Add(stringSid); + } + } + } + + if (pSid != IntPtr.Zero) + { + Marshal.FreeHGlobal(pSid); + } + } + } + catch (Exception) + { + } + finally + { + NetApi32.NetApiBufferFree(bufPtr); + } + } + + if (sids.Count == 1) + { + return sids[0]; + } + return string.Empty; + } public static bool IsSystemUser() { return currentUsername == "NT AUTHORITY\\SYSTEM"; @@ -351,4 +417,9 @@ namespace cmonitor.server.client.reports.screen } + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + public struct USER_INFO_0 + { + public string usri0_name; + } } diff --git a/cmonitor/server/client/reports/screen/winapis/ADVAPI32.cs b/cmonitor/server/client/reports/screen/winapis/ADVAPI32.cs index 516aaf1f..3e8d7d59 100644 --- a/cmonitor/server/client/reports/screen/winapis/ADVAPI32.cs +++ b/cmonitor/server/client/reports/screen/winapis/ADVAPI32.cs @@ -1,6 +1,7 @@ using System; using System.Runtime.InteropServices; using System.Security; +using System.Text; namespace cmonitor.server.client.reports.screen.winapis; @@ -377,4 +378,15 @@ public static class ADVAPI32 public IntPtr Sid; public int Attributes; } + + [DllImport("Advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern bool LookupAccountName( + string lpSystemName, + string lpAccountName, + IntPtr Sid, + ref int cbSid, + StringBuilder ReferencedDomainName, + ref int cchReferencedDomainName, + out int peUse + ); } diff --git a/cmonitor/server/client/reports/screen/winapis/NetApi32.cs b/cmonitor/server/client/reports/screen/winapis/NetApi32.cs index 0c9ac4fd..a4f40b68 100644 --- a/cmonitor/server/client/reports/screen/winapis/NetApi32.cs +++ b/cmonitor/server/client/reports/screen/winapis/NetApi32.cs @@ -1,4 +1,5 @@ using System.Runtime.InteropServices; +using System.Text; namespace cmonitor.server.client.reports.screen.winapis { @@ -21,5 +22,20 @@ namespace cmonitor.server.client.reports.screen.winapis { return NetUserChangePassword(domainname, username, oldpassword, newpassword) == 0; } + + [DllImport("Netapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern int NetUserEnum( + StringBuilder servername, + int level, + int filter, + out IntPtr bufptr, + int prefmaxlen, + out int entriesread, + out int totalentries, + ref int resume_handle + ); + + [DllImport("Netapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern int NetApiBufferFree(IntPtr Buffer); } } diff --git a/cmonitor/server/client/reports/system/SystemReport.cs b/cmonitor/server/client/reports/system/SystemReport.cs index 53165420..bc0f27c2 100644 --- a/cmonitor/server/client/reports/system/SystemReport.cs +++ b/cmonitor/server/client/reports/system/SystemReport.cs @@ -1,6 +1,5 @@ using cmonitor.server.client.reports.screen; using cmonitor.server.client.reports.screen.winapis; -using cmonitor.server.client.reports.share; using common.libs; using MemoryPack; using Microsoft.Win32; @@ -12,21 +11,17 @@ namespace cmonitor.server.client.reports.system public string Name => "System"; private readonly SystemReportInfo systemReportInfo = new SystemReportInfo(); - private readonly RegistryOptionHelper registryOptionHelper = new RegistryOptionHelper(); - private readonly RegistryCplHelper registryCplHelper = new RegistryCplHelper(); + private readonly RegistryOptionHelper registryOptionHelper; + private double lastCpu; private double lastMemory; - - private ReportDriveInfo[] drives; private Dictionary registryKeys; - private readonly ShareReport shareReport; - private readonly Config config; - public SystemReport(ShareReport shareReport, Config config) + public SystemReport(ClientConfig clientConfig) { - this.shareReport = shareReport; - this.config = config; + registryOptionHelper = new RegistryOptionHelper(clientConfig); + drives = WindowsDrive.GetAllDrives(); registryKeys = registryOptionHelper.GetKeys(); ReportTask(); @@ -109,29 +104,6 @@ namespace cmonitor.server.client.reports.system } }, TaskCreationOptions.LongRunning); - - /* - ShareItemInfo shareItemInfo = new ShareItemInfo - { - Index = config.ShareMemoryLength - 1, - Key = "System" - }; - long lastTime = 0; - Task.Factory.StartNew(() => - { - while (true) - { - long time = (long)(DateTime.UtcNow.Subtract(startTime)).TotalMilliseconds; - if (time - lastTime >= 300) - { - shareItemInfo.Value = time.ToString(); - shareReport.Update(shareItemInfo); - lastTime = time; - } - Thread.Sleep(100); - } - }, TaskCreationOptions.LongRunning); - */ } } @@ -163,14 +135,19 @@ namespace cmonitor.server.client.reports.system public sealed class RegistryOptionHelper { private string currentUserSid = string.Empty; + private readonly ClientConfig clientConfig; char[] values; - public RegistryOptionHelper() + public RegistryOptionHelper(ClientConfig clientConfig) { + this.clientConfig = clientConfig; values = string.Empty.PadLeft(Infos.Length, '0').ToCharArray(); - currentUserSid = Win32Interop.GetCurrentUserSid(); + GetSid(); } + public string GetValues() { + GetSid(); + if (OperatingSystem.IsWindows()) { for (int i = 0; i < Infos.Length; i++) @@ -197,6 +174,10 @@ namespace cmonitor.server.client.reports.system } public bool UpdateValue(string name, bool value) { + if (string.IsNullOrWhiteSpace(currentUserSid)) + { + return false; + } RegistryOptionInfo info = Infos.FirstOrDefault(c => c.Key == name); if (info == null) return false; @@ -223,7 +204,23 @@ namespace cmonitor.server.client.reports.system } return string.Empty; } - + private void GetSid() + { + if (string.IsNullOrWhiteSpace(currentUserSid)) + { + currentUserSid = clientConfig.UserSid; + } + if (string.IsNullOrWhiteSpace(currentUserSid)) + { + currentUserSid = Win32Interop.GetCurrentUserSid(); + clientConfig.UserSid = currentUserSid; + } + if (string.IsNullOrWhiteSpace(currentUserSid)) + { + currentUserSid = Win32Interop.GetDefaultUserSid(); + clientConfig.UserSid = currentUserSid; + } + } public Dictionary GetKeys() { @@ -267,7 +264,7 @@ namespace cmonitor.server.client.reports.system new RegistryOptionPathInfo{ Path="HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", Key="DisableTaskMgr", DisallowValue="1", AllowValue="0" } } }, - + new RegistryOptionInfo{ Key="DisableRegistryTools", Desc="注册表编辑", @@ -275,7 +272,7 @@ namespace cmonitor.server.client.reports.system new RegistryOptionPathInfo{ Path="HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", Key="DisableRegistryTools", DisallowValue="0", AllowValue="0" } } }, - + new RegistryOptionInfo{ Key="RestrictRun", Desc="所有运行", @@ -283,7 +280,7 @@ namespace cmonitor.server.client.reports.system new RegistryOptionPathInfo{ Path="HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", Key="RestrictRun", DisallowValue="1", AllowValue="0" } } }, - + new RegistryOptionInfo{ Key="NoControlPanel", Desc="系统设置", @@ -396,7 +393,7 @@ namespace cmonitor.server.client.reports.system Key="USBSTOR", Desc="U盘", Paths = new RegistryOptionPathInfo[]{ - new RegistryOptionPathInfo{ Path="HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\USBSTOR", Key="USBSTOR", DisallowValue="4", AllowValue="3" } + new RegistryOptionPathInfo{ Path="HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\USBSTOR", Key="Start", DisallowValue="4", AllowValue="3" } } } }; @@ -423,166 +420,4 @@ namespace cmonitor.server.client.reports.system } - public sealed class RegistryCplHelper - { - private string currentUserSid = string.Empty; - private char[] values; - private string valuesPath = string.Empty;//"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\DisallowCpl"; - private string switchPath = string.Empty;//"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"; - - public RegistryCplHelper() - { - values = string.Empty.PadLeft(Infos.Length, '0').ToCharArray(); - currentUserSid = Win32Interop.GetCurrentUserSid(); - SwitchOn(); - } - public string GetValues() - { - if (OperatingSystem.IsWindows()) - { - RegistryKey key = GetRegistryValuesKey(valuesPath); - if (key != null) - { - for (int i = 0; i < Infos.Length; i++) - { - RegistryCplInfo item = Infos[i]; - object value = key.GetValue(item.Key); - values[i] = (value == null ? '0' : '1'); - } - } - } - return new string(values); - } - public bool UpdateValue(string name, bool value) - { - RegistryCplInfo info = Infos.FirstOrDefault(c => c.Key == name); - if (info == null) return false; - - if (OperatingSystem.IsWindows()) - { - RegistryKey key = GetRegistryValuesKey(valuesPath); - if (key == null) - { - return false; - } - if (value) - { - key.SetValue(info.Key, info.Key, RegistryValueKind.String); - } - else - { - key.DeleteValue(info.Key); - } - key.Close(); - return true; - } - return false; - } - private RegistryKey GetRegistryValuesKey(string path) - { - if (OperatingSystem.IsWindows()) - { - if (!string.IsNullOrWhiteSpace(currentUserSid)) - { - Registry.Users.OpenSubKey(currentUserSid, true); - } - } - - return null; - } - private void SwitchOn() - { - if (OperatingSystem.IsWindows()) - { - RegistryKey key = GetRegistryValuesKey(switchPath); - if (key != null) - { - key.SetValue("DisallowCpl", 1, RegistryValueKind.DWord); - key.Close(); - } - } - } - - public Dictionary GetKeys() - { - Dictionary keys = new Dictionary(); - - for (int i = 0; i < Infos.Length; i++) - { - RegistryCplInfo item = Infos[i]; - keys[item.Key] = new RegistryCplKeyInfo { Desc = item.Desc, Index = (ushort)i }; - } - - return keys; - } - //Desc为空则不显示 - private RegistryCplInfo[] Infos = new RegistryCplInfo[] { - /* - new RegistryCplInfo{ Key="Microsoft.ActionCenter", Desc="操作中心" }, - new RegistryCplInfo{ Key="Microsoft.AdministrativeTools", Desc="管理工具" }, - new RegistryCplInfo{ Key="Microsoft.AutoPlay", Desc="自动播放" }, - new RegistryCplInfo{ Key="Microsoft.BiometricDevices", Desc="生物识别设备" }, - new RegistryCplInfo{ Key="Microsoft.BitLockerDriveEncryption", Desc="BitLocker 驱动器加密" }, - new RegistryCplInfo{ Key="Microsoft.ColorManagement", Desc="颜色管理" }, - new RegistryCplInfo{ Key="Microsoft.CredentialManager", Desc="凭据管理器" }, - new RegistryCplInfo{ Key="Microsoft.DateAndTime", Desc="日期和时间" }, - new RegistryCplInfo{ Key="Microsoft.DefaultPrograms", Desc="默认程序" }, - new RegistryCplInfo{ Key="Microsoft.DeviceManager", Desc="设备管理器" }, - new RegistryCplInfo{ Key="Microsoft.DevicesAndPrinters", Desc="设备和打印机" }, - new RegistryCplInfo{ Key="Microsoft.Display", Desc="显示" }, - new RegistryCplInfo{ Key="Microsoft.EaseOfAccessCenter", Desc="轻松访问中心" }, - new RegistryCplInfo{ Key="Microsoft.ParentalControls", Desc="家庭安全" }, - new RegistryCplInfo{ Key="Microsoft.FileHistory", Desc="文件历史记录" }, - new RegistryCplInfo{ Key="Microsoft.FolderOptions", Desc="文件夹选项" }, - new RegistryCplInfo{ Key="Microsoft.Fonts", Desc="字体" }, - new RegistryCplInfo{ Key="Microsoft.HomeGroup", Desc="家庭组" }, - new RegistryCplInfo{ Key="Microsoft.IndexingOptions", Desc="索引选项" }, - new RegistryCplInfo{ Key="Microsoft.Infrared", Desc="红外线" }, - new RegistryCplInfo{ Key="Microsoft.InternetOptions", Desc="Internet 选项" }, - new RegistryCplInfo{ Key="Microsoft.iSCSIInitiator", Desc="iSCSI 发起程序" }, - new RegistryCplInfo{ Key="Microsoft.iSNSServer", Desc="iSNS 服务器" }, - new RegistryCplInfo{ Key="Microsoft.Keyboard", Desc="键盘" }, - new RegistryCplInfo{ Key="Microsoft.LocationSettings", Desc="位置设置" }, - new RegistryCplInfo{ Key="Microsoft.Mouse", Desc="鼠标" }, - new RegistryCplInfo{ Key="Microsoft.NetworkAndSharingCenter", Desc="网络和共享中心" }, - new RegistryCplInfo{ Key="Microsoft.NotificationAreaIcons", Desc="通知区域图标" }, - new RegistryCplInfo{ Key="Microsoft.PenAndTouch", Desc="触控笔和触控" }, - new RegistryCplInfo{ Key="Microsoft.Personalization", Desc="个性化" }, - new RegistryCplInfo{ Key="Microsoft.PowerOptions", Desc="电源选项" }, - new RegistryCplInfo{ Key="Microsoft.ProgramsAndFeatures", Desc="程序和功能" }, - new RegistryCplInfo{ Key="Microsoft.Recovery", Desc="恢复" }, - new RegistryCplInfo{ Key="Microsoft.RegionAndLanguage", Desc="区域" }, - new RegistryCplInfo{ Key="Microsoft.RemoteAppAndDesktopConnections", Desc="桌面连接" }, - new RegistryCplInfo{ Key="Microsoft.Sound", Desc="声音" }, - new RegistryCplInfo{ Key="Microsoft.SpeechRecognition", Desc="语音识别" }, - new RegistryCplInfo{ Key="Microsoft.StorageSpaces", Desc="存储空间" }, - new RegistryCplInfo{ Key="Microsoft.SyncCenter", Desc="同步中心" }, - new RegistryCplInfo{ Key="Microsoft.System", Desc="系统" }, - new RegistryCplInfo{ Key="Microsoft.Taskbar", Desc="任务栏和导航" }, - new RegistryCplInfo{ Key="Microsoft.Troubleshooting", Desc="疑难解答" }, - new RegistryCplInfo{ Key="Microsoft.TSAppInstall", Desc="TSAppInstall" }, - new RegistryCplInfo{ Key="Microsoft.UserAccounts", Desc="用户帐户" }, - new RegistryCplInfo{ Key="Microsoft.WindowsAnytimeUpgrade", Desc="Windows Anytime Upgrade" }, - new RegistryCplInfo{ Key="Microsoft.WindowsDefender", Desc="Windows Defender" }, - new RegistryCplInfo{ Key="Microsoft.WindowsFirewall", Desc="Windows 防火墙" }, - new RegistryCplInfo{ Key="Microsoft.MobilityCenter", Desc="Windows 移动中心" }, - new RegistryCplInfo{ Key="Microsoft.PortableWorkspaceCreator", Desc="Windows To Go" }, - new RegistryCplInfo{ Key="Microsoft.WindowsUpdate", Desc="Windows 更新" }, - new RegistryCplInfo{ Key="Microsoft.WorkFolders", Desc="工作文件夹" }, - */ - }; - sealed class RegistryCplInfo - { - public string Key { get; set; } = string.Empty; - public string Desc { get; set; } = string.Empty; - } - public sealed class RegistryCplKeyInfo - { - public string Desc { get; set; } - public ushort Index { get; set; } - } - - - - } } diff --git a/cmonitor/server/client/reports/wallpaper/WallpaperReport.cs b/cmonitor/server/client/reports/wallpaper/WallpaperReport.cs index 400eedd5..2936d173 100644 --- a/cmonitor/server/client/reports/wallpaper/WallpaperReport.cs +++ b/cmonitor/server/client/reports/wallpaper/WallpaperReport.cs @@ -54,7 +54,7 @@ namespace cmonitor.server.client.reports.llock if (open) { CommandHelper.Windows(string.Empty, new string[] { - $"start wallpaper.win.exe \"{url}\" {config.ShareMemoryKey} {config.ShareMemoryLength* Config.ShareMemoryItemLength} {Config.ShareMemoryKeyBoardIndex} {Config.ShareMemoryWallpaperIndex}" + $"start wallpaper.win.exe \"{url}\" {config.ShareMemoryKey} {config.ShareMemoryLength} {Config.ShareMemoryKeyBoardIndex} {Config.ShareMemoryWallpaperIndex}" }); } }); diff --git a/cmonitor/server/service/messengers/screen/ScreenMessenger.cs b/cmonitor/server/service/messengers/screen/ScreenMessenger.cs index 4aa6d956..de7e1298 100644 --- a/cmonitor/server/service/messengers/screen/ScreenMessenger.cs +++ b/cmonitor/server/service/messengers/screen/ScreenMessenger.cs @@ -1,5 +1,4 @@ using cmonitor.server.api; -using cmonitor.server.client.reports; using cmonitor.server.client.reports.screen; using cmonitor.server.service.messengers.sign; using MemoryPack; @@ -21,19 +20,19 @@ namespace cmonitor.server.service.messengers.screen this.signCaching = signCaching; } - [MessengerId((ushort)ScreenMessengerIds.Full)] - public void Full(IConnection connection) + [MessengerId((ushort)ScreenMessengerIds.CaptureFull)] + public void CaptureFull(IConnection connection) { ScreenReportFullType reportType = ScreenReportFullType.Trim; if (connection.ReceiveRequestWrap.Payload.Length > 0) { reportType = (ScreenReportFullType)connection.ReceiveRequestWrap.Payload.Span[0]; } - screenReport.Full(reportType); + screenReport.CaptureFull(reportType); } - [MessengerId((ushort)ScreenMessengerIds.FullReport)] - public void FullReport(IConnection connection) + [MessengerId((ushort)ScreenMessengerIds.CaptureFullReport)] + public void CaptureFullReport(IConnection connection) { if (signCaching.Get(connection.Name, out SignCacheInfo cache)) { @@ -49,48 +48,53 @@ namespace cmonitor.server.service.messengers.screen } } - [MessengerId((ushort)ScreenMessengerIds.Share)] - public void Share(IConnection connection) + [MessengerId((ushort)ScreenMessengerIds.CaptureClip)] + public void CaptureClip(IConnection connection) { - + screenReport.CaptureClip(MemoryPackSerializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span)); } - [MessengerId((ushort)ScreenMessengerIds.Clip)] - public void Clip(IConnection connection) + [MessengerId((ushort)ScreenMessengerIds.CaptureRegion)] + public void CaptureRegion(IConnection connection) { - screenReport.Clip(MemoryPackSerializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span)); + screenReport.CaptureRegion(); } - - - [MessengerId((ushort)ScreenMessengerIds.Region)] - public void Region(IConnection connection) - { - screenReport.Region(); - } - [MessengerId((ushort)ScreenMessengerIds.RegionReport)] - public void RegionReport(IConnection connection) + [MessengerId((ushort)ScreenMessengerIds.CaptureRegionReport)] + public void CaptureRegionReport(IConnection connection) { clientServer.Notify("/notify/report/screen/region", connection.Name, connection.ReceiveRequestWrap.Payload); } - - [MessengerId((ushort)ScreenMessengerIds.Rectangles)] - public void Rectangles(IConnection connection) + [MessengerId((ushort)ScreenMessengerIds.CaptureRectangles)] + public void CaptureRectangles(IConnection connection) { Rectangle[] rectangles = MemoryPackSerializer.Deserialize(connection.ReceiveRequestWrap.Payload.Span); clientServer.Notify("/notify/report/screen/rectangles", new { Name = connection.Name, Rectangles = rectangles }); } - [MessengerId((ushort)ScreenMessengerIds.MonitorState)] - public void MonitorState(IConnection connection) + [MessengerId((ushort)ScreenMessengerIds.DisplayState)] + public void DisplayState(IConnection connection) { if (connection.ReceiveRequestWrap.Payload.Length == 1) { byte state = connection.ReceiveRequestWrap.Payload.Span[0]; - screenReport.MonitorState(state == 1); + screenReport.DisplayState(state == 1); } } + + + [MessengerId((ushort)ScreenMessengerIds.ScreenShare)] + public void ScreenShare(IConnection connection) + { + screenReport.ScreenShare(connection.ReceiveRequestWrap.Payload); + } + + [MessengerId((ushort)ScreenMessengerIds.ScreenShareState)] + public void ScreenShareState(IConnection connection) + { + screenReport.ScreenShareState((ScreenShareStates)connection.ReceiveRequestWrap.Payload.Span[0]); + } } } diff --git a/cmonitor/server/service/messengers/screen/ScreenMessengerIds.cs b/cmonitor/server/service/messengers/screen/ScreenMessengerIds.cs index bd502e13..5cc34cfb 100644 --- a/cmonitor/server/service/messengers/screen/ScreenMessengerIds.cs +++ b/cmonitor/server/service/messengers/screen/ScreenMessengerIds.cs @@ -2,20 +2,20 @@ { public enum ScreenMessengerIds : ushort { - Full = 800, - FullReport = 801, + CaptureFull = 800, + CaptureFullReport = 801, - Clip = 802, + CaptureClip = 802, - Region = 803, - RegionReport = 804, + CaptureRegion = 803, + CaptureRegionReport = 804, - Rectangles = 805, + CaptureRectangles = 805, - MonitorState = 806, + DisplayState = 806, - ShareState = 807, - Share = 808, + ScreenShareState = 807, + ScreenShare = 808, None = 899 } diff --git a/llock.win/CommandHelper.cs b/llock.win/CommandHelper.cs index 1c0ef934..6a66c27d 100644 --- a/llock.win/CommandHelper.cs +++ b/llock.win/CommandHelper.cs @@ -5,19 +5,11 @@ namespace llock.win { public sealed class CommandHelper { - public static string Windows(string arg, string[] commands) + public static void Windows(string arg, string[] commands) { - return Execute("cmd.exe", arg, commands); + Execute("cmd.exe", arg, commands); } - public static string Linux(string arg, string[] commands) - { - return Execute("/bin/bash", arg, commands); - } - public static string Osx(string arg, string[] commands) - { - return Execute("/bin/bash", arg, commands); - } - public static Process Execute(string fileName, string arg) + public static void Execute(string fileName, string arg, string[] commands) { Process proc = new Process(); proc.StartInfo.CreateNoWindow = true; @@ -28,23 +20,7 @@ namespace llock.win proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.Arguments = arg; proc.StartInfo.Verb = "runas"; - proc.Start(); - - //Process proc = Process.Start(fileName, arg); - return proc; - } - public static string Execute(string fileName, string arg, string[] commands) - { - Process proc = new Process(); - //proc.StartInfo.WorkingDirectory = Path.GetFullPath(Path.Join("./")); - proc.StartInfo.CreateNoWindow = true; - proc.StartInfo.FileName = fileName; - proc.StartInfo.UseShellExecute = false; - proc.StartInfo.RedirectStandardError = true; - proc.StartInfo.RedirectStandardInput = true; - proc.StartInfo.RedirectStandardOutput = true; - proc.StartInfo.Arguments = arg; - proc.StartInfo.Verb = "runas"; + proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.Start(); if (commands.Length > 0) @@ -58,13 +34,6 @@ namespace llock.win proc.StandardInput.AutoFlush = true; proc.StandardInput.WriteLine("exit"); proc.StandardInput.Close(); - string output = proc.StandardOutput.ReadToEnd(); - string error = proc.StandardError.ReadToEnd(); - proc.WaitForExit(); - proc.Close(); - proc.Dispose(); - - return output; } } } diff --git a/llock.win/Form1.Designer.cs b/llock.win/MainForm.Designer.cs similarity index 99% rename from llock.win/Form1.Designer.cs rename to llock.win/MainForm.Designer.cs index db684a34..8c8170f2 100644 --- a/llock.win/Form1.Designer.cs +++ b/llock.win/MainForm.Designer.cs @@ -1,6 +1,6 @@ namespace llock.win { - partial class Form1 + partial class MainForm { /// /// 必需的设计器变量。 @@ -30,6 +30,7 @@ { this.groupBox1 = new System.Windows.Forms.GroupBox(); this.btnClear = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); this.btn0 = new System.Windows.Forms.Button(); this.btn9 = new System.Windows.Forms.Button(); this.btn8 = new System.Windows.Forms.Button(); @@ -40,7 +41,6 @@ this.btn3 = new System.Windows.Forms.Button(); this.btn2 = new System.Windows.Forms.Button(); this.btn1 = new System.Windows.Forms.Button(); - this.button1 = new System.Windows.Forms.Button(); this.textBox1 = new System.Windows.Forms.TextBox(); this.groupBox1.SuspendLayout(); this.SuspendLayout(); @@ -76,6 +76,16 @@ this.btnClear.Text = "清除"; this.btnClear.UseVisualStyleBackColor = true; // + // button1 + // + this.button1.Location = new System.Drawing.Point(130, 145); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(50, 23); + this.button1.TabIndex = 1; + this.button1.Text = "解锁"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // // btn0 // this.btn0.Location = new System.Drawing.Point(74, 145); @@ -166,16 +176,6 @@ this.btn1.Text = "1"; this.btn1.UseVisualStyleBackColor = true; // - // button1 - // - this.button1.Location = new System.Drawing.Point(130, 145); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(50, 23); - this.button1.TabIndex = 1; - this.button1.Text = "解锁"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); - // // textBox1 // this.textBox1.Location = new System.Drawing.Point(18, 28); @@ -192,7 +192,7 @@ this.ClientSize = new System.Drawing.Size(800, 450); this.Controls.Add(this.groupBox1); this.Name = "Form1"; - this.Text = "Form1"; + this.Text = "MainForm"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnClose); this.Load += new System.EventHandler(this.OnLoad); this.groupBox1.ResumeLayout(false); diff --git a/llock.win/Form1.cs b/llock.win/MainForm.cs similarity index 85% rename from llock.win/Form1.cs rename to llock.win/MainForm.cs index 508b050f..9806098b 100644 --- a/llock.win/Form1.cs +++ b/llock.win/MainForm.cs @@ -9,7 +9,7 @@ using System.Windows.Forms; namespace llock.win { - public partial class Form1 : Form + public partial class MainForm : Form { Hook hook = new Hook(); private string shareMkey; @@ -30,7 +30,7 @@ namespace llock.win } } - public Form1(string shareMkey, int shareMLength, int shareIndex) + public MainForm(string shareMkey, int shareMLength, int shareIndex) { this.shareMkey = shareMkey; this.shareMLength = shareMLength; @@ -273,20 +273,6 @@ namespace llock.win catch (Exception) { } - /* - Guid activePolicyGuid; - IntPtr ptr; - if (PowerGetActiveScheme(IntPtr.Zero, out ptr) == 0) - { - activePolicyGuid = (Guid)Marshal.PtrToStructure(ptr, typeof(Guid)); - if (ptr != IntPtr.Zero) - { - Marshal.FreeHGlobal(ptr); - } - uint resultPowerButton = PowerWriteACValueIndex(IntPtr.Zero, ref activePolicyGuid, ref powerButtonGuid, ref powerButtonGuid, 0); - uint resultSleepButton = PowerWriteACValueIndex(IntPtr.Zero, ref activePolicyGuid, ref sleepButtonGuid, ref sleepButtonGuid, 0); - } - */ Task.Run(() => { CommandHelper.Windows(string.Empty, new string[] { "gpupdate /force" }); @@ -296,14 +282,11 @@ namespace llock.win } public void Close() { - bool retKeyboard = true; if (hHook != 0) { - retKeyboard = UnhookWindowsHookEx(hHook); + UnhookWindowsHookEx(hHook); hHook = 0; } - //如果去掉钩子失败. - //if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed."); try { foreach (string user in Registry.Users.GetSubKeyNames()) @@ -350,37 +333,10 @@ namespace llock.win if (nCode >= 0) { return 1; - /* - KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); - bool res = (kbh.vkCode >= (int)Keys.D0 && kbh.vkCode <= (int)Keys.D9) - || (kbh.vkCode >= (int)Keys.NumPad0 && kbh.vkCode <= (int)Keys.NumPad9) - || (kbh.vkCode >= (int)Keys.A && kbh.vkCode <= (int)Keys.Z); - - if (res == false) - { - return 1; - } - */ } return CallNextHookEx(hHook, nCode, wParam, lParam); } - - [DllImport("powrprof.dll")] - public static extern uint GetActivePwrScheme(out IntPtr pActivePolicy); - [DllImport("powrprof.dll", SetLastError = true)] - public static extern UInt32 PowerGetActiveScheme(IntPtr UserRootPowerKey, out IntPtr ActivePolicyGuid); - - [DllImport("powrprof.dll")] - public static extern uint PowerWriteACValueIndex(IntPtr RootPowerKey, ref Guid SchemeGuid, ref Guid SubGroupOfPowerSettingsGuid, - ref Guid PowerSettingGuid, uint AcValueIndex); - - Guid powerButtonGuid = new Guid("4f971e89-eebd-4455-a8de-9e59040e7347"); // 电源按钮设置的GUID - Guid sleepButtonGuid = new Guid("96996bc0-ad50-47ec-923b-6f418386bca1"); // 睡眠按钮设置的GUID - - - - #region IDisposable 成员 public void Dispose() { diff --git a/llock.win/Form1.resx b/llock.win/MainForm.resx similarity index 100% rename from llock.win/Form1.resx rename to llock.win/MainForm.resx diff --git a/llock.win/Program.cs b/llock.win/Program.cs index cc758b74..6fb895a9 100644 --- a/llock.win/Program.cs +++ b/llock.win/Program.cs @@ -24,7 +24,7 @@ namespace llock.win Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new Form1(shareMkey, shareMLength, shareIndex)); + Application.Run(new MainForm(shareMkey, shareMLength, shareIndex)); } } } diff --git a/llock.win/llock.win.csproj b/llock.win/llock.win.csproj index a5496b4c..52aa3ab3 100644 --- a/llock.win/llock.win.csproj +++ b/llock.win/llock.win.csproj @@ -81,16 +81,16 @@ - + Form - - Form1.cs + + MainForm.cs - - Form1.cs + + MainForm.cs ResXFileCodeGenerator diff --git a/message.win/Form1.Designer.cs b/message.win/MainForm.Designer.cs similarity index 82% rename from message.win/Form1.Designer.cs rename to message.win/MainForm.Designer.cs index e24a08c8..e2972b68 100644 --- a/message.win/Form1.Designer.cs +++ b/message.win/MainForm.Designer.cs @@ -1,6 +1,6 @@ namespace message.win { - partial class Form1 + partial class MainForm { /// /// 必需的设计器变量。 @@ -28,7 +28,7 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); @@ -40,10 +40,9 @@ // this.label1.Font = new System.Drawing.Font("宋体", 36F); this.label1.ForeColor = System.Drawing.Color.Red; - this.label1.Location = new System.Drawing.Point(24, 8); - this.label1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label1.Location = new System.Drawing.Point(12, 4); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(720, 176); + this.label1.Size = new System.Drawing.Size(360, 88); this.label1.TabIndex = 0; this.label1.Text = "提醒 消息"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -51,10 +50,9 @@ // label2 // this.label2.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label2.Location = new System.Drawing.Point(38, 200); - this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label2.Location = new System.Drawing.Point(19, 100); this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(700, 216); + this.label2.Size = new System.Drawing.Size(350, 108); this.label2.TabIndex = 1; this.label2.Text = "上课时间,请注意课堂纪律"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -62,10 +60,9 @@ // label3 // this.label3.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label3.Location = new System.Drawing.Point(24, 426); - this.label3.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label3.Location = new System.Drawing.Point(12, 213); this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(720, 68); + this.label3.Size = new System.Drawing.Size(360, 34); this.label3.TabIndex = 2; this.label3.Text = "10"; this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -74,26 +71,27 @@ // this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); this.pictureBox1.InitialImage = null; - this.pictureBox1.Location = new System.Drawing.Point(252, -49); + this.pictureBox1.Location = new System.Drawing.Point(126, -24); + this.pictureBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(260, 233); + this.pictureBox1.Size = new System.Drawing.Size(130, 116); this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; this.pictureBox1.TabIndex = 3; this.pictureBox1.TabStop = false; // - // Form1 + // MainForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 24F); + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.White; - this.ClientSize = new System.Drawing.Size(768, 512); + this.ClientSize = new System.Drawing.Size(384, 256); this.Controls.Add(this.pictureBox1); this.Controls.Add(this.label3); this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; - this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); - this.Name = "Form1"; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "MainForm"; this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "提醒消息"; diff --git a/message.win/Form1.cs b/message.win/MainForm.cs similarity index 97% rename from message.win/Form1.cs rename to message.win/MainForm.cs index f5f571ce..1a1021a1 100644 --- a/message.win/Form1.cs +++ b/message.win/MainForm.cs @@ -5,7 +5,7 @@ using System.Windows.Forms; namespace message.win { - public partial class Form1 : Form + public partial class MainForm : Form { private readonly int times = 10; @@ -22,7 +22,7 @@ namespace message.win } } - public Form1(string msg, int times) + public MainForm(string msg, int times) { InitializeComponent(); ShowInTaskbar = false; diff --git a/message.win/Form1.resx b/message.win/MainForm.resx similarity index 73% rename from message.win/Form1.resx rename to message.win/MainForm.resx index 2d9fd2c3..84732af2 100644 --- a/message.win/Form1.resx +++ b/message.win/MainForm.resx @@ -828,6 +828,285 @@ 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 \ No newline at end of file diff --git a/message.win/Program.cs b/message.win/Program.cs index 85547ce7..c9f943ad 100644 --- a/message.win/Program.cs +++ b/message.win/Program.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Windows.Forms; namespace message.win @@ -11,6 +12,12 @@ namespace message.win [STAThread] static void Main(string[] args) { + Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out bool isAppRunning); + if (isAppRunning == false) + { + Environment.Exit(1); + } + AppDomain.CurrentDomain.UnhandledException += (a, b) => { }; @@ -33,7 +40,7 @@ namespace message.win Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new Form1(msg, times)); + Application.Run(new MainForm(msg, times)); } } } diff --git a/message.win/message.win.csproj b/message.win/message.win.csproj index 5bbd1790..3549b4c9 100644 --- a/message.win/message.win.csproj +++ b/message.win/message.win.csproj @@ -78,16 +78,16 @@ - + Form - - Form1.cs + + MainForm.cs - - Form1.cs + + MainForm.cs ResXFileCodeGenerator diff --git a/notify.win/Form1.Designer.cs b/notify.win/MainForm.Designer.cs similarity index 99% rename from notify.win/Form1.Designer.cs rename to notify.win/MainForm.Designer.cs index 88b32f96..3a064c21 100644 --- a/notify.win/Form1.Designer.cs +++ b/notify.win/MainForm.Designer.cs @@ -1,6 +1,6 @@ namespace notify.win { - partial class Form1 + partial class MainForm { /// /// 必需的设计器变量。 @@ -268,7 +268,7 @@ this.star31.TabIndex = 14; this.star31.TabStop = false; // - // Form1 + // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; @@ -295,7 +295,7 @@ this.Controls.Add(this.pictureBox1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.Margin = new System.Windows.Forms.Padding(2); - this.Name = "Form1"; + this.Name = "MainForm"; this.Text = "广播"; this.Load += new System.EventHandler(this.OnLoad); ((System.ComponentModel.ISupportInitialize)(this.star15)).EndInit(); diff --git a/notify.win/Form1.cs b/notify.win/MainForm.cs similarity index 97% rename from notify.win/Form1.cs rename to notify.win/MainForm.cs index 54cd6b3e..b393ad04 100644 --- a/notify.win/Form1.cs +++ b/notify.win/MainForm.cs @@ -6,7 +6,7 @@ using System.Windows.Forms; namespace notify.win { - public partial class Form1 : Form + public partial class MainForm : Form { protected override bool ShowWithoutActivation => true; @@ -28,7 +28,7 @@ namespace notify.win private int star1; private int star2; private int star3; - public Form1(int speed, string msg, int star1, int star2, int star3) + public MainForm(int speed, string msg, int star1, int star2, int star3) { this.speed = speed; this.msg = msg; diff --git a/notify.win/Form1.resx b/notify.win/MainForm.resx similarity index 100% rename from notify.win/Form1.resx rename to notify.win/MainForm.resx diff --git a/notify.win/Program.cs b/notify.win/Program.cs index e5514647..932e7d2d 100644 --- a/notify.win/Program.cs +++ b/notify.win/Program.cs @@ -28,7 +28,7 @@ namespace notify.win star3 = int.Parse(args[4]); } - Application.Run(new Form1(speed,msg, star1, star2, star3)); + Application.Run(new MainForm(speed,msg, star1, star2, star3)); } } } diff --git a/notify.win/notify.win.csproj b/notify.win/notify.win.csproj index 07130615..c481b105 100644 --- a/notify.win/notify.win.csproj +++ b/notify.win/notify.win.csproj @@ -49,16 +49,16 @@ - + Form - - Form1.cs + + MainForm.cs - - Form1.cs + + MainForm.cs ResXFileCodeGenerator diff --git a/wallpaper.win/Form1.Designer.cs b/wallpaper.win/MainForm.Designer.cs similarity index 96% rename from wallpaper.win/Form1.Designer.cs rename to wallpaper.win/MainForm.Designer.cs index ed6ec1c1..6000e620 100644 --- a/wallpaper.win/Form1.Designer.cs +++ b/wallpaper.win/MainForm.Designer.cs @@ -1,6 +1,6 @@ namespace wallpaper.win { - partial class Form1 + partial class MainForm { /// /// 必需的设计器变量。 @@ -41,13 +41,13 @@ this.pictureBox1.TabIndex = 0; this.pictureBox1.TabStop = false; // - // Form1 + // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(800, 450); this.Controls.Add(this.pictureBox1); - this.Name = "Form1"; + this.Name = "MainForm"; this.Text = "壁纸"; this.Load += new System.EventHandler(this.OnLoad); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); diff --git a/wallpaper.win/Form1.cs b/wallpaper.win/MainForm.cs similarity index 82% rename from wallpaper.win/Form1.cs rename to wallpaper.win/MainForm.cs index f15b509a..1b4150b9 100644 --- a/wallpaper.win/Form1.cs +++ b/wallpaper.win/MainForm.cs @@ -1,16 +1,16 @@ using System; using System.Diagnostics; +using System.Drawing; +using System.IO; using System.IO.MemoryMappedFiles; using System.Runtime.InteropServices; using System.Text; using System.Threading; -using System.Threading.Tasks; using System.Windows.Forms; -using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock; namespace wallpaper.win { - public partial class Form1 : Form + public partial class MainForm : Form { private IntPtr programIntPtr = IntPtr.Zero; @@ -35,7 +35,8 @@ namespace wallpaper.win return cp; } } - public Form1(string imgUrl, string shareMkey, int shareMLength, int shareKeyBoardIndex, int shareWallpaperIndex) + + public MainForm(string imgUrl, string shareMkey, int shareMLength, int shareKeyBoardIndex, int shareWallpaperIndex) { this.imgUrl = imgUrl; this.shareMkey = shareMkey; @@ -52,6 +53,32 @@ namespace wallpaper.win } + + private void OnLoad(object sender, EventArgs e) + { + pictureBox1.LoadCompleted += PictureBox1_LoadCompleted; + pictureBox1.ImageLocation = imgUrl; + + this.Dock = DockStyle.Fill; + this.ShowInTaskbar = false; + this.FormBorderStyle = FormBorderStyle.None; + + Rectangle bound = Screen.PrimaryScreen.Bounds; + this.Width = bound.Width; + this.Height = bound.Height; + this.Left = 0; + this.Top = 0; + + Find(); + Init(); + this.WindowState = FormWindowState.Maximized; + + WatchParent(); + WatchMemory(); + + hook.Start(); + } + private void Find() { // 通过类名查找一个窗口,返回窗口句柄。 @@ -59,16 +86,15 @@ namespace wallpaper.win } private void Init() { - // 窗口句柄有效 if (programIntPtr != IntPtr.Zero) { IntPtr result = IntPtr.Zero; -                // 向 Program Manager 窗口发送 0x52c 的一个消息,超时设置为0x3e8(1秒)。 -                Win32.SendMessageTimeout(programIntPtr, 0x52c, IntPtr.Zero, IntPtr.Zero, 0, 0x3e8, result); + // 向 Program Manager 窗口发送 0x52c 的一个消息,超时设置为0x3e8(1秒)。 + Win32.SendMessageTimeout(programIntPtr, 0x52c, IntPtr.Zero, IntPtr.Zero, 0, 0x3e8, result); -                // 遍历顶级窗口 -                Win32.EnumWindows((hwnd, lParam) => + // 遍历顶级窗口 + Win32.EnumWindows((hwnd, lParam) => {                     // 找到包含 SHELLDLL_DefView 这个窗口句柄的 WorkerW                     if (Win32.FindWindowEx(hwnd, IntPtr.Zero, "SHELLDLL_DefView", null) != IntPtr.Zero) @@ -86,30 +112,8 @@ namespace wallpaper.win Win32.SetParent(this.Handle, programIntPtr); } } - - MemoryMappedFile mmf2; - MemoryMappedViewAccessor accessor2; - byte[] keyBytes = Encoding.UTF8.GetBytes("KeyBoard"); - byte[] wallpaperBytes = Encoding.UTF8.GetBytes("Wallpaper"); - DateTime startTime = new DateTime(1970, 1, 1); - byte[] emptyArray = new byte[0]; - - private void OnLoad(object sender, EventArgs e) + private void WatchParent() { - pictureBox1.LoadCompleted += PictureBox1_LoadCompleted; - pictureBox1.ImageLocation = imgUrl; - - this.Dock = DockStyle.Fill; - this.ShowInTaskbar = false; - this.FormBorderStyle = FormBorderStyle.None; - - hook.Start(); - - Find(); - Init(); - - this.WindowState = FormWindowState.Maximized; - IntPtr oldprogramIntPtr = programIntPtr; new Thread(() => { @@ -123,11 +127,49 @@ namespace wallpaper.win Application.Restart(); Process.GetCurrentProcess().Kill(); } + + bool hasChild = false; + Win32.EnumChildWindows(programIntPtr, (IntPtr hwnd, IntPtr lParam) => + { + hasChild |= hwnd == this.Handle; + return true; + }, IntPtr.Zero); + if (hasChild == false) + { + Init(); + } Thread.Sleep(1000); } }).Start(); + } + private void PictureBox1_LoadCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) + { + if (e.Error != null) + { + pictureBox1.ImageLocation = "./bg.jpg"; + try + { + string filename = Process.GetCurrentProcess().MainModule.FileName; + string dir = Path.GetDirectoryName(filename); + string file = Path.Combine(dir, "bg.jpg"); + Win32.SystemParametersInfo(Win32.SPI_SETDESKWALLPAPER, 0, file, Win32.SPIF_UPDATEINIFILE | Win32.SPIF_SENDCHANGE); + + } + catch (Exception) + { + } + } + } + MemoryMappedFile mmf2; + MemoryMappedViewAccessor accessor2; + byte[] keyBytes = Encoding.UTF8.GetBytes("KeyBoard"); + byte[] wallpaperBytes = Encoding.UTF8.GetBytes("Wallpaper"); + DateTime startTime = new DateTime(1970, 1, 1); + byte[] emptyArray = new byte[0]; + private void WatchMemory() + { mmf2 = MemoryMappedFile.CreateOrOpen($"{this.shareMkey}", this.shareMLength * shareItemMLength); accessor2 = mmf2.CreateViewAccessor(); WriteKeyBoard("init"); @@ -166,15 +208,6 @@ namespace wallpaper.win } }).Start(); } - - private void PictureBox1_LoadCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) - { - if (e.Error != null) - { - pictureBox1.ImageLocation = "./bg.jpg"; - } - } - private void WriteKeyBoard(string value) { WriteMemory(this.shareKeyBoardIndex, keyBytes, Encoding.UTF8.GetBytes(value)); @@ -223,7 +256,6 @@ namespace wallpaper.win accessor2.Write((shareMLength - 1) * shareItemMLength, (byte)1); } - private bool ReadCloseMemory(int index) { int keyIndex = index * shareItemMLength; @@ -248,6 +280,11 @@ namespace wallpaper.win public static class Win32 { + [DllImport("user32.dll")] + public static extern bool EnumChildWindows(IntPtr hWndParent, EnumChildCallback lpEnumFunc, IntPtr lParam); + public delegate bool EnumChildCallback(IntPtr hwnd, IntPtr lParam); + + [DllImport("user32.dll")] public static extern IntPtr FindWindow(string className, string winName); @@ -266,6 +303,13 @@ namespace wallpaper.win [DllImport("user32.dll")] public static extern IntPtr SetParent(IntPtr hwnd, IntPtr parentHwnd); + + + [DllImport("user32.dll", CharSet = CharSet.Auto)] + public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni); + public const int SPI_SETDESKWALLPAPER = 20; + public const int SPIF_UPDATEINIFILE = 0x01; + public const int SPIF_SENDCHANGE = 0x02; } @@ -329,11 +373,19 @@ namespace wallpaper.win public static DateTime DateTime = DateTime.Now; public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { + if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); CurrentKeys = (Keys)kbh.vkCode; DateTime = DateTime.Now; + + /* + if ((Control.ModifierKeys & Keys.LWin) == Keys.LWin && (Keys)kbh.vkCode == Keys.Tab) + { + return 1; + } + */ } return CallNextHookEx(hHook, nCode, wParam, lParam); } diff --git a/wallpaper.win/Form1.resx b/wallpaper.win/MainForm.resx similarity index 100% rename from wallpaper.win/Form1.resx rename to wallpaper.win/MainForm.resx diff --git a/wallpaper.win/Program.cs b/wallpaper.win/Program.cs index 4f8a757d..016a758b 100644 --- a/wallpaper.win/Program.cs +++ b/wallpaper.win/Program.cs @@ -33,7 +33,7 @@ namespace wallpaper.win } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new Form1(imgUrl, shareMkey, shareMLength, shareKeyBoardIndex, shareWallpaperIndex)); + Application.Run(new MainForm(imgUrl, shareMkey, shareMLength, shareKeyBoardIndex, shareWallpaperIndex)); } } } diff --git a/wallpaper.win/wallpaper.win.csproj b/wallpaper.win/wallpaper.win.csproj index 616a8f42..3c028b60 100644 --- a/wallpaper.win/wallpaper.win.csproj +++ b/wallpaper.win/wallpaper.win.csproj @@ -76,16 +76,16 @@ - + Form - - Form1.cs + + MainForm.cs - - Form1.cs + + MainForm.cs ResXFileCodeGenerator diff --git a/x64/Debug/cmonitor.volume.dll b/x64/Debug/cmonitor.volume.dll new file mode 100644 index 00000000..59e3239c Binary files /dev/null and b/x64/Debug/cmonitor.volume.dll differ diff --git a/x64/Debug/cmonitor.volume.exp b/x64/Debug/cmonitor.volume.exp new file mode 100644 index 00000000..7efdd75b Binary files /dev/null and b/x64/Debug/cmonitor.volume.exp differ diff --git a/x64/Debug/cmonitor.volume.lib b/x64/Debug/cmonitor.volume.lib new file mode 100644 index 00000000..779b46cf Binary files /dev/null and b/x64/Debug/cmonitor.volume.lib differ diff --git a/x64/Debug/cmonitor.volume.pdb b/x64/Debug/cmonitor.volume.pdb new file mode 100644 index 00000000..0b18a5d8 Binary files /dev/null and b/x64/Debug/cmonitor.volume.pdb differ