Full Code of newlooper/VirtualSpace for AI

main 237d97eee27b cached
313 files
2.4 MB
635.4k tokens
2324 symbols
1 requests
Download .txt
Showing preview only (2,555K chars total). Download the full file or copy to clipboard to get everything.
Repository: newlooper/VirtualSpace
Branch: main
Commit: 237d97eee27b
Files: 313
Total size: 2.4 MB

Directory structure:
gitextract_c1e7rff4/

├── .gitignore
├── Bridge/
│   ├── Agent.cs
│   ├── Behavior.cs
│   ├── Bridge.csproj
│   ├── COPYING
│   ├── Channels.cs
│   ├── Interfaces/
│   │   ├── IAppController.cs
│   │   └── IDesktop.cs
│   ├── Resources/
│   │   ├── Images/
│   │   │   ├── Images.Designer.cs
│   │   │   └── Images.resx
│   │   └── Langs/
│   │       ├── WinFormStrings.Designer.cs
│   │       ├── WinFormStrings.resx
│   │       ├── WinFormStrings.zh-Hans.Designer.cs
│   │       └── WinFormStrings.zh-Hans.resx
│   ├── VirtualDesktopNotification.cs
│   └── Window.cs
├── COPYING
├── Configuration/
│   ├── COPYING
│   ├── ConfigTemplate.cs
│   ├── Configuration.csproj
│   ├── Const.cs
│   ├── Converter/
│   │   └── EntityConverter.cs
│   ├── DataAnnotations/
│   │   └── PropertyProtectorAttribute.cs
│   ├── Entity/
│   │   ├── Cluster.cs
│   │   ├── Colour.cs
│   │   ├── KeyBinding.cs
│   │   ├── LogConfig.cs
│   │   ├── Margin.cs
│   │   ├── Mouse.cs
│   │   ├── Navigation.cs
│   │   └── UserInterface.cs
│   ├── Events/
│   │   ├── Entity/
│   │   │   ├── ExpressionTemplate.cs
│   │   │   └── RuleTemplate.cs
│   │   └── Expression/
│   │       ├── Conditions.cs
│   │       └── Conditions.test.cs
│   ├── FodyWeavers.xml
│   ├── Manager.cs
│   ├── Profile.cs
│   └── Profiles/
│       └── Default.cs
├── Helpers/
│   ├── COPYING
│   ├── DwmApi.cs
│   ├── GlobalHotKey.cs
│   ├── Helpers.csproj
│   ├── Images.cs
│   ├── Kernel32.cs
│   ├── LowLevelHooks.cs
│   ├── StringHelper.cs
│   ├── SysInfo.cs
│   ├── TaskSchedulerHelper.cs
│   ├── User32.cs
│   ├── UserMessage.cs
│   ├── VisualEffects.cs
│   ├── Win32.cs
│   ├── WinForms.cs
│   ├── WinMsg.cs
│   └── WinRegistry.cs
├── Ipc/
│   ├── Commons/
│   │   ├── Config.cs
│   │   ├── HostInfo.cs
│   │   ├── Ipc.csproj
│   │   ├── PipeMessage.cs
│   │   └── PipeMessageType.cs
│   ├── IpcClient/
│   │   ├── IpcClient.csproj
│   │   └── IpcPipeClient.cs
│   └── IpcServer/
│       ├── IpcPipeServer.cs
│       └── IpcServer.csproj
├── LinqExpressionBuilder/
│   ├── COPYING
│   ├── Keywords.cs
│   ├── LinqExpressionBuilder.cs
│   └── LinqExpressionBuilder.csproj
├── Logger/
│   ├── COPYING
│   ├── LogMessage.cs
│   ├── Logger.cs
│   ├── Logger.csproj
│   └── Manager.cs
├── Plugin/
│   ├── Commons/
│   │   ├── Plugin.csproj
│   │   ├── PluginInfo.cs
│   │   ├── PluginManager.cs
│   │   └── WinApi.cs
│   └── PluginHost/
│       ├── PluginConst.cs
│       ├── PluginHost.cs
│       └── PluginHost.csproj
├── Plugins.sln/
│   ├── .gitignore
│   ├── COPYING
│   ├── Cube3D/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── AutoVersion.tt
│   │   ├── COPYING
│   │   ├── Config/
│   │   │   ├── Const.cs
│   │   │   ├── Settings.cs
│   │   │   └── SettingsManager.cs
│   │   ├── Cube3D.csproj
│   │   ├── D3DImages/
│   │   │   └── D3DImages.cs
│   │   ├── Effects/
│   │   │   ├── Cube.cs
│   │   │   ├── Effect.cs
│   │   │   ├── Fade.cs
│   │   │   ├── Flip.cs
│   │   │   ├── InsideCube.cs
│   │   │   ├── Reveal.cs
│   │   │   └── Slide.cs
│   │   ├── FrameToD3DImage.cs
│   │   ├── Helpers/
│   │   │   ├── User32.cs
│   │   │   ├── Win32.cs
│   │   │   ├── WinMsg.cs
│   │   │   └── WpfConverters.cs
│   │   ├── MainWindow.2D.cs
│   │   ├── MainWindow.3D.cs
│   │   ├── MainWindow.animation.cs
│   │   ├── MainWindow.frame.cs
│   │   ├── MainWindow.hotkeys.cs
│   │   ├── MainWindow.xaml
│   │   ├── MainWindow.xaml.cs
│   │   ├── SettingsWindow.xaml
│   │   ├── SettingsWindow.xaml.cs
│   │   ├── app.manifest
│   │   ├── plugin.json
│   │   └── settings.json
│   ├── Plugins.sln
│   ├── ScreenCapture/
│   │   ├── COPYING
│   │   ├── CaptureHelper.cs
│   │   ├── D3D9ShareCapture.cs
│   │   ├── Direct3D11Helper.cs
│   │   ├── FrameProcessor.cs
│   │   ├── MonitorEnumerationHelper.cs
│   │   ├── ScreenCapture.csproj
│   │   └── WindowEnumerationHelper.cs
│   └── Updater/
│       ├── AutoVersion.tt
│       ├── COPYING
│       ├── Config/
│       │   └── Const.cs
│       ├── HttpClientProgress.cs
│       ├── MainForm.Designer.cs
│       ├── MainForm.cs
│       ├── MainForm.resx
│       ├── Program.cs
│       ├── Resources/
│       │   └── Langs/
│       │       ├── WinFormStrings.resx
│       │       └── WinFormStrings.zh-Hans.resx
│       ├── Updater.csproj
│       └── plugin.json
├── Readme.md
├── Resources/
│   ├── COPYING
│   ├── Images.Designer.cs
│   ├── Images.resx
│   └── Resources.csproj
├── UiAutomation/
│   ├── COPYING
│   ├── UIA.cs
│   └── UiAutomation.csproj
├── VirtualDesktop/
│   ├── VirtualDesktop10/
│   │   ├── COM.cs
│   │   ├── VirtualDesktop.cs
│   │   ├── VirtualDesktop10.csproj
│   │   └── VirtualDesktopManager.cs
│   ├── VirtualDesktop11/
│   │   ├── COM.cs
│   │   ├── VirtualDesktop.cs
│   │   ├── VirtualDesktop11.csproj
│   │   └── VirtualDesktopManager.cs
│   ├── VirtualDesktop11_21H2/
│   │   ├── COM.cs
│   │   ├── VirtualDesktop.cs
│   │   ├── VirtualDesktop11_21H2.csproj
│   │   └── VirtualDesktopManager.cs
│   ├── VirtualDesktop11_23H2/
│   │   ├── COM.cs
│   │   ├── VirtualDesktop.cs
│   │   ├── VirtualDesktop11_23H2.csproj
│   │   └── VirtualDesktopManager.cs
│   ├── VirtualDesktop11_23H2_3085/
│   │   ├── COM.cs
│   │   ├── VirtualDesktop.cs
│   │   ├── VirtualDesktop11_23H2_3085.csproj
│   │   └── VirtualDesktopManager.cs
│   └── VirtualDesktop11_24H2/
│       ├── COM.cs
│       ├── VirtualDesktop.cs
│       ├── VirtualDesktop11_24H2.csproj
│       └── VirtualDesktopManager.cs
├── VirtualDesktopWrapper/
│   ├── DesktopManagerWrapper.cs
│   ├── DesktopManagerWrapper.events.cs
│   ├── DesktopManagerWrapper.wallpaper.cs
│   ├── DesktopWrapper.cs
│   ├── VirtualDesktopWrapper.csproj
│   └── Wrapper11.cs
├── VirtualSpace/
│   ├── App.xaml
│   ├── App.xaml.cs
│   ├── AssemblyInfo.cs
│   ├── AutoVersion.tt
│   ├── COPYING
│   ├── Factory/
│   │   └── AppControllerFactory.cs
│   ├── MainWindow.filter.cs
│   ├── MainWindow.hotkeys.cs
│   ├── MainWindow.layout.cs
│   ├── MainWindow.main.cs
│   ├── MainWindow.message.cs
│   ├── MainWindow.style.cs
│   ├── MainWindow.xaml
│   ├── MainWindow.xaml.cs
│   ├── Program.cs
│   ├── Tools/
│   │   ├── SystemTool.cs
│   │   ├── TrayIcon.cs
│   │   └── WindowTool.cs
│   ├── VirtualDesktop/
│   │   ├── Daemon.cs
│   │   ├── DragWindow.Designer.cs
│   │   ├── DragWindow.cs
│   │   ├── DragWindow.resx
│   │   ├── Filters.cs
│   │   ├── Manager.arrangement.cs
│   │   ├── Manager.cs
│   │   ├── Manager.events.cs
│   │   ├── Manager.layout.cs
│   │   ├── Menus.cs
│   │   ├── Navigation.cs
│   │   ├── VirtualDesktopWindow.Designer.cs
│   │   ├── VirtualDesktopWindow.Mouse.cs
│   │   ├── VirtualDesktopWindow.Thumbs.cs
│   │   ├── VirtualDesktopWindow.cs
│   │   ├── VirtualDesktopWindow.resx
│   │   └── VisibleWindow.cs
│   ├── VirtualSpace.csproj
│   ├── WindowFilter.xaml
│   ├── WindowFilter.xaml.cs
│   └── app.manifest
├── VirtualSpace.sln
├── WPF/
│   └── ControlPanel/
│       ├── App.xaml
│       ├── App.xaml.cs
│       ├── AssemblyInfo.cs
│       ├── COPYING
│       ├── ControlPanel.csproj
│       ├── ControlPanel.xaml
│       ├── Converters/
│       │   ├── CheckBoxConverter.cs
│       │   ├── CheckBoxStateByIndexConverter.cs
│       │   ├── DrawerStateMutexConverter.cs
│       │   ├── LocConverter.cs
│       │   ├── MouseActionConverter.cs
│       │   ├── RuleFieldConverter.cs
│       │   ├── RuleFieldFromControlNameConverter.cs
│       │   ├── RuleFormDefaultValueConverter.cs
│       │   ├── RuleHeaderByStateConverter.cs
│       │   ├── ThemeConverter.cs
│       │   ├── UIButtonStyleByVdAConverter.cs
│       │   └── WidthHeightConverter.cs
│       ├── ExportResourceDictionary.cs
│       ├── ExportResourceDictionary.xaml
│       ├── Factories/
│       │   ├── NavBarItem.cs
│       │   └── PageFactory.cs
│       ├── FodyWeavers.xml
│       ├── MainWindow.logs.cs
│       ├── MainWindow.theme.cs
│       ├── MainWindow.xaml
│       ├── MainWindow.xaml.cs
│       ├── Pages/
│       │   ├── Control.keyboard.cs
│       │   ├── Control.mouse.cs
│       │   ├── Control.tree.cs
│       │   ├── Control.xaml
│       │   ├── Control.xaml.cs
│       │   ├── Dialogs/
│       │   │   ├── ProfileNameDialog.xaml
│       │   │   ├── ProfileNameDialog.xaml.cs
│       │   │   ├── YesNoWithNote.xaml
│       │   │   └── YesNoWithNote.xaml.cs
│       │   ├── General.xaml
│       │   ├── General.xaml.cs
│       │   ├── Help.xaml
│       │   ├── Help.xaml.cs
│       │   ├── Logs.xaml
│       │   ├── Logs.xaml.cs
│       │   ├── Menus/
│       │   │   ├── Commons/
│       │   │   │   ├── MenuContainer.xaml
│       │   │   │   └── MenuContainer.xaml.cs
│       │   │   ├── LogsMenu.xaml
│       │   │   └── LogsMenu.xaml.cs
│       │   ├── Plugins.xaml
│       │   ├── Plugins.xaml.cs
│       │   ├── Rules.ue.cs
│       │   ├── Rules.xaml
│       │   ├── Rules.xaml.cs
│       │   ├── Settings.xaml
│       │   ├── Settings.xaml.cs
│       │   ├── UI.xaml
│       │   ├── UI.xaml.cs
│       │   └── UserControls/
│       │       ├── RuleForm.xaml
│       │       └── RuleForm.xaml.cs
│       ├── Resources/
│       │   ├── Definitions/
│       │   │   ├── KeyboardTree.json
│       │   │   └── MouseTree.json
│       │   ├── Langs.Designer.cs
│       │   ├── Langs.resx
│       │   └── Langs.zh-Hans.resx
│       ├── RuleEditorWindow.xaml
│       ├── RuleEditorWindow.xaml.cs
│       ├── Validation/
│       │   ├── Helper.cs
│       │   ├── NotEmptyValidationRule.cs
│       │   └── NumberRangeValidationRule.cs
│       └── ViewModels/
│           ├── ControlViewModel.cs
│           ├── FullObservableCollection.cs
│           ├── GeneralViewModel.cs
│           ├── LogsViewModel.cs
│           ├── MenuContainerViewModel.cs
│           ├── PluginsViewModel.cs
│           ├── RulesViewModel.cs
│           ├── SettingsViewModel.cs
│           ├── UIViewModel.cs
│           └── ViewModelBase.cs
└── WinForms/
    └── AppController/
        ├── AppController.Designer.cs
        ├── AppController.DesktopArrangement.cs
        ├── AppController.cluster.cs
        ├── AppController.cs
        ├── AppController.csproj
        ├── AppController.keyboard.cs
        ├── AppController.lang.cs
        ├── AppController.logs.cs
        ├── AppController.mouse.cs
        ├── AppController.nav.cs
        ├── AppController.plugins.cs
        ├── AppController.profile.cs
        ├── AppController.resx
        ├── AppController.rules.cs
        ├── AppController.ui.cs
        ├── AppController.zh-Hans.resx
        ├── RuleForm.Designer.cs
        ├── RuleForm.cs
        ├── RuleForm.resx
        └── RuleForm.zh-Hans.resx

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Mono auto generated files
mono_crash.*

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# ASP.NET Scaffolding
ScaffoldingReadMe.txt

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Nuget personal access tokens and Credentials
# nuget.config

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb

# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/

# Fody - auto-generated XML schema
FodyWeavers.xsd

# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace

# Local History for Visual Studio Code
.history/

# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp

# JetBrains Rider
.idea/
*.sln.iml
AutoVersion.cs


================================================
FILE: Bridge/Agent.cs
================================================
/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)

This file is part of VirtualSpace.

VirtualSpace is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

VirtualSpace is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VirtualSpace. If not, see <https://www.gnu.org/licenses/>.
*/

using System.Collections.Generic;
using System.Reflection;
using System.Resources;

namespace VirtualSpace
{
    public static class Agent
    {
        public static readonly Dictionary<string, string> ValidLangs = new()
        {
            {"en", "English"},
            {"zh-Hans", "中文(简体)"}
        };

        public static ResourceManager Langs = new(
            Assembly.GetExecutingAssembly().GetName().Name + ".Resources.Langs.WinFormStrings",
            typeof( Agent ).Assembly );

        public static ResourceManager Images = new(
            Assembly.GetExecutingAssembly().GetName().Name + ".Resources.Images.Images",
            typeof( Agent ).Assembly );
    }
}

================================================
FILE: Bridge/Behavior.cs
================================================
/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)

This file is part of VirtualSpace.

VirtualSpace is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

VirtualSpace is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VirtualSpace. If not, see <https://www.gnu.org/licenses/>.
*/

using System;

namespace VirtualSpace.Config.Events.Entity
{
    public class Behavior
    {
        public IntPtr Handle;
        public string RuleName;
        public string WindowTitle;
        public int    MoveToDesktop { get; set; } = -1;
        public bool   FollowWindow  { get; set; } = true;
        public bool   PinWindow     { get; set; }
        public bool   PinApp        { get; set; }
        public int    MoveToScreen  { get; set; } = -1;
        public bool   HideFromView  { get; set; }
        
        public Behavior Clone()
        {
            return new Behavior
            {
                Handle = Handle,
                RuleName = RuleName,
                WindowTitle = WindowTitle,
                MoveToDesktop = MoveToDesktop,
                FollowWindow = FollowWindow,
                PinWindow = PinWindow,
                PinApp = PinApp,
                MoveToScreen = MoveToScreen,
                HideFromView = HideFromView
            };
        }
    }
}

================================================
FILE: Bridge/Bridge.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFrameworks>net6.0-windows</TargetFrameworks>
        <Nullable>enable</Nullable>
        <LangVersion>9</LangVersion>
    </PropertyGroup>

    <ItemGroup>
      <Compile Update="Resources\Langs\WinFormStrings.Designer.cs">
        <DependentUpon>WinFormStrings.resx</DependentUpon>
        <DesignTime>True</DesignTime>
        <AutoGen>True</AutoGen>
      </Compile>
      <Compile Update="Resources\Langs\WinFormStrings.zh-Hans.Designer.cs">
        <DependentUpon>WinFormStrings.zh-Hans.resx</DependentUpon>
        <DesignTime>True</DesignTime>
        <AutoGen>True</AutoGen>
      </Compile>
      <Compile Update="Resources\Images\Images.Designer.cs">
        <DesignTime>True</DesignTime>
        <AutoGen>True</AutoGen>
        <DependentUpon>Images.resx</DependentUpon>
      </Compile>
    </ItemGroup>

    <ItemGroup>
      <EmbeddedResource Update="Resources\Langs\WinFormStrings.resx">
        <LastGenOutput>WinFormStrings.Designer.cs</LastGenOutput>
        <Generator>ResXFileCodeGenerator</Generator>
      </EmbeddedResource>
      <EmbeddedResource Update="Resources\Langs\WinFormStrings.zh-Hans.resx">
        <LastGenOutput>WinFormStrings.zh-Hans.Designer.cs</LastGenOutput>
        <Generator>ResXFileCodeGenerator</Generator>
      </EmbeddedResource>
      <EmbeddedResource Update="Resources\Images\Images.resx">
        <Generator>ResXFileCodeGenerator</Generator>
        <LastGenOutput>Images.Designer.cs</LastGenOutput>
      </EmbeddedResource>
    </ItemGroup>

</Project>


================================================
FILE: Bridge/COPYING
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.


================================================
FILE: Bridge/Channels.cs
================================================
/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)

This file is part of VirtualSpace.

VirtualSpace is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

VirtualSpace is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VirtualSpace. If not, see <https://www.gnu.org/licenses/>.
*/

using System.Threading.Channels;
using VirtualSpace.Config.Events.Entity;

namespace VirtualSpace.Commons
{
    public static class Channels
    {
        public static readonly Channel<Behavior>                   ActionChannel               = Channel.CreateUnbounded<Behavior>();
        public static readonly Channel<Window>                     VisibleWindowsChannel       = Channel.CreateUnbounded<Window>();
        public static readonly Channel<VirtualDesktopNotification> VirtualDesktopNotifications = Channel.CreateUnbounded<VirtualDesktopNotification>();
    }
}

================================================
FILE: Bridge/Interfaces/IAppController.cs
================================================
// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)
// 
// This file is part of VirtualSpace.
// 
// VirtualSpace is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
// 
// VirtualSpace is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License along with VirtualSpace. If not, see <https://www.gnu.org/licenses/>.

using System;

namespace VirtualSpace
{
    public interface IAppController
    {
        public void BringToTop();
        public void SetMainWindowHandle( IntPtr handle );
        public void Quit();
        public void RenderDesktopArrangementButtons( string selectedDa );
        public void CreateRuleFromWindowHandle( IntPtr      handle );
    }
}

================================================
FILE: Bridge/Interfaces/IDesktop.cs
================================================
// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)
// 
// This file is part of VirtualSpace.
// 
// VirtualSpace is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
// 
// VirtualSpace is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License along with VirtualSpace. If not, see <https://www.gnu.org/licenses/>.

namespace VirtualSpace
{
    public interface IDesktop
    {
        public void MakeVisible();
    }
}

================================================
FILE: Bridge/Resources/Images/Images.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     此代码由工具生成。
//     运行时版本:4.0.30319.42000
//
//     对此文件的更改可能会导致不正确的行为,并且如果
//     重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

namespace Bridge.Resources.Images {
    using System;
    
    
    /// <summary>
    ///   一个强类型的资源类,用于查找本地化的字符串等。
    /// </summary>
    // 此类是由 StronglyTypedResourceBuilder
    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
    // (以 /str 作为命令选项),或重新生成 VS 项目。
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Images {
        
        private static global::System.Resources.ResourceManager resourceMan;
        
        private static global::System.Globalization.CultureInfo resourceCulture;
        
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Images() {
        }
        
        /// <summary>
        ///   返回此类使用的缓存的 ResourceManager 实例。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bridge.Resources.Images.Images", typeof(Images).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        /// <summary>
        ///   重写当前线程的 CurrentUICulture 属性,对
        ///   使用此强类型资源类的所有资源查找执行重写。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] AboutLogo_2 {
            get {
                object obj = ResourceManager.GetObject("AboutLogo_2", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big0Black {
            get {
                object obj = ResourceManager.GetObject("Big0Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big0White {
            get {
                object obj = ResourceManager.GetObject("Big0White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big1Black {
            get {
                object obj = ResourceManager.GetObject("Big1Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big1White {
            get {
                object obj = ResourceManager.GetObject("Big1White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big2Black {
            get {
                object obj = ResourceManager.GetObject("Big2Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big2White {
            get {
                object obj = ResourceManager.GetObject("Big2White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big3Black {
            get {
                object obj = ResourceManager.GetObject("Big3Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big3White {
            get {
                object obj = ResourceManager.GetObject("Big3White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big4Black {
            get {
                object obj = ResourceManager.GetObject("Big4Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big4White {
            get {
                object obj = ResourceManager.GetObject("Big4White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big5Black {
            get {
                object obj = ResourceManager.GetObject("Big5Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big5White {
            get {
                object obj = ResourceManager.GetObject("Big5White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big6Black {
            get {
                object obj = ResourceManager.GetObject("Big6Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big6White {
            get {
                object obj = ResourceManager.GetObject("Big6White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big7Black {
            get {
                object obj = ResourceManager.GetObject("Big7Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big7White {
            get {
                object obj = ResourceManager.GetObject("Big7White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big8Black {
            get {
                object obj = ResourceManager.GetObject("Big8Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big8White {
            get {
                object obj = ResourceManager.GetObject("Big8White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big9Black {
            get {
                object obj = ResourceManager.GetObject("Big9Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Big9White {
            get {
                object obj = ResourceManager.GetObject("Big9White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small0Black {
            get {
                object obj = ResourceManager.GetObject("Small0Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small0White {
            get {
                object obj = ResourceManager.GetObject("Small0White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small1Black {
            get {
                object obj = ResourceManager.GetObject("Small1Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small1White {
            get {
                object obj = ResourceManager.GetObject("Small1White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small2Black {
            get {
                object obj = ResourceManager.GetObject("Small2Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small2White {
            get {
                object obj = ResourceManager.GetObject("Small2White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small3Black {
            get {
                object obj = ResourceManager.GetObject("Small3Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small3White {
            get {
                object obj = ResourceManager.GetObject("Small3White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small4Black {
            get {
                object obj = ResourceManager.GetObject("Small4Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small4White {
            get {
                object obj = ResourceManager.GetObject("Small4White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small5Black {
            get {
                object obj = ResourceManager.GetObject("Small5Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small5White {
            get {
                object obj = ResourceManager.GetObject("Small5White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small6Black {
            get {
                object obj = ResourceManager.GetObject("Small6Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small6White {
            get {
                object obj = ResourceManager.GetObject("Small6White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small7Black {
            get {
                object obj = ResourceManager.GetObject("Small7Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small7White {
            get {
                object obj = ResourceManager.GetObject("Small7White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small8Black {
            get {
                object obj = ResourceManager.GetObject("Small8Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small8White {
            get {
                object obj = ResourceManager.GetObject("Small8White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small9Black {
            get {
                object obj = ResourceManager.GetObject("Small9Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] Small9White {
            get {
                object obj = ResourceManager.GetObject("Small9White", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] TrayIcon {
            get {
                object obj = ResourceManager.GetObject("TrayIcon", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] TrayIconBack_Black {
            get {
                object obj = ResourceManager.GetObject("TrayIconBack_Black", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] TrayIconBack_Default {
            get {
                object obj = ResourceManager.GetObject("TrayIconBack_Default", resourceCulture);
                return ((byte[])(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Byte[] 类型的本地化资源。
        /// </summary>
        internal static byte[] TrayIconBack_White {
            get {
                object obj = ResourceManager.GetObject("TrayIconBack_White", resourceCulture);
                return ((byte[])(obj));
            }
        }
    }
}


================================================
FILE: Bridge/Resources/Images/Images.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <data name="AboutLogo_2" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\aboutlogo_2.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big0Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big0black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big0White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big0white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big1Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big1black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big1White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big1white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big2Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big2black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big2White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big2white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big3Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big3black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big3White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big3white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big4Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big4black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big4White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big4white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big5Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big5black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big5White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big5white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big6Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big6black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big6White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big6white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big7Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big7black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big7White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big7white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big8Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big8black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big8White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big8white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big9Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big9black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Big9White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\big9white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small0Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small0black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small0White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small0white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small1Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small1black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small1White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small1white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small2Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small2black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small2White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small2white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small3Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small3black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small3White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small3white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small4Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small4black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small4White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small4white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small5Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small5black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small5White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small5white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small6Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small6black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small6White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small6white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small7Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small7black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small7White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small7white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small8Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small8black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small8White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small8white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small9Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small9black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="Small9White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\small9white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="TrayIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\trayicon.ico;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="TrayIconBack_Black" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\trayiconback_black.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="TrayIconBack_Default" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\trayiconback_default.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
  <data name="TrayIconBack_White" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\trayiconback_white.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
</root>

================================================
FILE: Bridge/Resources/Langs/WinFormStrings.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     此代码由工具生成。
//     运行时版本:4.0.30319.42000
//
//     对此文件的更改可能会导致不正确的行为,并且如果
//     重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

namespace Bridge.Resources.Langs {
    using System;
    
    
    /// <summary>
    ///   一个强类型的资源类,用于查找本地化的字符串等。
    /// </summary>
    // 此类是由 StronglyTypedResourceBuilder
    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
    // (以 /str 作为命令选项),或重新生成 VS 项目。
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class WinFormStrings {
        
        private static global::System.Resources.ResourceManager resourceMan;
        
        private static global::System.Globalization.CultureInfo resourceCulture;
        
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal WinFormStrings() {
        }
        
        /// <summary>
        ///   返回此类使用的缓存的 ResourceManager 实例。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bridge.Resources.Langs.WinFormStrings", typeof(WinFormStrings).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        /// <summary>
        ///   重写当前线程的 CurrentUICulture 属性,对
        ///   使用此强类型资源类的所有资源查找执行重写。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        
        /// <summary>
        ///   查找类似 Current Desktop:  的本地化字符串。
        /// </summary>
        internal static string Cluster_Notification_SVD_Current {
            get {
                return ResourceManager.GetString("Cluster.Notification.SVD.Current", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Last Desktop:  的本地化字符串。
        /// </summary>
        internal static string Cluster_Notification_SVD_Last {
            get {
                return ResourceManager.GetString("Cluster.Notification.SVD.Last", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Window 【{0}】 match rule 【{1}】, but error occur when moving.
        ///possible reason:
        ///- window invalid.
        ///- target desktop not exists.
        ///- target desktop invalid. 的本地化字符串。
        /// </summary>
        internal static string Error_MoveWindowToDesktop {
            get {
                return ResourceManager.GetString("Error.MoveWindowToDesktop", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Error! 的本地化字符串。
        /// </summary>
        internal static string Error_Title {
            get {
                return ResourceManager.GetString("Error.Title", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Cannot access task with your current permissions level.
        ///You need to run this application &apos;as administrator&apos; even if you are using an administrator account. 的本地化字符串。
        /// </summary>
        internal static string General_RunOnStartup_Error_Permission {
            get {
                return ResourceManager.GetString("General.RunOnStartup.Error.Permission", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Down 的本地化字符串。
        /// </summary>
        internal static string hk_node_nav_down {
            get {
                return ResourceManager.GetString("hk_node_nav_down", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Left 的本地化字符串。
        /// </summary>
        internal static string hk_node_nav_left {
            get {
                return ResourceManager.GetString("hk_node_nav_left", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Right 的本地化字符串。
        /// </summary>
        internal static string hk_node_nav_right {
            get {
                return ResourceManager.GetString("hk_node_nav_right", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Up 的本地化字符串。
        /// </summary>
        internal static string hk_node_nav_up {
            get {
                return ResourceManager.GetString("hk_node_nav_up", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Open AppController 的本地化字符串。
        /// </summary>
        internal static string hk_node_open_app_controller {
            get {
                return ResourceManager.GetString("hk_node_open_app_controller", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Rise MainView 的本地化字符串。
        /// </summary>
        internal static string hk_node_rise_mainview {
            get {
                return ResourceManager.GetString("hk_node_rise_mainview", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Rise MainView For Active App 的本地化字符串。
        /// </summary>
        internal static string hk_node_rise_mainview_for_active_app {
            get {
                return ResourceManager.GetString("hk_node_rise_mainview_for_active_app", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Rise MainView For Active App In Current Desktop 的本地化字符串。
        /// </summary>
        internal static string hk_node_rise_mainview_for_active_app_in_current_vd {
            get {
                return ResourceManager.GetString("hk_node_rise_mainview_for_active_app_in_current_vd", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Rise MainView For Current Desktop 的本地化字符串。
        /// </summary>
        internal static string hk_node_rise_mainview_for_current_vd {
            get {
                return ResourceManager.GetString("hk_node_rise_mainview_for_current_vd", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Toggle Window Filter 的本地化字符串。
        /// </summary>
        internal static string hk_node_toggle_window_filter {
            get {
                return ResourceManager.GetString("hk_node_toggle_window_filter", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Desktop 的本地化字符串。
        /// </summary>
        internal static string K_D {
            get {
                return ResourceManager.GetString("K_D", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Navigation 的本地化字符串。
        /// </summary>
        internal static string K_D_N {
            get {
                return ResourceManager.GetString("K_D_N", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Switch 的本地化字符串。
        /// </summary>
        internal static string K_D_S {
            get {
                return ResourceManager.GetString("K_D_S", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 General 的本地化字符串。
        /// </summary>
        internal static string K_G {
            get {
                return ResourceManager.GetString("K_G", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Window 的本地化字符串。
        /// </summary>
        internal static string K_W {
            get {
                return ResourceManager.GetString("K_W", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Move 的本地化字符串。
        /// </summary>
        internal static string K_W_M {
            get {
                return ResourceManager.GetString("K_W_M", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Move and Follow 的本地化字符串。
        /// </summary>
        internal static string K_W_MF {
            get {
                return ResourceManager.GetString("K_W_MF", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Hotkey Cleared. 的本地化字符串。
        /// </summary>
        internal static string KB_Hotkey_Cleared {
            get {
                return ResourceManager.GetString("KB.Hotkey.Cleared", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Must choose a none-modifier Key. 的本地化字符串。
        /// </summary>
        internal static string KB_Hotkey_KeyCheck {
            get {
                return ResourceManager.GetString("KB.Hotkey.KeyCheck", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 At least one modifier Key. 的本地化字符串。
        /// </summary>
        internal static string KB_Hotkey_MKeyCheck {
            get {
                return ResourceManager.GetString("KB.Hotkey.MKeyCheck", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Move To Desktop  的本地化字符串。
        /// </summary>
        internal static string KB_Hotkey_MW {
            get {
                return ResourceManager.GetString("KB.Hotkey.MW", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Move and Follow To Desktop  的本地化字符串。
        /// </summary>
        internal static string KB_Hotkey_MWF {
            get {
                return ResourceManager.GetString("KB.Hotkey.MWF", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Register new Hotkey Failed. 的本地化字符串。
        /// </summary>
        internal static string KB_Hotkey_Reg_Fail {
            get {
                return ResourceManager.GetString("KB.Hotkey.Reg.Fail", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Register new Hotkey Success. 的本地化字符串。
        /// </summary>
        internal static string KB_Hotkey_Reg_Success {
            get {
                return ResourceManager.GetString("KB.Hotkey.Reg.Success", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Settings Saved. 的本地化字符串。
        /// </summary>
        internal static string KB_Hotkey_SettingsSaved {
            get {
                return ResourceManager.GetString("KB.Hotkey.SettingsSaved", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Switch To Desktop  的本地化字符串。
        /// </summary>
        internal static string KB_Hotkey_SVD {
            get {
                return ResourceManager.GetString("KB.Hotkey.SVD", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Switch Back To Last Desktop 的本地化字符串。
        /// </summary>
        internal static string KB_Hotkey_SVD_BACK_LAST {
            get {
                return ResourceManager.GetString("KB.Hotkey.SVD_BACK_LAST", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Left 的本地化字符串。
        /// </summary>
        internal static string Keys_Left {
            get {
                return ResourceManager.GetString("Keys.Left", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Middle 的本地化字符串。
        /// </summary>
        internal static string Keys_Middle {
            get {
                return ResourceManager.GetString("Keys.Middle", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Right 的本地化字符串。
        /// </summary>
        internal static string Keys_Right {
            get {
                return ResourceManager.GetString("Keys.Right", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Show ContextMenu 的本地化字符串。
        /// </summary>
        internal static string M_ContextMenu {
            get {
                return ResourceManager.GetString("M.ContextMenu", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Desktop 的本地化字符串。
        /// </summary>
        internal static string M_D {
            get {
                return ResourceManager.GetString("M.D", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Show Only Selected Desktop in View 的本地化字符串。
        /// </summary>
        internal static string M_D_DesktopShowForSelectedDesktop {
            get {
                return ResourceManager.GetString("M.D.DesktopShowForSelectedDesktop", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Switch Desktop and Close View 的本地化字符串。
        /// </summary>
        internal static string M_D_DesktopVisibleAndCloseView {
            get {
                return ResourceManager.GetString("M.D.DesktopVisibleAndCloseView", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Switch Desktop Only 的本地化字符串。
        /// </summary>
        internal static string M_D_DesktopVisibleOnly {
            get {
                return ResourceManager.GetString("M.D.DesktopVisibleOnly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 MainView 的本地化字符串。
        /// </summary>
        internal static string M_ROOT {
            get {
                return ResourceManager.GetString("M.ROOT", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Window 的本地化字符串。
        /// </summary>
        internal static string M_W {
            get {
                return ResourceManager.GetString("M.W", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Active Window, Switch Desktop and Close View 的本地化字符串。
        /// </summary>
        internal static string M_W_WindowActiveDesktopVisibleAndCloseView {
            get {
                return ResourceManager.GetString("M.W.WindowActiveDesktopVisibleAndCloseView", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Active Window, Switch Desktop Only 的本地化字符串。
        /// </summary>
        internal static string M_W_WindowActiveDesktopVisibleOnly {
            get {
                return ResourceManager.GetString("M.W.WindowActiveDesktopVisibleOnly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Close Window 的本地化字符串。
        /// </summary>
        internal static string M_W_WindowClose {
            get {
                return ResourceManager.GetString("M.W.WindowClose", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Hide From View 的本地化字符串。
        /// </summary>
        internal static string M_W_WindowHideFromView {
            get {
                return ResourceManager.GetString("M.W.WindowHideFromView", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Show Windows Only From Selected App in Selected Desktop 的本地化字符串。
        /// </summary>
        internal static string M_W_WindowShowForSelectedProcessInSelectedDesktop {
            get {
                return ResourceManager.GetString("M.W.WindowShowForSelectedProcessInSelectedDesktop", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Show Windows Only From Selected App 的本地化字符串。
        /// </summary>
        internal static string M_W_WindowShowForSelectedProcessOnly {
            get {
                return ResourceManager.GetString("M.W.WindowShowForSelectedProcessOnly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Show Context Menu 的本地化字符串。
        /// </summary>
        internal static string Mouse_Action_ContextMenu {
            get {
                return ResourceManager.GetString("Mouse.Action.ContextMenu", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Show Only Selected Desktop in MainView 的本地化字符串。
        /// </summary>
        internal static string Mouse_Action_DesktopShowForSelectedDesktop {
            get {
                return ResourceManager.GetString("Mouse.Action.DesktopShowForSelectedDesktop", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Switch Desktop And Close View 的本地化字符串。
        /// </summary>
        internal static string Mouse_Action_DesktopVisibleAndCloseView {
            get {
                return ResourceManager.GetString("Mouse.Action.DesktopVisibleAndCloseView", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Switch Desktop Only 的本地化字符串。
        /// </summary>
        internal static string Mouse_Action_DesktopVisibleOnly {
            get {
                return ResourceManager.GetString("Mouse.Action.DesktopVisibleOnly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Do Nothing 的本地化字符串。
        /// </summary>
        internal static string Mouse_Action_DoNothing {
            get {
                return ResourceManager.GetString("Mouse.Action.DoNothing", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Active Window, Switch Virtual Desktop And Close View 的本地化字符串。
        /// </summary>
        internal static string Mouse_Action_WindowActiveDesktopVisibleAndCloseView {
            get {
                return ResourceManager.GetString("Mouse.Action.WindowActiveDesktopVisibleAndCloseView", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Active Window, Switch Virtual Desktop Only 的本地化字符串。
        /// </summary>
        internal static string Mouse_Action_WindowActiveDesktopVisibleOnly {
            get {
                return ResourceManager.GetString("Mouse.Action.WindowActiveDesktopVisibleOnly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Close Window 的本地化字符串。
        /// </summary>
        internal static string Mouse_Action_WindowClose {
            get {
                return ResourceManager.GetString("Mouse.Action.WindowClose", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Show Windows Only From Selected App in Selected Desktop 的本地化字符串。
        /// </summary>
        internal static string Mouse_Action_WindowShowForSelectedProcessInSelectedDesktop {
            get {
                return ResourceManager.GetString("Mouse.Action.WindowShowForSelectedProcessInSelectedDesktop", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Show Windows Only From Selected App 的本地化字符串。
        /// </summary>
        internal static string Mouse_Action_WindowShowForSelectedProcessOnly {
            get {
                return ResourceManager.GetString("Mouse.Action.WindowShowForSelectedProcessOnly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 MouseAction Exists, try another combine or Mousebutton 的本地化字符串。
        /// </summary>
        internal static string Mouse_Tips_Exists {
            get {
                return ResourceManager.GetString("Mouse.Tips.Exists", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Confirm 的本地化字符串。
        /// </summary>
        internal static string MsgBox_Caption_Confirm {
            get {
                return ResourceManager.GetString("MsgBox.Caption.Confirm", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Warning 的本地化字符串。
        /// </summary>
        internal static string MsgBox_Caption_Warning {
            get {
                return ResourceManager.GetString("MsgBox.Caption.Warning", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Next row 的本地化字符串。
        /// </summary>
        internal static string Nav_CircleHType_NextRow {
            get {
                return ResourceManager.GetString("Nav.CircleHType.NextRow", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Same row 的本地化字符串。
        /// </summary>
        internal static string Nav_CircleHType_SameRow {
            get {
                return ResourceManager.GetString("Nav.CircleHType.SameRow", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Are you sure to delete this profile?
        ///All files related with this profile will be deleted too. 的本地化字符串。
        /// </summary>
        internal static string Profile_Confirm_Delete {
            get {
                return ResourceManager.GetString("Profile.Confirm.Delete", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Invalid profile name, or profile name already exists. 的本地化字符串。
        /// </summary>
        internal static string Profile_Warning_InvalidProfileName {
            get {
                return ResourceManager.GetString("Profile.Warning.InvalidProfileName", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Can not rename or delete the last profile.
        ///Duplicate one and edit it. 的本地化字符串。
        /// </summary>
        internal static string Profile_Warning_LastProfileProtect {
            get {
                return ResourceManager.GetString("Profile.Warning.LastProfileProtect", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 At least one common rule is required. 的本地化字符串。
        /// </summary>
        internal static string Rule_AtLeastOne {
            get {
                return ResourceManager.GetString("Rule.AtLeastOne", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Invalid Regex. 的本地化字符串。
        /// </summary>
        internal static string Rule_InvalidRegex {
            get {
                return ResourceManager.GetString("Rule.InvalidRegex", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 is required. 的本地化字符串。
        /// </summary>
        internal static string Rule_NameRequired {
            get {
                return ResourceManager.GetString("Rule.NameRequired", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 New Rule 的本地化字符串。
        /// </summary>
        internal static string Rule_New {
            get {
                return ResourceManager.GetString("Rule.New", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 is 的本地化字符串。
        /// </summary>
        internal static string Rule_Op_Eq {
            get {
                return ResourceManager.GetString("Rule.Op.Eq", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 ends with 的本地化字符串。
        /// </summary>
        internal static string Rule_Op_Esw {
            get {
                return ResourceManager.GetString("Rule.Op.Esw", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 regex 的本地化字符串。
        /// </summary>
        internal static string Rule_Op_Regex {
            get {
                return ResourceManager.GetString("Rule.Op.Regex", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 contains 的本地化字符串。
        /// </summary>
        internal static string Rule_Op_Sc {
            get {
                return ResourceManager.GetString("Rule.Op.Sc", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 starts with 的本地化字符串。
        /// </summary>
        internal static string Rule_Op_Ssw {
            get {
                return ResourceManager.GetString("Rule.Op.Ssw", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Quit 的本地化字符串。
        /// </summary>
        internal static string Tray_Menu_Quit {
            get {
                return ResourceManager.GetString("Tray.Menu.Quit", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Settings 的本地化字符串。
        /// </summary>
        internal static string Tray_Menu_Settings {
            get {
                return ResourceManager.GetString("Tray.Menu.Settings", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Mouse Button Required 的本地化字符串。
        /// </summary>
        internal static string Validation_Mouse_Button_Required {
            get {
                return ResourceManager.GetString("Validation.Mouse.Button.Required", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Create Virtual Desktop 的本地化字符串。
        /// </summary>
        internal static string VDW_CTM_Desktop_Create {
            get {
                return ResourceManager.GetString("VDW.CTM.Desktop.Create", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Remove Virtual Desktop 的本地化字符串。
        /// </summary>
        internal static string VDW_CTM_Desktop_Remove {
            get {
                return ResourceManager.GetString("VDW.CTM.Desktop.Remove", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Unhide Window 的本地化字符串。
        /// </summary>
        internal static string VDW_CTM_Desktop_UnHideWindow {
            get {
                return ResourceManager.GetString("VDW.CTM.Desktop.UnHideWindow", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Close 的本地化字符串。
        /// </summary>
        internal static string VDW_CTM_Window_Close {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.Close", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Hide from view 的本地化字符串。
        /// </summary>
        internal static string VDW_CTM_Window_HideFromView {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.HideFromView", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Create Rule from this Window... 的本地化字符串。
        /// </summary>
        internal static string VDW_CTM_Window_NewRule {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.NewRule", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Show windows from this app on all desktops 的本地化字符串。
        /// </summary>
        internal static string VDW_CTM_Window_PinApp {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.PinApp", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Show this window on all desktops 的本地化字符串。
        /// </summary>
        internal static string VDW_CTM_Window_PinWin {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.PinWin", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Screen 的本地化字符串。
        /// </summary>
        internal static string VDW_CTM_Window_Screen {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.Screen", resourceCulture);
            }
        }
        
        /// <summary>
        ///   查找类似 Unsupported Windows Version.
        ///Application Will Quit.
        ///
        ///Support List
        ///====================================
        ///Windows 10 Redstone5(17763)
        ///Windows 10 19H1(18362)
        ///Windows 10 19H2(18363)
        ///Windows 10 20H1(19041)
        ///Windows 10 20H2(19042)
        ///Windows 10 21H1(19043)
        ///Windows 10 21H2(19044)
        ///Windows 10 22H2(19045)
        ///Windows 11 21H2(22000)
        ///Windows 11 22H2(22621)
        ///Windows 11 23H2(22631)
        ///==================================== 的本地化字符串。
        /// </summary>
        internal static string VersionCheckFail {
            get {
                return ResourceManager.GetString("VersionCheckFail", resourceCulture);
            }
        }
    }
}


================================================
FILE: Bridge/Resources/Langs/WinFormStrings.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <data name="VDW.CTM.Desktop.Create" xml:space="preserve">
    <value>Create Virtual Desktop</value>
  </data>
  <data name="VDW.CTM.Desktop.Remove" xml:space="preserve">
    <value>Remove Virtual Desktop</value>
  </data>
  <data name="VDW.CTM.Window.Close" xml:space="preserve">
    <value>Close</value>
  </data>
  <data name="VDW.CTM.Window.PinApp" xml:space="preserve">
    <value>Show windows from this app on all desktops</value>
  </data>
  <data name="VDW.CTM.Window.PinWin" xml:space="preserve">
    <value>Show this window on all desktops</value>
  </data>
  <data name="VersionCheckFail" xml:space="preserve">
    <value>Unsupported Windows Version.
Application Will Quit.

Support List
====================================
Windows 10 Redstone5(17763)
Windows 10 19H1(18362)
Windows 10 19H2(18363)
Windows 10 20H1(19041)
Windows 10 20H2(19042)
Windows 10 21H1(19043)
Windows 10 21H2(19044)
Windows 10 22H2(19045)
Windows 11 21H2(22000)
Windows 11 22H2(22621)
Windows 11 23H2(22631)
====================================</value>
  </data>
  <data name="Rule.NameRequired" xml:space="preserve">
    <value>is required.</value>
  </data>
  <data name="Rule.Op.Eq" xml:space="preserve">
    <value>is</value>
  </data>
  <data name="Rule.Op.Ssw" xml:space="preserve">
    <value>starts with</value>
  </data>
  <data name="Rule.Op.Esw" xml:space="preserve">
    <value>ends with</value>
  </data>
  <data name="Rule.Op.Sc" xml:space="preserve">
    <value>contains</value>
  </data>
  <data name="Rule.Op.Regex" xml:space="preserve">
    <value>regex</value>
  </data>
  <data name="Rule.AtLeastOne" xml:space="preserve">
    <value>At least one common rule is required.</value>
  </data>
  <data name="Rule.InvalidRegex" xml:space="preserve">
    <value>Invalid Regex.</value>
  </data>
  <data name="VDW.CTM.Window.NewRule" xml:space="preserve">
    <value>Create Rule from this Window...</value>
  </data>
  <data name="Rule.New" xml:space="preserve">
    <value>New Rule</value>
  </data>
  <data name="Error.MoveWindowToDesktop" xml:space="preserve">
    <value>Window 【{0}】 match rule 【{1}】, but error occur when moving.
possible reason:
- window invalid.
- target desktop not exists.
- target desktop invalid.</value>
  </data>
  <data name="Error.Title" xml:space="preserve">
    <value>Error!</value>
  </data>
  <data name="VDW.CTM.Window.HideFromView" xml:space="preserve">
    <value>Hide from view</value>
  </data>
  <data name="VDW.CTM.Desktop.UnHideWindow" xml:space="preserve">
    <value>Unhide Window</value>
  </data>
  <data name="VDW.CTM.Window.Screen" xml:space="preserve">
    <value>Screen</value>
  </data>
  <data name="Nav.CircleHType.NextRow" xml:space="preserve">
    <value>Next row</value>
  </data>
  <data name="Nav.CircleHType.SameRow" xml:space="preserve">
    <value>Same row</value>
  </data>
  <data name="KB.Hotkey.Cleared" xml:space="preserve">
    <value>Hotkey Cleared.</value>
  </data>
  <data name="KB.Hotkey.Reg.Success" xml:space="preserve">
    <value>Register new Hotkey Success.</value>
  </data>
  <data name="KB.Hotkey.Reg.Fail" xml:space="preserve">
    <value>Register new Hotkey Failed.</value>
  </data>
  <data name="KB.Hotkey.SettingsSaved" xml:space="preserve">
    <value>Settings Saved.</value>
  </data>
  <data name="KB.Hotkey.KeyCheck" xml:space="preserve">
    <value>Must choose a none-modifier Key.</value>
  </data>
  <data name="Mouse.Action.DoNothing" xml:space="preserve">
    <value>Do Nothing</value>
  </data>
  <data name="Mouse.Action.DesktopVisibleAndCloseView" xml:space="preserve">
    <value>Switch Desktop And Close View</value>
  </data>
  <data name="Mouse.Action.DesktopVisibleOnly" xml:space="preserve">
    <value>Switch Desktop Only</value>
  </data>
  <data name="Mouse.Action.ContextMenu" xml:space="preserve">
    <value>Show Context Menu</value>
  </data>
  <data name="Mouse.Action.WindowActiveDesktopVisibleAndCloseView" xml:space="preserve">
    <value>Active Window, Switch Virtual Desktop And Close View</value>
  </data>
  <data name="Mouse.Action.WindowActiveDesktopVisibleOnly" xml:space="preserve">
    <value>Active Window, Switch Virtual Desktop Only</value>
  </data>
  <data name="Mouse.Action.WindowClose" xml:space="preserve">
    <value>Close Window</value>
  </data>
  <data name="Cluster.Notification.SVD.Current" xml:space="preserve">
    <value>Current Desktop: </value>
  </data>
  <data name="Cluster.Notification.SVD.Last" xml:space="preserve">
    <value>Last Desktop: </value>
  </data>
  <data name="General.RunOnStartup.Error.Permission" xml:space="preserve">
    <value>Cannot access task with your current permissions level.
You need to run this application 'as administrator' even if you are using an administrator account.</value>
  </data>
  <data name="Mouse.Action.WindowShowForSelectedProcessOnly" xml:space="preserve">
    <value>Show Windows Only From Selected App</value>
  </data>
  <data name="KB.Hotkey.SVD" xml:space="preserve">
    <value>Switch To Desktop </value>
  </data>
  <data name="KB.Hotkey.MW" xml:space="preserve">
    <value>Move To Desktop </value>
  </data>
  <data name="KB.Hotkey.MWF" xml:space="preserve">
    <value>Move and Follow To Desktop </value>
  </data>
  <data name="Mouse.Action.WindowShowForSelectedProcessInSelectedDesktop" xml:space="preserve">
    <value>Show Windows Only From Selected App in Selected Desktop</value>
  </data>
  <data name="Keys.Left" xml:space="preserve">
    <value>Left</value>
  </data>
  <data name="Keys.Middle" xml:space="preserve">
    <value>Middle</value>
  </data>
  <data name="Keys.Right" xml:space="preserve">
    <value>Right</value>
  </data>
  <data name="Mouse.Action.DesktopShowForSelectedDesktop" xml:space="preserve">
    <value>Show Only Selected Desktop in MainView</value>
  </data>
  <data name="KB.Hotkey.SVD_BACK_LAST" xml:space="preserve">
    <value>Switch Back To Last Desktop</value>
  </data>
  <data name="Profile.Confirm.Delete" xml:space="preserve">
    <value>Are you sure to delete this profile?
All files related with this profile will be deleted too.</value>
  </data>
  <data name="Profile.Warning.LastProfileProtect" xml:space="preserve">
    <value>Can not rename or delete the last profile.
Duplicate one and edit it.</value>
  </data>
  <data name="Profile.Warning.InvalidProfileName" xml:space="preserve">
    <value>Invalid profile name, or profile name already exists.</value>
  </data>
  <data name="MsgBox.Caption.Warning" xml:space="preserve">
    <value>Warning</value>
  </data>
  <data name="MsgBox.Caption.Confirm" xml:space="preserve">
    <value>Confirm</value>
  </data>
  <data name="Tray.Menu.Settings" xml:space="preserve">
    <value>Settings</value>
  </data>
  <data name="Tray.Menu.Quit" xml:space="preserve">
    <value>Quit</value>
  </data>
  <data name="K_G" xml:space="preserve">
    <value>General</value>
  </data>
  <data name="hk_node_rise_mainview" xml:space="preserve">
    <value>Rise MainView</value>
  </data>
  <data name="hk_node_open_app_controller" xml:space="preserve">
    <value>Open AppController</value>
  </data>
  <data name="hk_node_rise_mainview_for_active_app" xml:space="preserve">
    <value>Rise MainView For Active App</value>
  </data>
  <data name="hk_node_rise_mainview_for_current_vd" xml:space="preserve">
    <value>Rise MainView For Current Desktop</value>
  </data>
  <data name="hk_node_rise_mainview_for_active_app_in_current_vd" xml:space="preserve">
    <value>Rise MainView For Active App In Current Desktop</value>
  </data>
  <data name="K_D" xml:space="preserve">
    <value>Desktop</value>
  </data>
  <data name="K_D_S" xml:space="preserve">
    <value>Switch</value>
  </data>
  <data name="K_D_N" xml:space="preserve">
    <value>Navigation</value>
  </data>
  <data name="K_W" xml:space="preserve">
    <value>Window</value>
  </data>
  <data name="K_W_M" xml:space="preserve">
    <value>Move</value>
  </data>
  <data name="K_W_MF" xml:space="preserve">
    <value>Move and Follow</value>
  </data>
  <data name="hk_node_nav_right" xml:space="preserve">
    <value>Right</value>
  </data>
  <data name="hk_node_nav_up" xml:space="preserve">
    <value>Up</value>
  </data>
  <data name="hk_node_nav_down" xml:space="preserve">
    <value>Down</value>
  </data>
  <data name="hk_node_nav_left" xml:space="preserve">
    <value>Left</value>
  </data>
  <data name="KB.Hotkey.MKeyCheck" xml:space="preserve">
    <value>At least one modifier Key.</value>
  </data>
  <data name="M.D" xml:space="preserve">
    <value>Desktop</value>
  </data>
  <data name="M.W" xml:space="preserve">
    <value>Window</value>
  </data>
  <data name="M.ROOT" xml:space="preserve">
    <value>MainView</value>
  </data>
  <data name="M.D.DesktopVisibleAndCloseView" xml:space="preserve">
    <value>Switch Desktop and Close View</value>
  </data>
  <data name="M.D.DesktopVisibleOnly" xml:space="preserve">
    <value>Switch Desktop Only</value>
  </data>
  <data name="M.ContextMenu" xml:space="preserve">
    <value>Show ContextMenu</value>
  </data>
  <data name="M.D.DesktopShowForSelectedDesktop" xml:space="preserve">
    <value>Show Only Selected Desktop in View</value>
  </data>
  <data name="M.W.WindowActiveDesktopVisibleAndCloseView" xml:space="preserve">
    <value>Active Window, Switch Desktop and Close View</value>
  </data>
  <data name="M.W.WindowActiveDesktopVisibleOnly" xml:space="preserve">
    <value>Active Window, Switch Desktop Only</value>
  </data>
  <data name="M.W.WindowHideFromView" xml:space="preserve">
    <value>Hide From View</value>
  </data>
  <data name="M.W.WindowClose" xml:space="preserve">
    <value>Close Window</value>
  </data>
  <data name="M.W.WindowShowForSelectedProcessOnly" xml:space="preserve">
    <value>Show Windows Only From Selected App</value>
  </data>
  <data name="M.W.WindowShowForSelectedProcessInSelectedDesktop" xml:space="preserve">
    <value>Show Windows Only From Selected App in Selected Desktop</value>
  </data>
  <data name="Validation.Mouse.Button.Required" xml:space="preserve">
    <value>Mouse Button Required</value>
  </data>
  <data name="Mouse.Tips.Exists" xml:space="preserve">
    <value>MouseAction Exists, try another combine or Mousebutton</value>
  </data>
  <data name="hk_node_toggle_window_filter" xml:space="preserve">
    <value>Toggle Window Filter</value>
  </data>
</root>

================================================
FILE: Bridge/Resources/Langs/WinFormStrings.zh-Hans.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace VirtualSpace.Resources.Langs {
    using System;
    
    
    /// <summary>
    ///   A strongly-typed resource class, for looking up localized strings, etc.
    /// </summary>
    // This class was auto-generated by the StronglyTypedResourceBuilder
    // class via a tool like ResGen or Visual Studio.
    // To add or remove a member, edit your .ResX file then rerun ResGen
    // with the /str option, or rebuild your VS project.
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class WinFormStrings_zh_Hans {
        
        private static global::System.Resources.ResourceManager resourceMan;
        
        private static global::System.Globalization.CultureInfo resourceCulture;
        
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal WinFormStrings_zh_Hans() {
        }
        
        /// <summary>
        ///   Returns the cached ResourceManager instance used by this class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bridge.Resources.Langs.WinFormStrings.zh-Hans", typeof(WinFormStrings_zh_Hans).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        /// <summary>
        ///   Overrides the current thread's CurrentUICulture property for all
        ///   resource lookups using this strongly typed resource class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 当前桌面:.
        /// </summary>
        internal static string Cluster_Notification_SVD_Current {
            get {
                return ResourceManager.GetString("Cluster.Notification.SVD.Current", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 上一个桌面:.
        /// </summary>
        internal static string Cluster_Notification_SVD_Last {
            get {
                return ResourceManager.GetString("Cluster.Notification.SVD.Last", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 窗口 【{0}】 匹配规则 【{1}】,但移动时发生错误。
        ///可能的原因:
        ///- 窗口无效。
        ///- 目标桌面不存在。
        ///- 目标桌面无效。.
        /// </summary>
        internal static string Error_MoveWindowToDesktop {
            get {
                return ResourceManager.GetString("Error.MoveWindowToDesktop", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 错误!.
        /// </summary>
        internal static string Error_Title {
            get {
                return ResourceManager.GetString("Error.Title", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 当前权限级别无法访问计划任务,
        ///请确保当前账户是此计算机的管理员并且“以管理员身份运行”运行此程序。.
        /// </summary>
        internal static string General_RunOnStartup_Error_Permission {
            get {
                return ResourceManager.GetString("General.RunOnStartup.Error.Permission", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 桌面.
        /// </summary>
        internal static string K_D {
            get {
                return ResourceManager.GetString("K.D", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 导航.
        /// </summary>
        internal static string K_D_N {
            get {
                return ResourceManager.GetString("K.D.N", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 向左.
        /// </summary>
        internal static string K_D_N_D {
            get {
                return ResourceManager.GetString("K.D.N.D", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 向右.
        /// </summary>
        internal static string K_D_N_L {
            get {
                return ResourceManager.GetString("K.D.N.L", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 向上.
        /// </summary>
        internal static string K_D_N_R {
            get {
                return ResourceManager.GetString("K.D.N.R", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 向下.
        /// </summary>
        internal static string K_D_N_U {
            get {
                return ResourceManager.GetString("K.D.N.U", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 切换桌面.
        /// </summary>
        internal static string K_D_S {
            get {
                return ResourceManager.GetString("K.D.S", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 通用.
        /// </summary>
        internal static string K_G {
            get {
                return ResourceManager.GetString("K.G", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 打开程序控制.
        /// </summary>
        internal static string K_G_oac {
            get {
                return ResourceManager.GetString("K.G.oac", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 唤起主视图.
        /// </summary>
        internal static string K_G_rmv {
            get {
                return ResourceManager.GetString("K.G.rmv", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 为当前活动程序唤起主视图.
        /// </summary>
        internal static string K_G_rmvfaa {
            get {
                return ResourceManager.GetString("K.G.rmvfaa", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 为当前桌面中的活动程序唤起主视图.
        /// </summary>
        internal static string K_G_rmvfaaicvd {
            get {
                return ResourceManager.GetString("K.G.rmvfaaicvd", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 为当前桌面唤起主视图.
        /// </summary>
        internal static string K_G_rmvfcd {
            get {
                return ResourceManager.GetString("K.G.rmvfcd", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 窗口.
        /// </summary>
        internal static string K_W {
            get {
                return ResourceManager.GetString("K.W", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 移动.
        /// </summary>
        internal static string K_W_M {
            get {
                return ResourceManager.GetString("K.W.M", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 移动并跟随.
        /// </summary>
        internal static string K_W_MF {
            get {
                return ResourceManager.GetString("K.W.MF", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 热键已清除。.
        /// </summary>
        internal static string KB_Hotkey_Cleared {
            get {
                return ResourceManager.GetString("KB.Hotkey.Cleared", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 必须选择一个非修改类键。.
        /// </summary>
        internal static string KB_Hotkey_KeyCheck {
            get {
                return ResourceManager.GetString("KB.Hotkey.KeyCheck", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 移动到桌面 .
        /// </summary>
        internal static string KB_Hotkey_MW {
            get {
                return ResourceManager.GetString("KB.Hotkey.MW", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 移动并跟随到桌面 .
        /// </summary>
        internal static string KB_Hotkey_MWF {
            get {
                return ResourceManager.GetString("KB.Hotkey.MWF", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 热键注册失败。.
        /// </summary>
        internal static string KB_Hotkey_Reg_Fail {
            get {
                return ResourceManager.GetString("KB.Hotkey.Reg.Fail", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 热键注册成功。.
        /// </summary>
        internal static string KB_Hotkey_Reg_Success {
            get {
                return ResourceManager.GetString("KB.Hotkey.Reg.Success", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 设置已保存。.
        /// </summary>
        internal static string KB_Hotkey_SettingsSaved {
            get {
                return ResourceManager.GetString("KB.Hotkey.SettingsSaved", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 切换到桌面 .
        /// </summary>
        internal static string KB_Hotkey_SVD {
            get {
                return ResourceManager.GetString("KB.Hotkey.SVD", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 切换回上一个桌面.
        /// </summary>
        internal static string KB_Hotkey_SVD_BACK_LAST {
            get {
                return ResourceManager.GetString("KB.Hotkey.SVD_BACK_LAST", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 左键.
        /// </summary>
        internal static string Keys_Left {
            get {
                return ResourceManager.GetString("Keys.Left", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 中键.
        /// </summary>
        internal static string Keys_Middle {
            get {
                return ResourceManager.GetString("Keys.Middle", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 右键.
        /// </summary>
        internal static string Keys_Right {
            get {
                return ResourceManager.GetString("Keys.Right", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 显示上下文菜单.
        /// </summary>
        internal static string Mouse_Action_ContextMenu {
            get {
                return ResourceManager.GetString("Mouse.Action.ContextMenu", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 仅显示所选桌面.
        /// </summary>
        internal static string Mouse_Action_DesktopShowForSelectedDesktop {
            get {
                return ResourceManager.GetString("Mouse.Action.DesktopShowForSelectedDesktop", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 切换虚拟桌面并关闭视图.
        /// </summary>
        internal static string Mouse_Action_DesktopVisibleAndCloseView {
            get {
                return ResourceManager.GetString("Mouse.Action.DesktopVisibleAndCloseView", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 仅切换虚拟桌面.
        /// </summary>
        internal static string Mouse_Action_DesktopVisibleOnly {
            get {
                return ResourceManager.GetString("Mouse.Action.DesktopVisibleOnly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 什么都不做.
        /// </summary>
        internal static string Mouse_Action_DoNothing {
            get {
                return ResourceManager.GetString("Mouse.Action.DoNothing", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 激活窗口,切换桌面并关闭视图.
        /// </summary>
        internal static string Mouse_Action_WindowActiveDesktopVisibleAndCloseView {
            get {
                return ResourceManager.GetString("Mouse.Action.WindowActiveDesktopVisibleAndCloseView", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 激活窗口,切换桌面.
        /// </summary>
        internal static string Mouse_Action_WindowActiveDesktopVisibleOnly {
            get {
                return ResourceManager.GetString("Mouse.Action.WindowActiveDesktopVisibleOnly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 关闭窗口.
        /// </summary>
        internal static string Mouse_Action_WindowClose {
            get {
                return ResourceManager.GetString("Mouse.Action.WindowClose", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 仅显示所选桌面中的活动程序窗口.
        /// </summary>
        internal static string Mouse_Action_WindowShowForSelectedProcessInSelectedDesktop {
            get {
                return ResourceManager.GetString("Mouse.Action.WindowShowForSelectedProcessInSelectedDesktop", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 仅显示此程序的窗口.
        /// </summary>
        internal static string Mouse_Action_WindowShowForSelectedProcessOnly {
            get {
                return ResourceManager.GetString("Mouse.Action.WindowShowForSelectedProcessOnly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 确认.
        /// </summary>
        internal static string MsgBox_Caption_Confirm {
            get {
                return ResourceManager.GetString("MsgBox.Caption.Confirm", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 警告.
        /// </summary>
        internal static string MsgBox_Caption_Warning {
            get {
                return ResourceManager.GetString("MsgBox.Caption.Warning", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 切换到下一行.
        /// </summary>
        internal static string Nav_CircleHType_NextRow {
            get {
                return ResourceManager.GetString("Nav.CircleHType.NextRow", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 在同一行内循环.
        /// </summary>
        internal static string Nav_CircleHType_SameRow {
            get {
                return ResourceManager.GetString("Nav.CircleHType.SameRow", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 确定要删除这个配置文件吗?
        ///所有与此配置文件相关的文件都将被删除。.
        /// </summary>
        internal static string Profile_Confirm_Delete {
            get {
                return ResourceManager.GetString("Profile.Confirm.Delete", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 配置文件名无效,或该文件已存在。.
        /// </summary>
        internal static string Profile_Warning_InvalidProfileName {
            get {
                return ResourceManager.GetString("Profile.Warning.InvalidProfileName", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 不能重命名或删除最后一个配置文件。.
        /// </summary>
        internal static string Profile_Warning_LastProfileProtect {
            get {
                return ResourceManager.GetString("Profile.Warning.LastProfileProtect", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 至少需要一条窗口规则。.
        /// </summary>
        internal static string Rule_AtLeastOne {
            get {
                return ResourceManager.GetString("Rule.AtLeastOne", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 无效的正则表达式。.
        /// </summary>
        internal static string Rule_InvalidRegex {
            get {
                return ResourceManager.GetString("Rule.InvalidRegex", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 是必须的。.
        /// </summary>
        internal static string Rule_NameRequired {
            get {
                return ResourceManager.GetString("Rule.NameRequired", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 新规则.
        /// </summary>
        internal static string Rule_New {
            get {
                return ResourceManager.GetString("Rule.New", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 是.
        /// </summary>
        internal static string Rule_Op_Eq {
            get {
                return ResourceManager.GetString("Rule.Op.Eq", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 以...结尾.
        /// </summary>
        internal static string Rule_Op_Esw {
            get {
                return ResourceManager.GetString("Rule.Op.Esw", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 正则表达式.
        /// </summary>
        internal static string Rule_Op_Regex {
            get {
                return ResourceManager.GetString("Rule.Op.Regex", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 包含.
        /// </summary>
        internal static string Rule_Op_Sc {
            get {
                return ResourceManager.GetString("Rule.Op.Sc", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 以...开头.
        /// </summary>
        internal static string Rule_Op_Ssw {
            get {
                return ResourceManager.GetString("Rule.Op.Ssw", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 退出.
        /// </summary>
        internal static string Tray_Menu_Quit {
            get {
                return ResourceManager.GetString("Tray.Menu.Quit", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 设置.
        /// </summary>
        internal static string Tray_Menu_Settings {
            get {
                return ResourceManager.GetString("Tray.Menu.Settings", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 创建新的虚拟桌面.
        /// </summary>
        internal static string VDW_CTM_Desktop_Create {
            get {
                return ResourceManager.GetString("VDW.CTM.Desktop.Create", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 删除虚拟桌面.
        /// </summary>
        internal static string VDW_CTM_Desktop_Remove {
            get {
                return ResourceManager.GetString("VDW.CTM.Desktop.Remove", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 取消隐藏窗口.
        /// </summary>
        internal static string VDW_CTM_Desktop_UnHideWindow {
            get {
                return ResourceManager.GetString("VDW.CTM.Desktop.UnHideWindow", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 关闭.
        /// </summary>
        internal static string VDW_CTM_Window_Close {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.Close", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 从视图中隐藏.
        /// </summary>
        internal static string VDW_CTM_Window_HideFromView {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.HideFromView", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 为此窗口创建规则....
        /// </summary>
        internal static string VDW_CTM_Window_NewRule {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.NewRule", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 在所有桌面上显示此应用的窗口.
        /// </summary>
        internal static string VDW_CTM_Window_PinApp {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.PinApp", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 在所有桌面上显示此窗口.
        /// </summary>
        internal static string VDW_CTM_Window_PinWin {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.PinWin", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 屏幕.
        /// </summary>
        internal static string VDW_CTM_Window_Screen {
            get {
                return ResourceManager.GetString("VDW.CTM.Window.Screen", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to 不支持的 Windows 版本
        ///应用程序将退出
        ///
        ///支持的列表
        ///====================================
        ///Windows 10	Redstone5(17763)
        ///Windows 10	19H1(18362)
        ///Windows 10	19H2(18363)
        ///Windows 10	20H1(19041)
        ///Windows 10	20H2(19042)
        ///Windows 10	21H1(19043)
        ///Windows 10	21H2(19044)
        ///Windows 10	22H2(19045)
        ///Windows 11	21H2(22000)
        ///Windows 11	22H2(22621)
        ///====================================.
        /// </summary>
        internal static string VersionCheckFail {
            get {
                return ResourceManager.GetString("VersionCheckFail", resourceCulture);
            }
        }
    }
}


================================================
FILE: Bridge/Resources/Langs/WinFormStrings.zh-Hans.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <data name="VDW.CTM.Desktop.Create" xml:space="preserve">
    <value>创建新的虚拟桌面</value>
  </data>
  <data name="VDW.CTM.Desktop.Remove" xml:space="preserve">
    <value>删除虚拟桌面</value>
  </data>
  <data name="VDW.CTM.Window.Close" xml:space="preserve">
    <value>关闭</value>
  </data>
  <data name="VDW.CTM.Window.PinApp" xml:space="preserve">
    <value>在所有桌面上显示此应用的窗口</value>
  </data>
  <data name="VDW.CTM.Window.PinWin" xml:space="preserve">
    <value>在所有桌面上显示此窗口</value>
  </data>
  <data name="VersionCheckFail" xml:space="preserve">
    <value>不支持的 Windows 版本
应用程序将退出

支持的列表
====================================
Windows 10 Redstone5(17763)
Windows 10 19H1(18362)
Windows 10 19H2(18363)
Windows 10 20H1(19041)
Windows 10 20H2(19042)
Windows 10 21H1(19043)
Windows 10 21H2(19044)
Windows 10 22H2(19045)
Windows 11 21H2(22000)
Windows 11 22H2(22621)
Windows 11 23H2(22631)
====================================</value>
  </data>
  <data name="Rule.Op.Eq" xml:space="preserve">
    <value>是</value>
  </data>
  <data name="Rule.Op.Ssw" xml:space="preserve">
    <value>以...开头</value>
  </data>
  <data name="Rule.Op.Esw" xml:space="preserve">
    <value>以...结尾</value>
  </data>
  <data name="Rule.Op.Sc" xml:space="preserve">
    <value>包含</value>
  </data>
  <data name="Rule.Op.Regex" xml:space="preserve">
    <value>正则表达式</value>
  </data>
  <data name="Rule.AtLeastOne" xml:space="preserve">
    <value>至少需要一条窗口规则。</value>
  </data>
  <data name="Rule.InvalidRegex" xml:space="preserve">
    <value>无效的正则表达式。</value>
  </data>
  <data name="Rule.NameRequired" xml:space="preserve">
    <value>是必须的。</value>
  </data>
  <data name="VDW.CTM.Window.NewRule" xml:space="preserve">
    <value>为此窗口创建规则...</value>
  </data>
  <data name="Rule.New" xml:space="preserve">
    <value>新规则</value>
  </data>
  <data name="Error.MoveWindowToDesktop" xml:space="preserve">
    <value>窗口 【{0}】 匹配规则 【{1}】,但移动时发生错误。
可能的原因:
- 窗口无效。
- 目标桌面不存在。
- 目标桌面无效。</value>
  </data>
  <data name="Error.Title" xml:space="preserve">
    <value>错误!</value>
  </data>
  <data name="VDW.CTM.Window.HideFromView" xml:space="preserve">
    <value>从视图中隐藏</value>
  </data>
  <data name="VDW.CTM.Desktop.UnHideWindow" xml:space="preserve">
    <value>取消隐藏窗口</value>
  </data>
  <data name="VDW.CTM.Window.Screen" xml:space="preserve">
    <value>屏幕</value>
  </data>
  <data name="Nav.CircleHType.NextRow" xml:space="preserve">
    <value>切换到下一行</value>
  </data>
  <data name="Nav.CircleHType.SameRow" xml:space="preserve">
    <value>在同一行内循环</value>
  </data>
  <data name="KB.Hotkey.Cleared" xml:space="preserve">
    <value>热键已清除。</value>
  </data>
  <data name="KB.Hotkey.Reg.Success" xml:space="preserve">
    <value>热键注册成功。</value>
  </data>
  <data name="KB.Hotkey.Reg.Fail" xml:space="preserve">
    <value>热键注册失败。</value>
  </data>
  <data name="KB.Hotkey.SettingsSaved" xml:space="preserve">
    <value>设置已保存。</value>
  </data>
  <data name="KB.Hotkey.KeyCheck" xml:space="preserve">
    <value>必须选择一个非修改类键。</value>
  </data>
  <data name="Mouse.Action.DoNothing" xml:space="preserve">
    <value>什么都不做</value>
  </data>
  <data name="Mouse.Action.DesktopVisibleOnly" xml:space="preserve">
    <value>仅切换桌面</value>
  </data>
  <data name="Mouse.Action.DesktopVisibleAndCloseView" xml:space="preserve">
    <value>切换桌面并关闭视图</value>
  </data>
  <data name="Mouse.Action.ContextMenu" xml:space="preserve">
    <value>显示上下文菜单</value>
  </data>
  <data name="Mouse.Action.WindowClose" xml:space="preserve">
    <value>关闭窗口</value>
  </data>
  <data name="Mouse.Action.WindowActiveDesktopVisibleAndCloseView" xml:space="preserve">
    <value>激活窗口,切换桌面并关闭视图</value>
  </data>
  <data name="Mouse.Action.WindowActiveDesktopVisibleOnly" xml:space="preserve">
    <value>激活窗口,切换桌面</value>
  </data>
  <data name="Cluster.Notification.SVD.Current" xml:space="preserve">
    <value>当前桌面:</value>
  </data>
  <data name="Cluster.Notification.SVD.Last" xml:space="preserve">
    <value>上一个桌面:</value>
  </data>
  <data name="General.RunOnStartup.Error.Permission" xml:space="preserve">
    <value>当前权限级别无法访问计划任务,
请确保当前账户是此计算机的管理员并且“以管理员身份运行”运行此程序。</value>
  </data>
  <data name="Mouse.Action.WindowShowForSelectedProcessOnly" xml:space="preserve">
    <value>仅显示此程序的窗口</value>
  </data>
  <data name="KB.Hotkey.SVD" xml:space="preserve">
    <value>切换到桌面 </value>
  </data>
  <data name="KB.Hotkey.MW" xml:space="preserve">
    <value>移动到桌面 </value>
  </data>
  <data name="KB.Hotkey.MWF" xml:space="preserve">
    <value>移动并跟随到桌面 </value>
  </data>
  <data name="Mouse.Action.WindowShowForSelectedProcessInSelectedDesktop" xml:space="preserve">
    <value>仅显示所选桌面中的活动程序窗口</value>
  </data>
  <data name="Keys.Left" xml:space="preserve">
    <value>左键</value>
  </data>
  <data name="Keys.Middle" xml:space="preserve">
    <value>中键</value>
  </data>
  <data name="Keys.Right" xml:space="preserve">
    <value>右键</value>
  </data>
  <data name="Mouse.Action.DesktopShowForSelectedDesktop" xml:space="preserve">
    <value>仅显示所选桌面</value>
  </data>
  <data name="KB.Hotkey.SVD_BACK_LAST" xml:space="preserve">
    <value>切换回上一个桌面</value>
  </data>
  <data name="Profile.Warning.LastProfileProtect" xml:space="preserve">
    <value>不能重命名或删除最后一个配置文件。
复制一个新的配置文件后即可操作。</value>
  </data>
  <data name="Profile.Confirm.Delete" xml:space="preserve">
    <value>确定要删除这个配置文件吗?
所有与此配置文件相关的文件都将被删除。</value>
  </data>
  <data name="Profile.Warning.InvalidProfileName" xml:space="preserve">
    <value>配置文件名无效,或该文件已存在。</value>
  </data>
  <data name="MsgBox.Caption.Confirm" xml:space="preserve">
    <value>确认</value>
  </data>
  <data name="MsgBox.Caption.Warning" xml:space="preserve">
    <value>警告</value>
  </data>
  <data name="Tray.Menu.Settings" xml:space="preserve">
    <value>设置</value>
  </data>
  <data name="Tray.Menu.Quit" xml:space="preserve">
    <value>退出</value>
  </data>
  <data name="K_G" xml:space="preserve">
    <value>通用</value>
  </data>
  <data name="hk_node_open_app_controller" xml:space="preserve">
    <value>打开程序控制</value>
  </data>
  <data name="hk_node_rise_mainview" xml:space="preserve">
    <value>唤起主视图</value>
  </data>
  <data name="hk_node_rise_mainview_for_active_app" xml:space="preserve">
    <value>为当前活动程序唤起主视图</value>
  </data>
  <data name="hk_node_rise_mainview_for_current_vd" xml:space="preserve">
    <value>为当前桌面唤起主视图</value>
  </data>
  <data name="hk_node_rise_mainview_for_active_app_in_current_vd" xml:space="preserve">
    <value>为当前桌面中的活动程序唤起主视图</value>
  </data>
  <data name="K_D" xml:space="preserve">
    <value>桌面</value>
  </data>
  <data name="K_D_N" xml:space="preserve">
    <value>导航</value>
  </data>
  <data name="K_D_S" xml:space="preserve">
    <value>切换桌面</value>
  </data>
  <data name="K_W" xml:space="preserve">
    <value>窗口</value>
  </data>
  <data name="K_W_M" xml:space="preserve">
    <value>移动</value>
  </data>
  <data name="K_W_MF" xml:space="preserve">
    <value>移动并跟随</value>
  </data>
  <data name="hk_node_nav_left" xml:space="preserve">
    <value>向左</value>
  </data>
  <data name="hk_node_nav_right" xml:space="preserve">
    <value>向右</value>
  </data>
  <data name="hk_node_nav_up" xml:space="preserve">
    <value>向上</value>
  </data>
  <data name="hk_node_nav_down" xml:space="preserve">
    <value>向下</value>
  </data>
  <data name="KB.Hotkey.MKeyCheck" xml:space="preserve">
    <value>至少需要一个修改类键。</value>
  </data>
  <data name="M.D" xml:space="preserve">
    <value>桌面</value>
  </data>
  <data name="M.W" xml:space="preserve">
    <value>窗口</value>
  </data>
  <data name="M.ROOT" xml:space="preserve">
    <value>主视图</value>
  </data>
  <data name="M.D.DesktopVisibleAndCloseView" xml:space="preserve">
    <value>切换桌面并关闭视图</value>
  </data>
  <data name="M.D.DesktopVisibleOnly" xml:space="preserve">
    <value>仅切换桌面</value>
  </data>
  <data name="M.D.DesktopShowForSelectedDesktop" xml:space="preserve">
    <value>仅显示所选桌面</value>
  </data>
  <data name="M.ContextMenu" xml:space="preserve">
    <value>显示上下文菜单</value>
  </data>
  <data name="M.W.WindowActiveDesktopVisibleAndCloseView" xml:space="preserve">
    <value>激活窗口,切换桌面并关闭视图</value>
  </data>
  <data name="M.W.WindowActiveDesktopVisibleOnly" xml:space="preserve">
    <value>激活窗口,切换桌面</value>
  </data>
  <data name="M.W.WindowHideFromView" xml:space="preserve">
    <value>从视图中隐藏</value>
  </data>
  <data name="M.W.WindowClose" xml:space="preserve">
    <value>关闭窗口</value>
  </data>
  <data name="M.W.WindowShowForSelectedProcessOnly" xml:space="preserve">
    <value>仅显示此程序的窗口</value>
  </data>
  <data name="M.W.WindowShowForSelectedProcessInSelectedDesktop" xml:space="preserve">
    <value>仅显示所选桌面中的活动程序窗口</value>
  </data>
  <data name="Validation.Mouse.Button.Required" xml:space="preserve">
    <value>必须选择鼠标键</value>
  </data>
  <data name="Mouse.Tips.Exists" xml:space="preserve">
    <value>相同的鼠标动作已存在,尝试换一种组合或鼠标键</value>
  </data>
  <data name="hk_node_toggle_window_filter" xml:space="preserve">
    <value>开关窗口过滤器</value>
  </data>
</root>

================================================
FILE: Bridge/VirtualDesktopNotification.cs
================================================
/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)

This file is part of VirtualSpace.

VirtualSpace is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

VirtualSpace is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VirtualSpace. If not, see <https://www.gnu.org/licenses/>.
*/

using System;

namespace VirtualSpace.Commons
{
    public enum VirtualDesktopNotificationType
    {
        CREATED,
        DELETED,
        CURRENT_CHANGED
    }

    public class VirtualDesktopNotification
    {
        public VirtualDesktopNotificationType Type  { get; set; }
        public Guid                           NewId { get; set; }
        public Guid                           OldId { get; set; }
    }
}

================================================
FILE: Bridge/Window.cs
================================================
/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)

This file is part of VirtualSpace.

VirtualSpace is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

VirtualSpace is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VirtualSpace. If not, see <https://www.gnu.org/licenses/>.
*/

using System;

namespace VirtualSpace.Config.Events.Entity
{
    public class Window
    {
        public IntPtr  Handle      { get; set; }
        public string  Title       { get; set; }
        public string  WndClass    { get; set; }
        public string? WinInScreen { get; set; }
        public int     VdIndex     { get; set; }
        public int?    ProcessId   { get; set; }
        public string? ProcessName { get; set; }
        public string? ProcessPath { get; set; }
        public string? CommandLine { get; set; }

        public static Window Create(
            IntPtr handle,
            string title,
            string wndClass,
            int    pId )
        {
            return new Window
            {
                Handle = handle,
                Title = title,
                WndClass = wndClass,
                ProcessId = pId
            };
        }
    }
}

================================================
FILE: COPYING
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
a
Download .txt
gitextract_c1e7rff4/

├── .gitignore
├── Bridge/
│   ├── Agent.cs
│   ├── Behavior.cs
│   ├── Bridge.csproj
│   ├── COPYING
│   ├── Channels.cs
│   ├── Interfaces/
│   │   ├── IAppController.cs
│   │   └── IDesktop.cs
│   ├── Resources/
│   │   ├── Images/
│   │   │   ├── Images.Designer.cs
│   │   │   └── Images.resx
│   │   └── Langs/
│   │       ├── WinFormStrings.Designer.cs
│   │       ├── WinFormStrings.resx
│   │       ├── WinFormStrings.zh-Hans.Designer.cs
│   │       └── WinFormStrings.zh-Hans.resx
│   ├── VirtualDesktopNotification.cs
│   └── Window.cs
├── COPYING
├── Configuration/
│   ├── COPYING
│   ├── ConfigTemplate.cs
│   ├── Configuration.csproj
│   ├── Const.cs
│   ├── Converter/
│   │   └── EntityConverter.cs
│   ├── DataAnnotations/
│   │   └── PropertyProtectorAttribute.cs
│   ├── Entity/
│   │   ├── Cluster.cs
│   │   ├── Colour.cs
│   │   ├── KeyBinding.cs
│   │   ├── LogConfig.cs
│   │   ├── Margin.cs
│   │   ├── Mouse.cs
│   │   ├── Navigation.cs
│   │   └── UserInterface.cs
│   ├── Events/
│   │   ├── Entity/
│   │   │   ├── ExpressionTemplate.cs
│   │   │   └── RuleTemplate.cs
│   │   └── Expression/
│   │       ├── Conditions.cs
│   │       └── Conditions.test.cs
│   ├── FodyWeavers.xml
│   ├── Manager.cs
│   ├── Profile.cs
│   └── Profiles/
│       └── Default.cs
├── Helpers/
│   ├── COPYING
│   ├── DwmApi.cs
│   ├── GlobalHotKey.cs
│   ├── Helpers.csproj
│   ├── Images.cs
│   ├── Kernel32.cs
│   ├── LowLevelHooks.cs
│   ├── StringHelper.cs
│   ├── SysInfo.cs
│   ├── TaskSchedulerHelper.cs
│   ├── User32.cs
│   ├── UserMessage.cs
│   ├── VisualEffects.cs
│   ├── Win32.cs
│   ├── WinForms.cs
│   ├── WinMsg.cs
│   └── WinRegistry.cs
├── Ipc/
│   ├── Commons/
│   │   ├── Config.cs
│   │   ├── HostInfo.cs
│   │   ├── Ipc.csproj
│   │   ├── PipeMessage.cs
│   │   └── PipeMessageType.cs
│   ├── IpcClient/
│   │   ├── IpcClient.csproj
│   │   └── IpcPipeClient.cs
│   └── IpcServer/
│       ├── IpcPipeServer.cs
│       └── IpcServer.csproj
├── LinqExpressionBuilder/
│   ├── COPYING
│   ├── Keywords.cs
│   ├── LinqExpressionBuilder.cs
│   └── LinqExpressionBuilder.csproj
├── Logger/
│   ├── COPYING
│   ├── LogMessage.cs
│   ├── Logger.cs
│   ├── Logger.csproj
│   └── Manager.cs
├── Plugin/
│   ├── Commons/
│   │   ├── Plugin.csproj
│   │   ├── PluginInfo.cs
│   │   ├── PluginManager.cs
│   │   └── WinApi.cs
│   └── PluginHost/
│       ├── PluginConst.cs
│       ├── PluginHost.cs
│       └── PluginHost.csproj
├── Plugins.sln/
│   ├── .gitignore
│   ├── COPYING
│   ├── Cube3D/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── AutoVersion.tt
│   │   ├── COPYING
│   │   ├── Config/
│   │   │   ├── Const.cs
│   │   │   ├── Settings.cs
│   │   │   └── SettingsManager.cs
│   │   ├── Cube3D.csproj
│   │   ├── D3DImages/
│   │   │   └── D3DImages.cs
│   │   ├── Effects/
│   │   │   ├── Cube.cs
│   │   │   ├── Effect.cs
│   │   │   ├── Fade.cs
│   │   │   ├── Flip.cs
│   │   │   ├── InsideCube.cs
│   │   │   ├── Reveal.cs
│   │   │   └── Slide.cs
│   │   ├── FrameToD3DImage.cs
│   │   ├── Helpers/
│   │   │   ├── User32.cs
│   │   │   ├── Win32.cs
│   │   │   ├── WinMsg.cs
│   │   │   └── WpfConverters.cs
│   │   ├── MainWindow.2D.cs
│   │   ├── MainWindow.3D.cs
│   │   ├── MainWindow.animation.cs
│   │   ├── MainWindow.frame.cs
│   │   ├── MainWindow.hotkeys.cs
│   │   ├── MainWindow.xaml
│   │   ├── MainWindow.xaml.cs
│   │   ├── SettingsWindow.xaml
│   │   ├── SettingsWindow.xaml.cs
│   │   ├── app.manifest
│   │   ├── plugin.json
│   │   └── settings.json
│   ├── Plugins.sln
│   ├── ScreenCapture/
│   │   ├── COPYING
│   │   ├── CaptureHelper.cs
│   │   ├── D3D9ShareCapture.cs
│   │   ├── Direct3D11Helper.cs
│   │   ├── FrameProcessor.cs
│   │   ├── MonitorEnumerationHelper.cs
│   │   ├── ScreenCapture.csproj
│   │   └── WindowEnumerationHelper.cs
│   └── Updater/
│       ├── AutoVersion.tt
│       ├── COPYING
│       ├── Config/
│       │   └── Const.cs
│       ├── HttpClientProgress.cs
│       ├── MainForm.Designer.cs
│       ├── MainForm.cs
│       ├── MainForm.resx
│       ├── Program.cs
│       ├── Resources/
│       │   └── Langs/
│       │       ├── WinFormStrings.resx
│       │       └── WinFormStrings.zh-Hans.resx
│       ├── Updater.csproj
│       └── plugin.json
├── Readme.md
├── Resources/
│   ├── COPYING
│   ├── Images.Designer.cs
│   ├── Images.resx
│   └── Resources.csproj
├── UiAutomation/
│   ├── COPYING
│   ├── UIA.cs
│   └── UiAutomation.csproj
├── VirtualDesktop/
│   ├── VirtualDesktop10/
│   │   ├── COM.cs
│   │   ├── VirtualDesktop.cs
│   │   ├── VirtualDesktop10.csproj
│   │   └── VirtualDesktopManager.cs
│   ├── VirtualDesktop11/
│   │   ├── COM.cs
│   │   ├── VirtualDesktop.cs
│   │   ├── VirtualDesktop11.csproj
│   │   └── VirtualDesktopManager.cs
│   ├── VirtualDesktop11_21H2/
│   │   ├── COM.cs
│   │   ├── VirtualDesktop.cs
│   │   ├── VirtualDesktop11_21H2.csproj
│   │   └── VirtualDesktopManager.cs
│   ├── VirtualDesktop11_23H2/
│   │   ├── COM.cs
│   │   ├── VirtualDesktop.cs
│   │   ├── VirtualDesktop11_23H2.csproj
│   │   └── VirtualDesktopManager.cs
│   ├── VirtualDesktop11_23H2_3085/
│   │   ├── COM.cs
│   │   ├── VirtualDesktop.cs
│   │   ├── VirtualDesktop11_23H2_3085.csproj
│   │   └── VirtualDesktopManager.cs
│   └── VirtualDesktop11_24H2/
│       ├── COM.cs
│       ├── VirtualDesktop.cs
│       ├── VirtualDesktop11_24H2.csproj
│       └── VirtualDesktopManager.cs
├── VirtualDesktopWrapper/
│   ├── DesktopManagerWrapper.cs
│   ├── DesktopManagerWrapper.events.cs
│   ├── DesktopManagerWrapper.wallpaper.cs
│   ├── DesktopWrapper.cs
│   ├── VirtualDesktopWrapper.csproj
│   └── Wrapper11.cs
├── VirtualSpace/
│   ├── App.xaml
│   ├── App.xaml.cs
│   ├── AssemblyInfo.cs
│   ├── AutoVersion.tt
│   ├── COPYING
│   ├── Factory/
│   │   └── AppControllerFactory.cs
│   ├── MainWindow.filter.cs
│   ├── MainWindow.hotkeys.cs
│   ├── MainWindow.layout.cs
│   ├── MainWindow.main.cs
│   ├── MainWindow.message.cs
│   ├── MainWindow.style.cs
│   ├── MainWindow.xaml
│   ├── MainWindow.xaml.cs
│   ├── Program.cs
│   ├── Tools/
│   │   ├── SystemTool.cs
│   │   ├── TrayIcon.cs
│   │   └── WindowTool.cs
│   ├── VirtualDesktop/
│   │   ├── Daemon.cs
│   │   ├── DragWindow.Designer.cs
│   │   ├── DragWindow.cs
│   │   ├── DragWindow.resx
│   │   ├── Filters.cs
│   │   ├── Manager.arrangement.cs
│   │   ├── Manager.cs
│   │   ├── Manager.events.cs
│   │   ├── Manager.layout.cs
│   │   ├── Menus.cs
│   │   ├── Navigation.cs
│   │   ├── VirtualDesktopWindow.Designer.cs
│   │   ├── VirtualDesktopWindow.Mouse.cs
│   │   ├── VirtualDesktopWindow.Thumbs.cs
│   │   ├── VirtualDesktopWindow.cs
│   │   ├── VirtualDesktopWindow.resx
│   │   └── VisibleWindow.cs
│   ├── VirtualSpace.csproj
│   ├── WindowFilter.xaml
│   ├── WindowFilter.xaml.cs
│   └── app.manifest
├── VirtualSpace.sln
├── WPF/
│   └── ControlPanel/
│       ├── App.xaml
│       ├── App.xaml.cs
│       ├── AssemblyInfo.cs
│       ├── COPYING
│       ├── ControlPanel.csproj
│       ├── ControlPanel.xaml
│       ├── Converters/
│       │   ├── CheckBoxConverter.cs
│       │   ├── CheckBoxStateByIndexConverter.cs
│       │   ├── DrawerStateMutexConverter.cs
│       │   ├── LocConverter.cs
│       │   ├── MouseActionConverter.cs
│       │   ├── RuleFieldConverter.cs
│       │   ├── RuleFieldFromControlNameConverter.cs
│       │   ├── RuleFormDefaultValueConverter.cs
│       │   ├── RuleHeaderByStateConverter.cs
│       │   ├── ThemeConverter.cs
│       │   ├── UIButtonStyleByVdAConverter.cs
│       │   └── WidthHeightConverter.cs
│       ├── ExportResourceDictionary.cs
│       ├── ExportResourceDictionary.xaml
│       ├── Factories/
│       │   ├── NavBarItem.cs
│       │   └── PageFactory.cs
│       ├── FodyWeavers.xml
│       ├── MainWindow.logs.cs
│       ├── MainWindow.theme.cs
│       ├── MainWindow.xaml
│       ├── MainWindow.xaml.cs
│       ├── Pages/
│       │   ├── Control.keyboard.cs
│       │   ├── Control.mouse.cs
│       │   ├── Control.tree.cs
│       │   ├── Control.xaml
│       │   ├── Control.xaml.cs
│       │   ├── Dialogs/
│       │   │   ├── ProfileNameDialog.xaml
│       │   │   ├── ProfileNameDialog.xaml.cs
│       │   │   ├── YesNoWithNote.xaml
│       │   │   └── YesNoWithNote.xaml.cs
│       │   ├── General.xaml
│       │   ├── General.xaml.cs
│       │   ├── Help.xaml
│       │   ├── Help.xaml.cs
│       │   ├── Logs.xaml
│       │   ├── Logs.xaml.cs
│       │   ├── Menus/
│       │   │   ├── Commons/
│       │   │   │   ├── MenuContainer.xaml
│       │   │   │   └── MenuContainer.xaml.cs
│       │   │   ├── LogsMenu.xaml
│       │   │   └── LogsMenu.xaml.cs
│       │   ├── Plugins.xaml
│       │   ├── Plugins.xaml.cs
│       │   ├── Rules.ue.cs
│       │   ├── Rules.xaml
│       │   ├── Rules.xaml.cs
│       │   ├── Settings.xaml
│       │   ├── Settings.xaml.cs
│       │   ├── UI.xaml
│       │   ├── UI.xaml.cs
│       │   └── UserControls/
│       │       ├── RuleForm.xaml
│       │       └── RuleForm.xaml.cs
│       ├── Resources/
│       │   ├── Definitions/
│       │   │   ├── KeyboardTree.json
│       │   │   └── MouseTree.json
│       │   ├── Langs.Designer.cs
│       │   ├── Langs.resx
│       │   └── Langs.zh-Hans.resx
│       ├── RuleEditorWindow.xaml
│       ├── RuleEditorWindow.xaml.cs
│       ├── Validation/
│       │   ├── Helper.cs
│       │   ├── NotEmptyValidationRule.cs
│       │   └── NumberRangeValidationRule.cs
│       └── ViewModels/
│           ├── ControlViewModel.cs
│           ├── FullObservableCollection.cs
│           ├── GeneralViewModel.cs
│           ├── LogsViewModel.cs
│           ├── MenuContainerViewModel.cs
│           ├── PluginsViewModel.cs
│           ├── RulesViewModel.cs
│           ├── SettingsViewModel.cs
│           ├── UIViewModel.cs
│           └── ViewModelBase.cs
└── WinForms/
    └── AppController/
        ├── AppController.Designer.cs
        ├── AppController.DesktopArrangement.cs
        ├── AppController.cluster.cs
        ├── AppController.cs
        ├── AppController.csproj
        ├── AppController.keyboard.cs
        ├── AppController.lang.cs
        ├── AppController.logs.cs
        ├── AppController.mouse.cs
        ├── AppController.nav.cs
        ├── AppController.plugins.cs
        ├── AppController.profile.cs
        ├── AppController.resx
        ├── AppController.rules.cs
        ├── AppController.ui.cs
        ├── AppController.zh-Hans.resx
        ├── RuleForm.Designer.cs
        ├── RuleForm.cs
        ├── RuleForm.resx
        └── RuleForm.zh-Hans.resx
Download .txt
Showing preview only (219K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2324 symbols across 215 files)

FILE: Bridge/Agent.cs
  class Agent (line 18) | public static class Agent

FILE: Bridge/Behavior.cs
  class Behavior (line 16) | public class Behavior
    method Clone (line 28) | public Behavior Clone()

FILE: Bridge/Channels.cs
  class Channels (line 17) | public static class Channels

FILE: Bridge/Interfaces/IAppController.cs
  type IAppController (line 15) | public interface IAppController
    method BringToTop (line 17) | public void BringToTop();
    method SetMainWindowHandle (line 18) | public void SetMainWindowHandle( IntPtr handle );
    method Quit (line 19) | public void Quit();
    method RenderDesktopArrangementButtons (line 20) | public void RenderDesktopArrangementButtons( string selectedDa );
    method CreateRuleFromWindowHandle (line 21) | public void CreateRuleFromWindowHandle( IntPtr      handle );

FILE: Bridge/Interfaces/IDesktop.cs
  type IDesktop (line 13) | public interface IDesktop
    method MakeVisible (line 15) | public void MakeVisible();

FILE: Bridge/Resources/Images/Images.Designer.cs
  class Images (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Images (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Bridge/Resources/Langs/WinFormStrings.Designer.cs
  class WinFormStrings (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method WinFormStrings (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Bridge/Resources/Langs/WinFormStrings.zh-Hans.Designer.cs
  class WinFormStrings_zh_Hans (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method WinFormStrings_zh_Hans (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Bridge/VirtualDesktopNotification.cs
  type VirtualDesktopNotificationType (line 16) | public enum VirtualDesktopNotificationType
  class VirtualDesktopNotification (line 23) | public class VirtualDesktopNotification

FILE: Bridge/Window.cs
  class Window (line 16) | public class Window
    method Create (line 28) | public static Window Create(

FILE: Configuration/ConfigTemplate.cs
  class ConfigTemplate (line 18) | public class ConfigTemplate
    method GetMouseActionById (line 54) | public MouseAction.Action GetMouseActionById( string id )

FILE: Configuration/Const.cs
  class Const (line 19) | public static class Const
    class Window (line 39) | public static class Window
    class VirtualDesktop (line 49) | public static class VirtualDesktop
    class Settings (line 56) | public static class Settings
    class Reg (line 69) | public static class Reg
    class Args (line 75) | public static class Args
    class Hotkey (line 80) | public static class Hotkey
      method GetFuncDesc (line 134) | public static string GetFuncDesc( string key )
      method GetKeyBinding (line 157) | public static KeyBinding GetKeyBinding( string key )
      method GetHotkeyExtra (line 180) | public static string GetHotkeyExtra( string key )
  class MouseAction (line 193) | public static class MouseAction
    type Action (line 195) | public enum Action
    method MouseAction (line 226) | static MouseAction()
    method GetActionId (line 283) | public static string GetActionId( MouseButtons mb, Keys key, string pr...

FILE: Configuration/Converter/EntityConverter.cs
  class EntityConverter (line 16) | public static class EntityConverter
    method ConvertMouseAction (line 18) | public static void ConvertMouseAction( Dictionary<string, MouseAction....

FILE: Configuration/DataAnnotations/PropertyProtectorAttribute.cs
  class PropertyProtectorAttribute (line 16) | public class PropertyProtectorAttribute : Attribute
    method PropertyProtectorAttribute (line 20) | public PropertyProtectorAttribute()
    method PropertyProtectorAttribute (line 24) | public PropertyProtectorAttribute( byte defaultV, byte min )
    method PropertyProtectorAttribute (line 29) | public PropertyProtectorAttribute( int defaultV, int min, int max )
    method PropertyProtectorAttribute (line 34) | public PropertyProtectorAttribute( long defaultV, long min, long max )
  class PropertyProtector (line 40) | public abstract class PropertyProtector
    method Walk (line 42) | public static void Walk( object obj )

FILE: Configuration/Entity/Cluster.cs
  class Cluster (line 16) | public class Cluster

FILE: Configuration/Entity/Colour.cs
  class Colour (line 16) | public class Colour
    method GetLongOfColor (line 22) | public uint GetLongOfColor()

FILE: Configuration/Entity/KeyBinding.cs
  class KeyBinding (line 14) | public class KeyBinding

FILE: Configuration/Entity/LogConfig.cs
  class LogConfig (line 13) | public class LogConfig

FILE: Configuration/Entity/Margin.cs
  class Margin (line 16) | public class Margin
    method Margin (line 18) | public Margin()
    method Margin (line 22) | public Margin( int all )

FILE: Configuration/Entity/Mouse.cs
  class Mouse (line 15) | public class Mouse

FILE: Configuration/Entity/Navigation.cs
  class Navigation (line 13) | public class Navigation

FILE: Configuration/Entity/UserInterface.cs
  class UserInterface (line 16) | public class UserInterface

FILE: Configuration/Events/Entity/ExpressionTemplate.cs
  class ExpressionTemplate (line 17) | public class ExpressionTemplate
  class Value (line 28) | public class Value

FILE: Configuration/Events/Entity/RuleTemplate.cs
  class RuleTemplate (line 18) | [AddINotifyPropertyChangedInterface]
  class RuleFields (line 34) | public static class RuleFields

FILE: Configuration/Events/Expression/Conditions.cs
  class Conditions (line 33) | public static partial class Conditions
    method Conditions (line 43) | static Conditions()
    method RuleChecker (line 50) | private static async void RuleChecker()
    method InitRules (line 61) | private static List<RuleTemplate> InitRules()
    method BuildRuleExp (line 72) | private static void BuildRuleExp( List<RuleTemplate> rules )
    method FetchRules (line 82) | public static List<RuleTemplate> FetchRules()
    method CheckRulesForWindow (line 87) | private static async void CheckRulesForWindow( Window win )
    method ReadRuleFromFile (line 187) | private static List<RuleTemplate> ReadRuleFromFile( string path )
    method ParseExpressionTemplate (line 198) | public static ExpressionTemplate ParseExpressionTemplate( JsonDocument...
    method GetJsonDeserializerOptions (line 207) | private static JsonSerializerOptions GetJsonDeserializerOptions()
    method GetJsonSerializerOptions (line 212) | public static JsonSerializerOptions GetJsonSerializerOptions()
    method SaveRules (line 222) | public static async void SaveRules( List<RuleTemplate> ruleList, strin...
    method SwitchRuleProfile (line 239) | public static void SwitchRuleProfile()

FILE: Configuration/Events/Expression/Conditions.test.cs
  class Conditions (line 22) | public static partial class Conditions
    method TestData (line 24) | private static void TestData( string path )

FILE: Configuration/Manager.cs
  class Manager (line 30) | public static class Manager
    method Init (line 43) | public static bool Init()
    method InitConfig (line 68) | private static void InitConfig( string filePath )
    method Save (line 132) | public static async void Save( string? filePath = null, object? reason...
    method SwitchProfile (line 150) | public static async void SwitchProfile( string name )
    method SaveCluster (line 177) | public static void SaveCluster( Cluster cluster )
    method ReadCluster (line 182) | private static Cluster? ReadCluster()
    method SaveProfile (line 187) | private static async void SaveProfile<T>( string path, T p )
    method ReadProfile (line 202) | private static T? ReadProfile<T>( string path )
    method DeleteFilesOfProfile (line 221) | public static async void DeleteFilesOfProfile( string profileName )
    method SetConfigRoot (line 240) | public static void SetConfigRoot( string path )
    method GetConfigRoot (line 247) | private static string GetConfigRoot()
    method CheckFolders (line 259) | private static void CheckFolders()
    method GetRuleFilePath (line 271) | public static string GetRuleFilePath( string? profile = null )
    method GetCachePath (line 279) | public static string GetCachePath()
    method GetPluginsPath (line 285) | public static string GetPluginsPath()

FILE: Configuration/Profile.cs
  class Profile (line 20) | public class Profile
    method Clone (line 36) | public Profile Clone()

FILE: Configuration/Profiles/Default.cs
  class Default (line 17) | public class Default : Profile
    method Default (line 19) | public Default()

FILE: Helpers/DwmApi.cs
  class DwmApi (line 6) | public static class DwmApi
    type DwmWindowAttribute (line 8) | [Flags]
    method DwmRegisterThumbnail (line 114) | [DllImport( "dwmapi.dll" )]
    method DwmUnregisterThumbnail (line 117) | [DllImport( "dwmapi.dll" )]
    method DwmQueryThumbnailSourceSize (line 120) | [DllImport( "dwmapi.dll" )]
    method DwmUpdateThumbnailProperties (line 123) | [DllImport( "dwmapi.dll" )]
    method DwmGetWindowAttribute (line 126) | [DllImport( "dwmapi.dll" )]
  type DWM_THUMBNAIL_PROPERTIES (line 130) | [StructLayout( LayoutKind.Sequential )]

FILE: Helpers/GlobalHotKey.cs
  class GlobalHotKey (line 18) | public static class GlobalHotKey
    type KeyModifiers (line 20) | [Flags]
    method RegHotKey (line 33) | public static bool RegHotKey( IntPtr hWnd, int id, KeyModifiers fsModi...
    method RegisterHotKey (line 40) | [DllImport( "user32.dll", SetLastError = true )]
    method UnregisterHotKey (line 43) | [DllImport( "user32.dll", SetLastError = true )]
    method UnRegAllHotKey (line 46) | public static void UnRegAllHotKey()

FILE: Helpers/Images.cs
  class PathInfo (line 23) | internal static class PathInfo
  class Images (line 28) | public static class Images
    method GetScaledBitmap (line 30) | public static Bitmap GetScaledBitmap( int width, int height, string pa...
    method GetEncoder (line 62) | private static ImageCodecInfo GetEncoder( ImageFormat format )
    method BytesToIcon (line 76) | public static Icon BytesToIcon( object bytes )
    method BytesToBitmap (line 82) | public static Bitmap BytesToBitmap( object bytes )
  class Wallpaper (line 89) | public class Wallpaper
    method CachedWallPaper (line 95) | public static Bitmap? CachedWallPaper( string path, string cachePath, ...
    method CachedWallPaperInfo (line 101) | public static (bool Exists, string Path) CachedWallPaperInfo( string p...
    method Md5Hash (line 111) | public static (string FullString, string Str0, string Str1) Md5Hash( s...
    method Release (line 132) | public void Release()

FILE: Helpers/Kernel32.cs
  class Kernel32 (line 6) | public static class Kernel32
    method GetModuleHandle (line 8) | [DllImport( "kernel32.dll", CharSet = CharSet.Unicode, SetLastError = ...

FILE: Helpers/LowLevelHooks.cs
  class LowLevelHooks (line 19) | public static class LowLevelHooks
  class LowLevelKeyboardHook (line 24) | public static class LowLevelKeyboardHook
    method SetHook (line 34) | public static void SetHook( User32.HookProc proc )
    method MultipleKeyDown (line 40) | public static void MultipleKeyDown( List<Keys> keys )
    method MultipleKeyUp (line 45) | public static void MultipleKeyUp( List<Keys> keys )
    method MultipleKeyPress (line 50) | public static void MultipleKeyPress( List<Keys> keys )
    method SendKeys (line 55) | private static void SendKeys( List<Keys> keys, KEYEVENTF flags )
    method SendKeysCombine (line 76) | private static void SendKeysCombine( List<Keys> keys )
    method IsKeyHold (line 106) | public static bool IsKeyHold( Keys key )
    method UnHook (line 111) | public static void UnHook()
    type KBDLLHOOKSTRUCT (line 116) | public struct KBDLLHOOKSTRUCT
    type KBDLLHOOKSTRUCTFlags (line 125) | [Flags]
  class LowLevelMouseHook (line 135) | public static class LowLevelMouseHook
    method SetHook (line 143) | public static void SetHook( User32.HookProc proc )
    method UnHook (line 149) | public static void UnHook()
    type MSLLHOOKSTRUCT (line 154) | [StructLayout( LayoutKind.Sequential )]

FILE: Helpers/StringHelper.cs
  class StringHelper (line 16) | public static class StringHelper
    method IsValidRegex (line 18) | public static bool IsValidRegex( string pattern )

FILE: Helpers/SysInfo.cs
  class SysInfo (line 29) | public static class SysInfo
    method SysInfo (line 36) | static SysInfo()
    method GetDpi (line 43) | private static (float ScaleX, float ScaleY) GetDpi()
    method GetAspectRadioOfScreen (line 69) | public static (int W, int H) GetAspectRadioOfScreen()
    method GetGreatestCommonDivisor (line 75) | private static int GetGreatestCommonDivisor( int a, int b )
    method IsTaskbarVisible (line 86) | public static bool IsTaskbarVisible()
    type WinAppsTheme (line 91) | public enum WinAppsTheme
    method GetAppsTheme (line 97) | public static WinAppsTheme GetAppsTheme()
    method GetAllScreens (line 106) | public static List<object> GetAllScreens()
  class ScreenInterrogatory (line 122) | public static class ScreenInterrogatory
    method MonitorFriendlyName (line 126) | private static string MonitorFriendlyName( LUID adapterId, uint target...
    method GetAllMonitorsFriendlyNames (line 144) | private static IEnumerable<string> GetAllMonitorsFriendlyNames()
    method DeviceFriendlyName (line 173) | public static string DeviceFriendlyName( this Screen screen )
    type QUERY_DEVICE_CONFIG_FLAGS (line 184) | public enum QUERY_DEVICE_CONFIG_FLAGS : uint
    type DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY (line 191) | public enum DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY : uint
    type DISPLAYCONFIG_SCANLINE_ORDERING (line 213) | public enum DISPLAYCONFIG_SCANLINE_ORDERING : uint
    type DISPLAYCONFIG_ROTATION (line 223) | private enum DISPLAYCONFIG_ROTATION : uint
    type DISPLAYCONFIG_SCALING (line 232) | private enum DISPLAYCONFIG_SCALING : uint
    type DISPLAYCONFIG_PIXELFORMAT (line 243) | public enum DISPLAYCONFIG_PIXELFORMAT : uint
    type DISPLAYCONFIG_MODE_INFO_TYPE (line 253) | public enum DISPLAYCONFIG_MODE_INFO_TYPE : uint
    type DISPLAYCONFIG_DEVICE_INFO_TYPE (line 260) | public enum DISPLAYCONFIG_DEVICE_INFO_TYPE : uint
    type LUID (line 275) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_PATH_SOURCE_INFO (line 282) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_PATH_TARGET_INFO (line 291) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_RATIONAL (line 306) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_PATH_INFO (line 313) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_2DREGION (line 321) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_VIDEO_SIGNAL_INFO (line 328) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_TARGET_MODE (line 340) | [StructLayout( LayoutKind.Sequential )]
    type POINTL (line 346) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_SOURCE_MODE (line 353) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_MODE_INFO_UNION (line 362) | [StructLayout( LayoutKind.Explicit )]
    type DISPLAYCONFIG_MODE_INFO (line 370) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS (line 379) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_DEVICE_INFO_HEADER (line 385) | [StructLayout( LayoutKind.Sequential )]
    type DISPLAYCONFIG_TARGET_DEVICE_NAME (line 394) | [StructLayout( LayoutKind.Sequential, CharSet = CharSet.Unicode )]
    method GetDisplayConfigBufferSizes (line 415) | [DllImport( "user32.dll" )]
    method QueryDisplayConfig (line 419) | [DllImport( "user32.dll" )]
    method DisplayConfigGetDeviceInfo (line 427) | [DllImport( "user32.dll" )]
  class ProcessTools (line 433) | public static class ProcessTools
    method GetCommandLineArgs (line 435) | public static string GetCommandLineArgs( this Process process )

FILE: Helpers/TaskSchedulerHelper.cs
  class TaskSchedulerHelper (line 17) | public static class TaskSchedulerHelper
    method CreateAutoRunTask (line 19) | public static void CreateAutoRunTask( string taskName, string fullAppP...
    method DeleteTaskByName (line 42) | public static void DeleteTaskByName( string taskName, string taskFolde...
    method IsTaskExistsByName (line 53) | public static bool IsTaskExistsByName( string taskName, string taskFol...
    method GetTaskPath (line 60) | private static string GetTaskPath( string taskName, string taskFolder )
    method OpenWinTaskScheduler (line 65) | public static void OpenWinTaskScheduler()

FILE: Helpers/User32.cs
  class User32 (line 7) | public static class User32
    method FindWindow (line 15) | [DllImport( "user32.dll", SetLastError = true )]
    method GetWindowLong (line 18) | [DllImport( "user32.dll", CharSet = CharSet.Auto )]
    method GetWindow (line 21) | [DllImport( "user32.dll", SetLastError = true )]
    method IsWindowEnabled (line 24) | [DllImport( "user32.dll" )]
    method PostMessage (line 28) | [DllImport( "user32.dll", CharSet = CharSet.Auto )]
    method SendMessage (line 31) | [DllImport( "user32.dll", CharSet = CharSet.Auto )]
    method SetWindowLongPtr (line 34) | public static IntPtr SetWindowLongPtr( HandleRef hWnd, int nIndex, int...
    method SetWindowLong32 (line 42) | [DllImport( "user32.dll", EntryPoint = "SetWindowLong" )]
    method SetWindowLongPtr64 (line 45) | [DllImport( "user32.dll", EntryPoint = "SetWindowLongPtr" )]
    method ShowWindow (line 48) | [DllImport( "user32.dll", CharSet = CharSet.Auto )]
    method GetWindowText (line 51) | [DllImport( "user32.dll" )]
    method GetClassName (line 54) | [DllImport( "user32.dll", SetLastError = true, CharSet = CharSet.Auto )]
    method IsWindowVisible (line 57) | [DllImport( "user32.dll" )]
    method IsWindow (line 60) | [DllImport( "user32.dll" )]
    method IsIconic (line 64) | [DllImport( "user32.dll" )]
    method EnumWindows (line 67) | [DllImport( "user32.dll" )]
    method EnumChildWindows (line 70) | [DllImport( "user32.dll" )]
    method GetForegroundWindow (line 74) | [DllImport( "user32.dll" )]
    method SetForegroundWindow (line 77) | [DllImport( "user32.dll" )]
    method BringWindowToTop (line 81) | [DllImport( "user32.dll", SetLastError = true )]
    method SetParent (line 84) | [DllImport( "user32.dll", SetLastError = true )]
    method GetWindowThreadProcessId (line 87) | [DllImport( "user32.dll" )]
    method SetWindowsHookEx (line 90) | [DllImport( "user32.dll", CharSet = CharSet.Auto, SetLastError = true )]
    method UnhookWindowsHookEx (line 93) | [DllImport( "user32.dll", CharSet = CharSet.Auto, SetLastError = true )]
    method CallNextHookEx (line 97) | [DllImport( "user32.dll", CharSet = CharSet.Auto, SetLastError = true )]
    method GetAsyncKeyState (line 100) | [DllImport( "user32.dll" )]
    method GetKeyState (line 103) | [DllImport( "user32.dll" )]
    method SendInput (line 106) | [DllImport( "user32.dll", SetLastError = true )]
    method RegisterWindowMessage (line 109) | [DllImport( "user32.dll", CharSet = CharSet.Unicode )]
    method GetWindowRect (line 112) | [DllImport( "user32.dll" )]
    method SetWindowPos (line 115) | [DllImport( "user32.dll" )]
    method GetWindowPlacement (line 119) | [DllImport( "user32.dll", SetLastError = true )]
    method SHGetStockIconInfo (line 123) | [DllImport( "Shell32.dll", SetLastError = false )]
    method SwitchToThisWindow (line 126) | [DllImport( "user32.dll", SetLastError = true )]

FILE: Helpers/UserMessage.cs
  class UserMessage (line 13) | public static class UserMessage
    class Meta (line 41) | public static class Meta

FILE: Helpers/VisualEffects.cs
  class VisualEffects (line 6) | public static class VisualEffects
    type AccentState (line 8) | public enum AccentState
    type WindowCompositionAttribute (line 18) | public enum WindowCompositionAttribute
    method SetWindowCompositionAttribute (line 25) | [DllImport( "user32.dll" )]
    type AccentPolicy (line 28) | [StructLayout( LayoutKind.Sequential )]
    type WindowCompositionAttributeData (line 37) | [StructLayout( LayoutKind.Sequential )]

FILE: Helpers/Win32.cs
  type WINDOWPLACEMENT (line 9) | [Serializable]
  type ShowState (line 60) | public enum ShowState : int
  type RECT (line 78) | [StructLayout( LayoutKind.Sequential )]
    method RECT (line 86) | public RECT( int left, int top, int right, int bottom )
  type SIZE (line 95) | [StructLayout( LayoutKind.Sequential )]
  type POINT (line 102) | [StructLayout( LayoutKind.Sequential )]
    method POINT (line 108) | public POINT( int x, int y )
  type WindowStyles (line 115) | [Flags]
  type GetWindowLongFields (line 121) | public enum GetWindowLongFields
  type INPUT (line 132) | [StructLayout( LayoutKind.Sequential )]
  type InputType (line 139) | public enum InputType : uint
  type MOUSEKEYBDHARDWAREINPUT (line 146) | [StructLayout( LayoutKind.Explicit )]
  type HARDWAREINPUT (line 154) | [StructLayout( LayoutKind.Sequential )]
  type KEYBDINPUT (line 162) | [StructLayout( LayoutKind.Sequential )]
  type KEYEVENTF (line 172) | [Flags]
  type MOUSEINPUT (line 181) | [StructLayout( LayoutKind.Sequential )]
  type SHGSI (line 192) | [Flags]
  type SHSTOCKICONID (line 199) | public enum SHSTOCKICONID : uint
  type SHSTOCKICONINFO (line 204) | [StructLayout( LayoutKind.Sequential, CharSet = CharSet.Unicode )]
  type GetWindowType (line 216) | public enum GetWindowType : uint
  type SpecialWindowHandles (line 277) | public enum SpecialWindowHandles
  type SetWindowPosFlags (line 302) | [Flags]

FILE: Helpers/WinForms.cs
  class WinForms (line 16) | public static class WinForms
    method SetComboBoxDataSource (line 21) | public static void SetComboBoxDataSource( ComboBox cbb,

FILE: Helpers/WinMsg.cs
  class WinMsg (line 13) | public static class WinMsg

FILE: Helpers/WinRegistry.cs
  class WinRegistry (line 21) | public static class WinRegistry
    method GetWallpaperByDesktopGuid (line 28) | public static Wallpaper GetWallpaperByDesktopGuid( Guid guid, int widt...
    method GetWallpaperByPath (line 46) | public static Wallpaper GetWallpaperByPath( string path, int width, in...
    method GetDefaultWallpaperPath (line 53) | public static string? GetDefaultWallpaperPath()
    method GetWallPaperPathByGuid (line 58) | public static string? GetWallPaperPathByGuid( Guid guid )
    method GetBackColor (line 68) | public static Color GetBackColor()
    method AppThemeIsLight (line 75) | public static bool AppThemeIsLight()
  class RegValueMonitor (line 81) | public class RegValueMonitor : IDisposable
    method RegValueMonitor (line 85) | public RegValueMonitor( string hive, string keyPath, string valueName )
    method HandleEvent (line 105) | private static void HandleEvent( object sender, EventArrivedEventArgs e )
    method Dispose (line 114) | public void Dispose()
    class RegValueChangedEventArgs (line 121) | public class RegValueChangedEventArgs : EventArgs
      method RegValueChangedEventArgs (line 125) | public RegValueChangedEventArgs( string value )

FILE: Ipc/Commons/Config.cs
  class Config (line 13) | public static class Config

FILE: Ipc/Commons/HostInfo.cs
  class HostInfo (line 17) | public class HostInfo
  class HostInfoHelper (line 26) | public static class HostInfoHelper
    method GetHostInfo (line 28) | public static HostInfo GetHostInfo()

FILE: Ipc/Commons/PipeMessage.cs
  class PipeMessage (line 16) | public class PipeMessage
  type COPYDATASTRUCT (line 24) | [StructLayout( LayoutKind.Sequential )]
  type VirtualDesktopSwitchInfo (line 32) | [StructLayout( LayoutKind.Sequential )]

FILE: Ipc/Commons/PipeMessageType.cs
  type PipeMessageType (line 13) | public enum PipeMessageType

FILE: Ipc/IpcClient/IpcPipeClient.cs
  class IpcPipeClient (line 21) | public static class IpcPipeClient
    method CheckIn (line 26) | private static bool CheckIn( PipeMessage pipeMessage )
    method CheckInAndWaitResponse (line 49) | private static bool CheckInAndWaitResponse<T>( PipeMessage pipeMessage...
    method AskAlive (line 76) | private static bool AskAlive( string name, int handle, int pId )
    method CheckAlive (line 100) | public static async void CheckAlive( string name, int handle, int pId,...
    method PluginCheckIn (line 110) | public static void PluginCheckIn( PipeMessage pipeMessage, Action erro...
    method PluginCheckIn (line 121) | public static void PluginCheckIn<T>( PipeMessage pipeMessage, Action e...
    method NotifyHostRestart (line 132) | public static void NotifyHostRestart()

FILE: Ipc/IpcServer/IpcPipeServer.cs
  class IpcPipeServer (line 23) | public static class IpcPipeServer
    method Start (line 30) | public static void Start()
    method AsClient (line 137) | public static void AsClient()
    method SimpleShutdown (line 154) | public static void SimpleShutdown()

FILE: LinqExpressionBuilder/Keywords.cs
  class Keywords (line 14) | public static class Keywords

FILE: LinqExpressionBuilder/LinqExpressionBuilder.cs
  class JsonParser (line 21) | public class JsonParser
    method ParseTree (line 34) | private Expression? ParseTree( JsonElement condition, ParameterExpress...
    method SimpleCondition (line 71) | private Expression? SimpleCondition( JsonElement rule, ParameterExpres...
    method BuildPredicate (line 139) | private Expression<Func<T, bool>> BuildPredicate<T>( JsonDocument doc )
    method ExpressionFromJsonDoc (line 151) | public Func<T, bool> ExpressionFromJsonDoc<T>( JsonDocument doc )

FILE: Logger/LogMessage.cs
  class LogMessage (line 14) | public class LogMessage
    method CreateMessage (line 19) | public static LogMessage CreateMessage( string type, string msg )

FILE: Logger/Logger.cs
  class Logger (line 22) | public static class Logger
    method Verbose (line 27) | public static void Verbose( string str )
    method Debug (line 33) | public static void Debug( string str )
    method Event (line 39) | public static void Event( string str )
    method Info (line 45) | public static void Info( string str )
    method Warning (line 51) | public static void Warning( string str )
    method Error (line 57) | public static void Error( string str, NotifyObject? notify = null )
    method LogToGui (line 70) | private static async void LogToGui( string type, string str )
    method Notify (line 79) | public static void Notify( NotifyObject no )
    method ToastWindowFilter (line 111) | private static bool ToastWindowFilter( IntPtr hWnd, int lParam )
    type GetWindowLongFields (line 132) | private enum GetWindowLongFields
    class User32 (line 143) | private static class User32
      method GetWindowLong (line 149) | [DllImport( "user32.dll", CharSet = CharSet.Auto )]
      method SetWindowLongPtr (line 152) | public static IntPtr SetWindowLongPtr( HandleRef hWnd, int nIndex, i...
      method SetWindowLong32 (line 160) | [DllImport( "user32.dll", EntryPoint = "SetWindowLong" )]
      method SetWindowLongPtr64 (line 163) | [DllImport( "user32.dll", EntryPoint = "SetWindowLongPtr" )]
      method GetWindowText (line 166) | [DllImport( "user32.dll" )]
      method GetClassName (line 169) | [DllImport( "user32.dll", SetLastError = true, CharSet = CharSet.Aut...
      method EnumWindows (line 172) | [DllImport( "user32.dll" )]
  class NotifyObject (line 177) | public class NotifyObject

FILE: Logger/Manager.cs
  class LogManager (line 21) | public static class LogManager
    method InitLogger (line 41) | public static void InitLogger( string folder )
    method GorgeousDividingLine (line 64) | public static void GorgeousDividingLine()
    method SetLogLevel (line 76) | public static void SetLogLevel( string level )

FILE: Plugin/Commons/PluginInfo.cs
  class PluginInfo (line 16) | public class PluginInfo
  class Policy (line 35) | public class Policy
  type PolicyTrigger (line 42) | public enum PolicyTrigger
  type PluginType (line 47) | public enum PluginType
  class Requirements (line 54) | public class Requirements
  class WinVer (line 60) | public class WinVer
  class Ver (line 66) | public class Ver
  type AutoStartTiming (line 72) | public enum AutoStartTiming

FILE: Plugin/Commons/PluginManager.cs
  class PluginManager (line 18) | public static class PluginManager
    method GetPluginInfo (line 23) | private static PluginInfo GetPluginInfo()
    method GetAppPath (line 29) | public static string GetAppPath()
    method GetAppFolder (line 34) | public static string GetAppFolder()
    method LoadFromJson (line 39) | public static T? LoadFromJson<T>( string infoFile )
    method CheckRequirements (line 48) | public static bool CheckRequirements( Requirements? req )
    method SavePluginInfo (line 62) | public static void SavePluginInfo( PluginInfo pi )

FILE: Plugin/Commons/WinApi.cs
  class WinApi (line 16) | public static class WinApi
    method PostMessage (line 39) | [DllImport( "user32.dll", CharSet = CharSet.Auto )]

FILE: Plugin/PluginHost/PluginConst.cs
  class PluginConst (line 13) | public static class PluginConst

FILE: Plugin/PluginHost/PluginHost.cs
  class PluginHost (line 22) | public static class PluginHost
    method RegisterPlugins (line 37) | public static void RegisterPlugins( string pluginsPath )
    method AutoStartAfterMainWindowLoaded (line 82) | public static void AutoStartAfterMainWindowLoaded()
    method StartExe (line 90) | private static void StartExe( string exe )
    method PluginSettings (line 95) | public static void PluginSettings( PluginInfo pluginInfo )
    method StartPlugin (line 100) | public static void StartPlugin( PluginInfo pluginInfo )
    method ClosePlugin (line 107) | public static void ClosePlugin( PluginInfo pluginInfo )
    method RestartPlugin (line 116) | public static void RestartPlugin( PluginInfo pluginInfo )
    method GetHostVersion (line 130) | private static Version GetHostVersion()

FILE: Plugins.sln/Cube3D/App.xaml.cs
  class App (line 21) | public partial class App : Application
    method OnStartup (line 23) | protected override void OnStartup( StartupEventArgs e )
    method Restart (line 40) | public static void Restart()

FILE: Plugins.sln/Cube3D/Config/Const.cs
  class Const (line 13) | public static class Const

FILE: Plugins.sln/Cube3D/Config/Settings.cs
  class Settings (line 16) | public class Settings
  type TransitionType (line 60) | [Flags]

FILE: Plugins.sln/Cube3D/Config/SettingsManager.cs
  class SettingsManager (line 17) | public class SettingsManager
    method GetSettings (line 22) | private static Settings GetSettings()
    method SaveJson (line 28) | public static void SaveJson( string file = null )

FILE: Plugins.sln/Cube3D/D3DImages/D3DImages.cs
  class D3DImages (line 18) | public static class D3DImages

FILE: Plugins.sln/Cube3D/Effects/Cube.cs
  class Cube (line 21) | public class Cube : Effect
    method Cube (line 74) | public Cube()
    method Build (line 84) | public override void Build( Model3DGroup model3DGroup )
    method AnimationInDirection (line 190) | public override void AnimationInDirection( KeyCode dir, Model3DGroup m...

FILE: Plugins.sln/Cube3D/Effects/Effect.cs
  class Effect (line 19) | public abstract class Effect
    method AddTriangleIndices (line 28) | protected static void AddTriangleIndices( MeshGeometry3D meshGeometry3D )
    method AddTextureCoordinatesFront (line 38) | protected static void AddTextureCoordinatesFront( MeshGeometry3D meshG...
    method Build (line 46) | public abstract void Build( Model3DGroup model3DGroup );
    method AnimationInDirection (line 48) | public abstract void AnimationInDirection( KeyCode dir, Model3DGroup m...
    method AddAnimationCompletedListener (line 50) | public void AddAnimationCompletedListener( EventHandler handler )
  type EffectType (line 56) | public enum EffectType
  type KeyCode (line 66) | public enum KeyCode
  type EaseType (line 74) | public enum EaseType
  type EaseMode (line 88) | public enum EaseMode
  class EaseFactory (line 95) | public static class EaseFactory
    method GetEaseByName (line 97) | public static IEasingFunction GetEaseByName( EaseType et, EasingMode em )
    method GetEaseModeByName (line 117) | public static EasingMode GetEaseModeByName( EaseMode em )

FILE: Plugins.sln/Cube3D/Effects/Fade.cs
  class Fade (line 20) | public class Fade : Effect
    method Fade (line 40) | public Fade()
    method Build (line 50) | public override void Build( Model3DGroup model3DGroup )
    method AnimationInDirection (line 91) | public override void AnimationInDirection( KeyCode dir, Model3DGroup m...

FILE: Plugins.sln/Cube3D/Effects/Flip.cs
  class Flip (line 21) | public class Flip : Effect
    method Flip (line 60) | public Flip()
    method Build (line 70) | public override void Build( Model3DGroup model3DGroup )
    method AnimationInDirection (line 117) | public override void AnimationInDirection( KeyCode dir, Model3DGroup m...
    method FlipInDirection (line 157) | private void FlipInDirection( string dir )

FILE: Plugins.sln/Cube3D/Effects/InsideCube.cs
  class InsideCube (line 21) | public class InsideCube : Effect
    method InsideCube (line 78) | public InsideCube()
    method Build (line 88) | public override void Build( Model3DGroup model3DGroup )
    method AnimationInDirection (line 188) | public override void AnimationInDirection( KeyCode dir, Model3DGroup m...

FILE: Plugins.sln/Cube3D/Effects/Reveal.cs
  class Reveal (line 21) | public class Reveal : Effect
    method Reveal (line 47) | public Reveal()
    method Build (line 56) | public override void Build( Model3DGroup model3DGroup )
    method AnimationInDirection (line 97) | public override void AnimationInDirection( KeyCode dir, Model3DGroup m...

FILE: Plugins.sln/Cube3D/Effects/Slide.cs
  class Slide (line 21) | public class Slide : Effect
    method Slide (line 53) | public Slide()
    method Build (line 62) | public override void Build( Model3DGroup model3DGroup )
    method AnimationInDirection (line 154) | public override void AnimationInDirection( KeyCode dir, Model3DGroup m...

FILE: Plugins.sln/Cube3D/FrameToD3DImage.cs
  class FrameToD3DImage (line 22) | public class FrameToD3DImage : FrameProcessor
    method FrameToD3DImage (line 28) | private FrameToD3DImage()
    method FrameToD3DImage (line 32) | public FrameToD3DImage( Dictionary<string, D3DImageInfo> d3dImageDict )
    method SetAction (line 37) | public void SetAction( Action action )
    method Proceed (line 42) | public override void Proceed( IntPtr pointer, ulong frameNumber )
    method Paint (line 59) | private void Paint( D3DImageInfo dii, IntPtr pointer )
    method IsSoftRender (line 76) | private static bool IsSoftRender()
  class D3DImageInfo (line 83) | public class D3DImageInfo

FILE: Plugins.sln/Cube3D/Helpers/User32.cs
  class User32 (line 7) | public static class User32
    type MonitorDpiType (line 11) | public enum MonitorDpiType
    type SetWindowPosFlags (line 18) | [Flags]
    type SpecialWindowHandles (line 108) | public enum SpecialWindowHandles
    method SetWindowDisplayAffinity (line 136) | [DllImport( "user32.dll" )]
    method GetWindowLong (line 139) | [DllImport( "user32.dll", CharSet = CharSet.Auto )]
    method SetWindowLongPtr (line 142) | public static IntPtr SetWindowLongPtr( HandleRef hWnd, int nIndex, int...
    method SetWindowLong32 (line 150) | [DllImport( "user32.dll", EntryPoint = "SetWindowLong" )]
    method SetWindowLongPtr64 (line 153) | [DllImport( "user32.dll", EntryPoint = "SetWindowLongPtr" )]
    method SetWindowPos (line 156) | [DllImport( "user32.dll", SetLastError = true )]
    method IsWindowVisible (line 159) | [DllImport( "user32.dll" )]
    method EnumWindows (line 162) | [DllImport( "user32.dll" )]
    method GetWindowText (line 165) | [DllImport( "user32.dll" )]
    method GetDpiForMonitor (line 168) | [DllImport( "shcore.dll" )]

FILE: Plugins.sln/Cube3D/Helpers/Win32.cs
  type GetWindowLongFields (line 6) | public enum GetWindowLongFields
  type INPUT (line 17) | [StructLayout( LayoutKind.Sequential )]
  type MOUSEKEYBDHARDWAREINPUT (line 24) | [StructLayout( LayoutKind.Explicit )]
  type HARDWAREINPUT (line 32) | [StructLayout( LayoutKind.Sequential )]
  type KEYBDINPUT (line 40) | [StructLayout( LayoutKind.Sequential )]
  type MOUSEINPUT (line 50) | [StructLayout( LayoutKind.Sequential )]

FILE: Plugins.sln/Cube3D/Helpers/WinMsg.cs
  class WinMsg (line 3) | public static class WinMsg

FILE: Plugins.sln/Cube3D/Helpers/WpfConverters.cs
  class TransitionTypeConverter (line 18) | public class TransitionTypeConverter : IValueConverter
    method Convert (line 20) | public object Convert( object value, Type targetType, object parameter...
    method ConvertBack (line 29) | public object ConvertBack( object value, Type targetType, object param...

FILE: Plugins.sln/Cube3D/MainWindow.2D.cs
  class MainWindow (line 18) | public partial class MainWindow
    method NotificationGridLayout (line 20) | private void NotificationGridLayout( int vdCount )

FILE: Plugins.sln/Cube3D/MainWindow.3D.cs
  class MainWindow (line 20) | public partial class MainWindow
    method CameraPosition (line 24) | private void CameraPosition( MonitorInfo mi )
    method Build3D (line 41) | public void Build3D()

FILE: Plugins.sln/Cube3D/MainWindow.animation.cs
  class MainWindow (line 22) | public partial class MainWindow
    method AnimationCompleted (line 31) | private void AnimationCompleted( object sender, EventArgs e )
    method NotificationGridAnimation (line 45) | private void NotificationGridAnimation( int fromIndex, int toIndex, in...
    method CameraAnimation (line 87) | private void CameraAnimation()

FILE: Plugins.sln/Cube3D/MainWindow.frame.cs
  class MainWindow (line 18) | public partial class MainWindow
    method StartPrimaryMonitorCapture (line 23) | private Task StartPrimaryMonitorCapture()
    method StartMonitorCapture (line 31) | private async Task StartMonitorCapture( MonitorInfo mi )

FILE: Plugins.sln/Cube3D/MainWindow.hotkeys.cs
  class MainWindow (line 30) | public partial class MainWindow
    method FakeHide (line 36) | private void FakeHide( bool stopCapture = false )
    method StopCapture (line 44) | private void StopCapture()
    method WindowFilter (line 49) | private bool WindowFilter( IntPtr hWnd, int lParam )
    method RealShow (line 64) | private void RealShow( bool forceTop = false )
    method WndProc (line 91) | private IntPtr WndProc( IntPtr hWnd, int msg, IntPtr wParam, IntPtr lP...
    method PerformAnimationPrimary (line 164) | private void PerformAnimationPrimary( VirtualDesktopSwitchInfo vdSwitc...
    method PerformAnimationOthers (line 200) | private void PerformAnimationOthers( VirtualDesktopSwitchInfo vdSwitch...

FILE: Plugins.sln/Cube3D/MainWindow.xaml.cs
  class MainWindow (line 32) | public partial class MainWindow : Window
    method MainWindow (line 39) | public MainWindow()
    method MainWindow (line 57) | private MainWindow( MonitorInfo mi )
    method GetDpiForMonitor (line 75) | private static (double ScaleX, double ScaleY) GetDpiForMonitor( IntPtr...
    method OnSourceInitialized (line 81) | protected override void OnSourceInitialized( EventArgs e )
    method Register (line 89) | private void Register()
    method Bootstrap (line 136) | private void Bootstrap()
    method FixStyle (line 147) | private void FixStyle()
    method Window_Loaded (line 161) | private async void Window_Loaded( object sender, RoutedEventArgs e )
    method SetTransitionType (line 179) | public void SetTransitionType()
    method CreateOtherScreens (line 199) | private void CreateOtherScreens()
    method ClearOtherScreens (line 219) | private static void ClearOtherScreens()

FILE: Plugins.sln/Cube3D/SettingsWindow.xaml.cs
  class SettingsWindow (line 20) | public partial class SettingsWindow : Window
    method SettingsWindow (line 25) | public SettingsWindow()
    method Window_Loaded (line 43) | private void Window_Loaded( object sender, RoutedEventArgs e )
    method ComboBoxEffects_SelectionChanged (line 78) | private void ComboBoxEffects_SelectionChanged( object sender, Selectio...
    method ComboBoxEase_OnSelectionChanged (line 85) | private void ComboBoxEase_OnSelectionChanged( object sender, Selection...
    method ComboBoxEaseMode_OnSelectionChanged (line 92) | private void ComboBoxEaseMode_OnSelectionChanged( object sender, Selec...
    method ComboBoxTransitionType_OnSelectionChanged (line 99) | private void ComboBoxTransitionType_OnSelectionChanged( object sender,...
    method SetMainWindow (line 109) | public void SetMainWindow( MainWindow mw )
    method ApplyEffect_OnClick (line 114) | private void ApplyEffect_OnClick( object sender, RoutedEventArgs e )
    method Close_OnClick (line 119) | private void Close_OnClick( object sender, RoutedEventArgs e )
    method CbNgOnAllScreens_OnChecked (line 125) | private void CbNgOnAllScreens_OnChecked( object sender, RoutedEventArg...
    method CbNgOnAllScreens_OnUnchecked (line 133) | private void CbNgOnAllScreens_OnUnchecked( object sender, RoutedEventA...

FILE: Plugins.sln/ScreenCapture/CaptureHelper.cs
  class CaptureHelper (line 37) | public static class CaptureHelper
    method SetWindow (line 41) | public static void SetWindow( this GraphicsCapturePicker picker, IntPt...
    method CreateItemForWindow (line 47) | public static GraphicsCaptureItem CreateItemForWindow( IntPtr hwnd )
    method CreateItemForMonitor (line 67) | public static GraphicsCaptureItem CreateItemForMonitor( IntPtr hmon )
    type IInitializeWithWindow (line 88) | [ComImport]
      method Initialize (line 94) | void Initialize(
    type IGraphicsCaptureItemInterop (line 98) | [ComImport]
      method CreateForWindow (line 104) | IntPtr CreateForWindow(
      method CreateForMonitor (line 108) | IntPtr CreateForMonitor(

FILE: Plugins.sln/ScreenCapture/D3D9ShareCapture.cs
  class D3D9ShareCapture (line 42) | public class D3D9ShareCapture : IDisposable
    method D3D9ShareCapture (line 61) | private D3D9ShareCapture()
    method Dispose (line 77) | public void Dispose()
    method Create (line 105) | public static D3D9ShareCapture Create( MonitorInfo mi, FrameProcessor ...
    method UpdateCapturePrimaryMonitor (line 121) | public void UpdateCapturePrimaryMonitor()
    method StartCaptureSession (line 133) | public void StartCaptureSession()
    method StopCaptureSession (line 162) | public void StopCaptureSession()
    method OnCaptureFrameArrived (line 167) | private void OnCaptureFrameArrived( Direct3D11CaptureFramePool sender,...
    method GetPresentParameters (line 249) | private static D3D9.PresentParameters GetPresentParameters()
    method GetSharedHandle (line 262) | private static IntPtr GetSharedHandle( D3D11.Texture2D texture )
    method TranslateFormat (line 268) | private static D3D9.Format TranslateFormat( Format format )
  class NativeMethods (line 280) | public static class NativeMethods
    method GetDesktopWindow (line 282) | [DllImport( "user32.dll", SetLastError = false )]

FILE: Plugins.sln/ScreenCapture/Direct3D11Helper.cs
  class Direct3D11Helper (line 41) | public static class Direct3D11Helper
    method CreateDirect3D11DeviceFromDXGIDevice (line 49) | [DllImport(
    method CreateDirect3D11SurfaceFromDXGISurface (line 59) | [DllImport(
    method CreateDevice (line 69) | public static IDirect3DDevice CreateDevice()
    method CreateDevice (line 74) | public static IDirect3DDevice CreateDevice( bool useWARP )
    method CreateDirect3DDeviceFromSharpDXDevice (line 83) | public static IDirect3DDevice CreateDirect3DDeviceFromSharpDXDevice( D...
    method CreateDirect3DSurfaceFromSharpDXTexture (line 107) | public static IDirect3DSurface CreateDirect3DSurfaceFromSharpDXTexture...
    method CreateSharpDXDevice (line 131) | public static Device CreateSharpDXDevice( IDirect3DDevice device )
    method CreateSharpDXTexture2D (line 143) | public static Texture2D CreateSharpDXTexture2D( IDirect3DSurface surfa...
    type IDirect3DDxgiInterfaceAccess (line 155) | [ComImport]
      method GetInterface (line 161) | IntPtr GetInterface( [In] ref Guid iid );

FILE: Plugins.sln/ScreenCapture/FrameProcessor.cs
  class FrameProcessor (line 16) | public abstract class FrameProcessor
    method Proceed (line 18) | public abstract void Proceed( IntPtr pointer, ulong frameNumber );

FILE: Plugins.sln/ScreenCapture/MonitorEnumerationHelper.cs
  class MonitorInfo (line 33) | public class MonitorInfo
  class MonitorEnumerationHelper (line 43) | public static class MonitorEnumerationHelper
    method EnumDisplayMonitors (line 47) | [DllImport( "user32.dll" )]
    method GetMonitorInfo (line 50) | [DllImport( "user32.dll", CharSet = CharSet.Auto )]
    method GetMonitors (line 53) | public static IEnumerable<MonitorInfo> GetMonitors()
    type RECT (line 85) | [StructLayout( LayoutKind.Sequential )]
    type MonitorInfoEx (line 94) | [StructLayout( LayoutKind.Sequential, CharSet = CharSet.Auto )]

FILE: Plugins.sln/ScreenCapture/WindowEnumerationHelper.cs
  class WindowEnumerationHelper (line 30) | internal static class WindowEnumerationHelper
    type GWL (line 32) | public enum GWL
    method GetShellWindow (line 43) | [DllImport( "user32.dll" )]
    method IsWindowVisible (line 46) | [DllImport( "user32.dll" )]
    method GetAncestor (line 50) | [DllImport( "user32.dll", ExactSpelling = true )]
    method GetWindowLongPtr32 (line 53) | [DllImport( "user32.dll", EntryPoint = "GetWindowLong" )]
    method GetWindowLongPtr64 (line 56) | [DllImport( "user32.dll", EntryPoint = "GetWindowLongPtr" )]
    method GetWindowLongPtr (line 62) | private static IntPtr GetWindowLongPtr( IntPtr hWnd, int nIndex )
    method DwmGetWindowAttribute (line 70) | [DllImport( "dwmapi.dll" )]
    method IsWindowValidForCapture (line 73) | public static bool IsWindowValidForCapture( IntPtr hwnd )
    type GetAncestorFlags (line 111) | private enum GetAncestorFlags
    type WindowStyles (line 123) | [Flags]
    type DWMWINDOWATTRIBUTE (line 150) | private enum DWMWINDOWATTRIBUTE : uint

FILE: Plugins.sln/Updater/Config/Const.cs
  class Const (line 13) | public static class Const

FILE: Plugins.sln/Updater/HttpClientProgress.cs
  class HttpClientProgressExtensions (line 5) | public static class HttpClientProgressExtensions
    method DownloadDataAsync (line 7) | public static async Task DownloadDataAsync( this HttpClient client,
    method CopyToAsync (line 34) | private static async Task CopyToAsync( this Stream source,

FILE: Plugins.sln/Updater/MainForm.Designer.cs
  class MainForm (line 3) | partial class MainForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: Plugins.sln/Updater/MainForm.cs
  class MainForm (line 21) | public partial class MainForm : Form
    method MainForm (line 27) | public MainForm()
    method OnLoad (line 32) | protected override void OnLoad( EventArgs e )
    method MainForm_Load (line 40) | private void MainForm_Load( object sender, EventArgs e )
    method CheckUpdate (line 64) | private async void CheckUpdate( HostInfo hostInfo )

FILE: Plugins.sln/Updater/Program.cs
  class Program (line 15) | internal static class Program
    method Main (line 20) | [STAThread]

FILE: Resources/Images.Designer.cs
  class Images (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Images (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: UiAutomation/UIA.cs
  class Uia (line 17) | public static class Uia
    method CloseButtonInvokeByWindowHandle (line 19) | public static void CloseButtonInvokeByWindowHandle( IntPtr hWnd )

FILE: VirtualDesktop/VirtualDesktop10/COM.cs
  class Guids (line 18) | internal static class Guids
  type Size (line 27) | [StructLayout( LayoutKind.Sequential )]
  type Rect (line 34) | [StructLayout( LayoutKind.Sequential )]
  type APPLICATION_VIEW_CLOAK_TYPE (line 43) | public enum APPLICATION_VIEW_CLOAK_TYPE : int
  type APPLICATION_VIEW_COMPATIBILITY_POLICY (line 50) | public enum APPLICATION_VIEW_COMPATIBILITY_POLICY : int
  type IApplicationView (line 59) | [ComImport]
    method GetIIdsSlot (line 64) | void GetIIdsSlot();
    method GetRuntimeClassNameSlot (line 65) | void GetRuntimeClassNameSlot();
    method GetTrustLevelSlot (line 66) | void GetTrustLevelSlot();
    method SetFocus (line 67) | int  SetFocus();
    method SwitchTo (line 68) | int  SwitchTo();
    method TryInvokeBack (line 69) | int  TryInvokeBack( IntPtr /* IAsyncCallback* */ callback );
    method GetThumbnailWindow (line 70) | int  GetThumbnailWindow( out IntPtr hWnd );
    method GetMonitor (line 71) | int  GetMonitor( out         IntPtr /* IImmersiveMonitor */ immersiveM...
    method GetVisibility (line 72) | int  GetVisibility( out      int visibility );
    method SetCloak (line 73) | int  SetCloak( APPLICATION_VIEW_CLOAK_TYPE cloakType, int unknown );
    method GetPosition (line 74) | int  GetPosition( ref Guid guid /* GUID for IApplicationViewPosition *...
    method SetPosition (line 75) | int  SetPosition( ref IntPtr /* IApplicationViewPosition* */ position );
    method InsertAfterWindow (line 76) | int  InsertAfterWindow( IntPtr hWnd );
    method GetExtendedFramePosition (line 77) | int  GetExtendedFramePosition( out                              Rect r...
    method GetAppUserModelId (line 78) | int  GetAppUserModelId( [MarshalAs( UnmanagedType.LPWStr )] out string...
    method SetAppUserModelId (line 79) | int  SetAppUserModelId( string id );
    method IsEqualByAppUserModelId (line 80) | int  IsEqualByAppUserModelId( string id, out int result );
    method GetViewState (line 81) | int  GetViewState( out uint state );
    method SetViewState (line 82) | int  SetViewState( uint state );
    method GetNeediness (line 83) | int  GetNeediness( out               int neediness );
    method GetLastActivationTimestamp (line 84) | int  GetLastActivationTimestamp( out ulong timestamp );
    method SetLastActivationTimestamp (line 85) | int  SetLastActivationTimestamp( ulong timestamp );
    method GetVirtualDesktopId (line 86) | int  GetVirtualDesktopId( out Guid guid );
    method SetVirtualDesktopId (line 87) | int  SetVirtualDesktopId( ref Guid guid );
    method GetShowInSwitchers (line 88) | int  GetShowInSwitchers( out  int flag );
    method SetShowInSwitchers (line 89) | int  SetShowInSwitchers( int flag );
    method GetScaleFactor (line 90) | int  GetScaleFactor( out             int factor );
    method CanReceiveInput (line 91) | int  CanReceiveInput( out            bool canReceiveInput );
    method GetCompatibilityPolicyType (line 92) | int  GetCompatibilityPolicyType( out APPLICATION_VIEW_COMPATIBILITY_PO...
    method SetCompatibilityPolicyType (line 93) | int  SetCompatibilityPolicyType( APPLICATION_VIEW_COMPATIBILITY_POLICY...
    method GetSizeConstraints (line 94) | int  GetSizeConstraints( IntPtr /* IImmersiveMonitor* */ monitor, out ...
    method GetSizeConstraintsForDpi (line 95) | int  GetSizeConstraintsForDpi( uint uint1, out Size size1, out Size si...
    method SetSizeConstraintsForDpi (line 96) | int  SetSizeConstraintsForDpi( ref uint uint1, ref Size size1, ref Siz...
    method OnMinSizePreferencesUpdated (line 97) | int  OnMinSizePreferencesUpdated( IntPtr hWnd );
    method ApplyOperation (line 98) | int  ApplyOperation( IntPtr /* IApplicationViewOperation* */ operation );
    method IsTray (line 99) | int  IsTray( out                  bool isTray );
    method IsInHighZOrderBand (line 100) | int  IsInHighZOrderBand( out      bool isInHighZOrderBand );
    method IsSplashScreenPresented (line 101) | int  IsSplashScreenPresented( out bool isSplashScreenPresented );
    method Flash (line 102) | int  Flash();
    method GetRootSwitchableOwner (line 103) | int  GetRootSwitchableOwner( out                              IApplica...
    method EnumerateOwnershipTree (line 104) | int  EnumerateOwnershipTree( out                              IObjectA...
    method GetEnterpriseId (line 105) | int  GetEnterpriseId( [MarshalAs( UnmanagedType.LPWStr )] out string  ...
    method IsMirrored (line 106) | int  IsMirrored( out                                          bool    ...
    method Unknown1 (line 107) | int  Unknown1( out                                            int     ...
    method Unknown2 (line 108) | int  Unknown2( out                                            int     ...
    method Unknown3 (line 109) | int  Unknown3( out                                            int     ...
    method Unknown4 (line 110) | int  Unknown4( out                                            int     ...
    method Unknown5 (line 111) | int  Unknown5( out                                            int     ...
    method Unknown6 (line 112) | int  Unknown6( int                                                    ...
    method Unknown7 (line 113) | int  Unknown7();
    method Unknown8 (line 114) | int  Unknown8( out int   unknown );
    method Unknown9 (line 115) | int  Unknown9( int       unknown );
    method Unknown10 (line 116) | int  Unknown10( int      unknownX, int unknownY );
    method Unknown11 (line 117) | int  Unknown11( int      unknown );
    method Unknown12 (line 118) | int  Unknown12( out Size size1 );
  type IApplicationViewCollection (line 121) | [ComImport]
    method GetViews (line 126) | int  GetViews( out         IObjectArray array );
    method GetViewsByZOrder (line 127) | int  GetViewsByZOrder( out IObjectArray array );
    method GetViewsByAppUserModelId (line 128) | int  GetViewsByAppUserModelId( string   id,          out IObjectArray ...
    method GetViewForHWnd (line 129) | int  GetViewForHWnd( IntPtr             hWnd,        out IApplicationV...
    method GetViewForApplication (line 130) | int  GetViewForApplication( object      application, out IApplicationV...
    method GetViewForAppUserModelId (line 131) | int  GetViewForAppUserModelId( string   id,          out IApplicationV...
    method GetViewInFocus (line 132) | int  GetViewInFocus( out IntPtr         view );
    method Unknown1 (line 133) | int  Unknown1( out       IntPtr         view );
    method RefreshCollection (line 134) | void RefreshCollection();
    method RegisterForApplicationViewChanges (line 135) | int  RegisterForApplicationViewChanges( object listener, out int cooki...
    method UnregisterForApplicationViewChanges (line 136) | int  UnregisterForApplicationViewChanges( int  cookie );
  type IVirtualDesktop (line 139) | [ComImport]
    method IsViewVisible (line 144) | bool IsViewVisible( IApplicationView view );
    method GetId (line 145) | Guid GetId();
  type IVirtualDesktopManagerInternal (line 148) | [ComImport]
    method GetCount (line 153) | int             GetCount();
    method MoveViewToDesktop (line 154) | void            MoveViewToDesktop( IApplicationView   view, IVirtualDe...
    method CanViewMoveDesktops (line 155) | bool            CanViewMoveDesktops( IApplicationView view );
    method GetCurrentDesktop (line 156) | IVirtualDesktop GetCurrentDesktop();
    method GetDesktops (line 157) | void            GetDesktops( out IObjectArray desktops );
    method GetAdjacentDesktop (line 159) | [PreserveSig]
    method SwitchDesktop (line 162) | void            SwitchDesktop( IVirtualDesktop desktop );
    method CreateDesktop (line 163) | IVirtualDesktop CreateDesktop();
    method RemoveDesktop (line 164) | void            RemoveDesktop( IVirtualDesktop desktop, IVirtualDeskto...
    method FindDesktop (line 165) | IVirtualDesktop FindDesktop( ref Guid          desktopId );
  type IVirtualDesktopManagerInternal2 (line 168) | [ComImport]
    method GetCount (line 173) | int             GetCount();
    method MoveViewToDesktop (line 174) | void            MoveViewToDesktop( IApplicationView   view, IVirtualDe...
    method CanViewMoveDesktops (line 175) | bool            CanViewMoveDesktops( IApplicationView view );
    method GetCurrentDesktop (line 176) | IVirtualDesktop GetCurrentDesktop();
    method GetDesktops (line 177) | void            GetDesktops( out IObjectArray desktops );
    method GetAdjacentDesktop (line 179) | [PreserveSig]
    method SwitchDesktop (line 182) | void            SwitchDesktop( IVirtualDesktop desktop );
    method CreateDesktop (line 183) | IVirtualDesktop CreateDesktop();
    method RemoveDesktop (line 184) | void            RemoveDesktop( IVirtualDesktop desktop, IVirtualDeskto...
    method FindDesktop (line 185) | IVirtualDesktop FindDesktop( ref Guid          desktopId );
    method Unknown1 (line 186) | void            Unknown1( IVirtualDesktop      desktop, out IntPtr unk...
    method SetName (line 188) | void SetName( IVirtualDesktop desktop, IntPtr newName );
    method SetName (line 190) | void SetName( IVirtualDesktop desktop, [MarshalAs( UnmanagedType.HStri...
  type IVirtualDesktopManager (line 194) | [ComImport]
    method IsWindowOnCurrentVirtualDesktop (line 199) | bool IsWindowOnCurrentVirtualDesktop( IntPtr topLevelWindow );
    method GetWindowDesktopId (line 200) | Guid GetWindowDesktopId( IntPtr              topLevelWindow );
    method MoveWindowToDesktop (line 201) | void MoveWindowToDesktop( IntPtr             topLevelWindow, ref Guid ...
  type IVirtualDesktopPinnedApps (line 204) | [ComImport]
    method IsAppIdPinned (line 209) | bool IsAppIdPinned( string          appId );
    method PinAppID (line 210) | void PinAppID( string               appId );
    method UnpinAppID (line 211) | void UnpinAppID( string             appId );
    method IsViewPinned (line 212) | bool IsViewPinned( IApplicationView applicationView );
    method PinView (line 213) | void PinView( IApplicationView      applicationView );
    method UnpinView (line 214) | void UnpinView( IApplicationView    applicationView );
  type IObjectArray (line 217) | [ComImport]
    method GetCount (line 222) | void GetCount( out int count );
    method GetAt (line 223) | void GetAt( int        index, ref Guid iid, [MarshalAs( UnmanagedType....
  type IServiceProvider10 (line 226) | [ComImport]
    method QueryService (line 231) | [return: MarshalAs( UnmanagedType.IUnknown )]
  type IVirtualDesktopNotification (line 235) | [ComImport]
    method VirtualDesktopCreated (line 240) | void VirtualDesktopCreated( IVirtualDesktop pDesktop );
    method VirtualDesktopDestroyBegin (line 242) | void VirtualDesktopDestroyBegin( IVirtualDesktop pDesktopDestroyed, IV...
    method VirtualDesktopDestroyFailed (line 244) | void VirtualDesktopDestroyFailed( IVirtualDesktop pDesktopDestroyed, I...
    method VirtualDesktopDestroyed (line 246) | void VirtualDesktopDestroyed( IVirtualDesktop pDesktopDestroyed, IVirt...
    method ViewVirtualDesktopChanged (line 248) | void ViewVirtualDesktopChanged( IApplicationView pView );
    method CurrentVirtualDesktopChanged (line 250) | void CurrentVirtualDesktopChanged( IVirtualDesktop pDesktopOld, IVirtu...
  type IVirtualDesktopNotificationService (line 253) | [ComImport]
    method Register (line 258) | uint Register( IVirtualDesktopNotification pNotification );
    method Unregister (line 260) | void Unregister( uint dwCookie );

FILE: VirtualDesktop/VirtualDesktop10/VirtualDesktop.cs
  class Desktop (line 24) | public class Desktop : IDesktop
    method Desktop (line 28) | private Desktop( IVirtualDesktop desktop )
    method GetWindowThreadProcessId (line 87) | [DllImport( "user32.dll" )]
    method GetForegroundWindow (line 91) | [DllImport( "user32.dll" )]
    method GetHashCode (line 94) | public override int GetHashCode()
    method Equals (line 100) | public override bool Equals( object? obj )
    method FromIndex (line 106) | public static Desktop FromIndex( int index )
    method FromWindow (line 112) | public static Desktop? FromWindow( IntPtr hWnd )
    method SysIndexFromDesktop (line 120) | public static int SysIndexFromDesktop( Desktop desktop )
    method DesktopNameFromDesktop (line 127) | public static string DesktopNameFromDesktop( Desktop desktop )
    method DesktopNameFromIndex (line 154) | public static string DesktopNameFromIndex( int index )
    method HasDesktopNameFromIndex (line 181) | public static bool HasDesktopNameFromIndex( int index )
    method SearchDesktop (line 205) | public static int SearchDesktop( string partialName )
    method Create (line 223) | public static Desktop Create()
    method Remove (line 229) | public void Remove( Desktop? fallback = null )
    method SetName (line 255) | public void SetName( string name )
    method MakeVisible (line 269) | public void MakeVisible()
    method MoveWindow (line 275) | public void MoveWindow( IntPtr hWnd )
    method MoveActiveWindow (line 313) | public void MoveActiveWindow()
    method HasWindow (line 319) | public bool HasWindow( IntPtr hWnd )
    method IsWindowPinned (line 326) | public static bool IsWindowPinned( IntPtr hWnd )
    method PinWindow (line 333) | public static void PinWindow( IntPtr hWnd )
    method UnpinWindow (line 345) | public static void UnpinWindow( IntPtr hWnd )
    method IsApplicationPinned (line 357) | public static bool IsApplicationPinned( IntPtr hWnd )
    method PinApplication (line 364) | public static void PinApplication( IntPtr hWnd )
    method UnpinApplication (line 376) | public static void UnpinApplication( IntPtr hWnd )
    method FromId (line 389) | public static Desktop? FromId( Guid guid )

FILE: VirtualDesktop/VirtualDesktop10/VirtualDesktopManager.cs
  class DesktopManager (line 21) | public static class DesktopManager
    method DesktopManager (line 31) | static DesktopManager()
    method ResetDesktopManager (line 37) | public static void ResetDesktopManager()
    method Init (line 42) | private static void Init()
    method GetDesktopCount (line 77) | public static int GetDesktopCount()
    method GetDesktop (line 90) | public static IVirtualDesktop GetDesktop( int index )
    method GetDesktopIndex (line 101) | internal static int GetDesktopIndex( IVirtualDesktop desktop )
    method GetApplicationView (line 122) | internal static IApplicationView GetApplicationView( this IntPtr hWnd )
    method GetAppId (line 129) | internal static string GetAppId( IntPtr hWnd )
    method GetViewCount (line 136) | public static int GetViewCount()
    class DisposableNotification (line 150) | private class DisposableNotification : IDisposable
      method Dispose (line 155) | public void Dispose()
    class EventProxy (line 167) | private class EventProxy : IVirtualDesktopNotification
      method VirtualDesktopCreated (line 169) | public void VirtualDesktopCreated( IVirtualDesktop pDesktop )
      method VirtualDesktopDestroyBegin (line 174) | public void VirtualDesktopDestroyBegin( IVirtualDesktop pDesktopDest...
      method VirtualDesktopDestroyFailed (line 179) | public void VirtualDesktopDestroyFailed( IVirtualDesktop pDesktopDes...
      method VirtualDesktopDestroyed (line 184) | public void VirtualDesktopDestroyed( IVirtualDesktop pDesktopDestroy...
      method ViewVirtualDesktopChanged (line 189) | public void ViewVirtualDesktopChanged( IApplicationView pView )
      method CurrentVirtualDesktopChanged (line 194) | public void CurrentVirtualDesktopChanged( IVirtualDesktop pDesktopOl...
  class VirtualDesktopRenamedEventArgs (line 206) | public class VirtualDesktopRenamedEventArgs : EventArgs
    method VirtualDesktopRenamedEventArgs (line 208) | public VirtualDesktopRenamedEventArgs( IVirtualDesktop desktop, string...
  class VirtualDesktopChangedEventArgs (line 230) | public class VirtualDesktopChangedEventArgs : EventArgs
    method VirtualDesktopChangedEventArgs (line 232) | public VirtualDesktopChangedEventArgs( IVirtualDesktop oldDesktop, IVi...
  class VirtualDesktopDestroyEventArgs (line 256) | public class VirtualDesktopDestroyEventArgs : EventArgs
    method VirtualDesktopDestroyEventArgs (line 258) | public VirtualDesktopDestroyEventArgs( IVirtualDesktop destroyed, IVir...

FILE: VirtualDesktop/VirtualDesktop11/COM.cs
  class Guids (line 18) | internal static class Guids
  type Size (line 27) | [StructLayout( LayoutKind.Sequential )]
  type Rect (line 34) | [StructLayout( LayoutKind.Sequential )]
  type APPLICATION_VIEW_CLOAK_TYPE (line 43) | public enum APPLICATION_VIEW_CLOAK_TYPE : int
  type APPLICATION_VIEW_COMPATIBILITY_POLICY (line 50) | public enum APPLICATION_VIEW_COMPATIBILITY_POLICY : int
  type IApplicationView (line 59) | [ComImport]
    method GetIIdsSlot (line 64) | void GetIIdsSlot();
    method GetRuntimeClassNameSlot (line 65) | void GetRuntimeClassNameSlot();
    method GetTrustLevelSlot (line 66) | void GetTrustLevelSlot();
    method SetFocus (line 67) | int  SetFocus();
    method SwitchTo (line 68) | int  SwitchTo();
    method TryInvokeBack (line 69) | int  TryInvokeBack( IntPtr /* IAsyncCallback* */ callback );
    method GetThumbnailWindow (line 70) | int  GetThumbnailWindow( out IntPtr hWnd );
    method GetMonitor (line 71) | int  GetMonitor( out         IntPtr /* IImmersiveMonitor */ immersiveM...
    method GetVisibility (line 72) | int  GetVisibility( out      int visibility );
    method SetCloak (line 73) | int  SetCloak( APPLICATION_VIEW_CLOAK_TYPE cloakType, int unknown );
    method GetPosition (line 74) | int  GetPosition( ref Guid guid /* GUID for IApplicationViewPosition *...
    method SetPosition (line 75) | int  SetPosition( ref IntPtr /* IApplicationViewPosition* */ position );
    method InsertAfterWindow (line 76) | int  InsertAfterWindow( IntPtr hWnd );
    method GetExtendedFramePosition (line 77) | int  GetExtendedFramePosition( out                              Rect r...
    method GetAppUserModelId (line 78) | int  GetAppUserModelId( [MarshalAs( UnmanagedType.LPWStr )] out string...
    method SetAppUserModelId (line 79) | int  SetAppUserModelId( string id );
    method IsEqualByAppUserModelId (line 80) | int  IsEqualByAppUserModelId( string id, out int result );
    method GetViewState (line 81) | int  GetViewState( out uint state );
    method SetViewState (line 82) | int  SetViewState( uint state );
    method GetNeediness (line 83) | int  GetNeediness( out               int neediness );
    method GetLastActivationTimestamp (line 84) | int  GetLastActivationTimestamp( out ulong timestamp );
    method SetLastActivationTimestamp (line 85) | int  SetLastActivationTimestamp( ulong timestamp );
    method GetVirtualDesktopId (line 86) | int  GetVirtualDesktopId( out Guid guid );
    method SetVirtualDesktopId (line 87) | int  SetVirtualDesktopId( ref Guid guid );
    method GetShowInSwitchers (line 88) | int  GetShowInSwitchers( out  int flag );
    method SetShowInSwitchers (line 89) | int  SetShowInSwitchers( int flag );
    method GetScaleFactor (line 90) | int  GetScaleFactor( out             int factor );
    method CanReceiveInput (line 91) | int  CanReceiveInput( out            bool canReceiveInput );
    method GetCompatibilityPolicyType (line 92) | int  GetCompatibilityPolicyType( out APPLICATION_VIEW_COMPATIBILITY_PO...
    method SetCompatibilityPolicyType (line 93) | int  SetCompatibilityPolicyType( APPLICATION_VIEW_COMPATIBILITY_POLICY...
    method GetSizeConstraints (line 94) | int  GetSizeConstraints( IntPtr /* IImmersiveMonitor* */ monitor, out ...
    method GetSizeConstraintsForDpi (line 95) | int  GetSizeConstraintsForDpi( uint uint1, out Size size1, out Size si...
    method SetSizeConstraintsForDpi (line 96) | int  SetSizeConstraintsForDpi( ref uint uint1, ref Size size1, ref Siz...
    method OnMinSizePreferencesUpdated (line 97) | int  OnMinSizePreferencesUpdated( IntPtr hWnd );
    method ApplyOperation (line 98) | int  ApplyOperation( IntPtr /* IApplicationViewOperation* */ operation );
    method IsTray (line 99) | int  IsTray( out                  bool isTray );
    method IsInHighZOrderBand (line 100) | int  IsInHighZOrderBand( out      bool isInHighZOrderBand );
    method IsSplashScreenPresented (line 101) | int  IsSplashScreenPresented( out bool isSplashScreenPresented );
    method Flash (line 102) | int  Flash();
    method GetRootSwitchableOwner (line 103) | int  GetRootSwitchableOwner( out                              IApplica...
    method EnumerateOwnershipTree (line 104) | int  EnumerateOwnershipTree( out                              IObjectA...
    method GetEnterpriseId (line 105) | int  GetEnterpriseId( [MarshalAs( UnmanagedType.LPWStr )] out string  ...
    method IsMirrored (line 106) | int  IsMirrored( out                                          bool    ...
    method Unknown1 (line 107) | int  Unknown1( out                                            int     ...
    method Unknown2 (line 108) | int  Unknown2( out                                            int     ...
    method Unknown3 (line 109) | int  Unknown3( out                                            int     ...
    method Unknown4 (line 110) | int  Unknown4( out                                            int     ...
    method Unknown5 (line 111) | int  Unknown5( out                                            int     ...
    method Unknown6 (line 112) | int  Unknown6( int                                                    ...
    method Unknown7 (line 113) | int  Unknown7();
    method Unknown8 (line 114) | int  Unknown8( out int   unknown );
    method Unknown9 (line 115) | int  Unknown9( int       unknown );
    method Unknown10 (line 116) | int  Unknown10( int      unknownX, int unknownY );
    method Unknown11 (line 117) | int  Unknown11( int      unknown );
    method Unknown12 (line 118) | int  Unknown12( out Size size1 );
  type IApplicationViewCollection (line 121) | [ComImport]
    method GetViews (line 126) | int  GetViews( out         IObjectArray array );
    method GetViewsByZOrder (line 127) | int  GetViewsByZOrder( out IObjectArray array );
    method GetViewsByAppUserModelId (line 128) | int  GetViewsByAppUserModelId( string   id,          out IObjectArray ...
    method GetViewForHWnd (line 129) | int  GetViewForHWnd( IntPtr             hWnd,        out IApplicationV...
    method GetViewForApplication (line 130) | int  GetViewForApplication( object      application, out IApplicationV...
    method GetViewForAppUserModelId (line 131) | int  GetViewForAppUserModelId( string   id,          out IApplicationV...
    method GetViewInFocus (line 132) | int  GetViewInFocus( out IntPtr         view );
    method Unknown1 (line 133) | int  Unknown1( out       IntPtr         view );
    method RefreshCollection (line 134) | void RefreshCollection();
    method RegisterForApplicationViewChanges (line 135) | int  RegisterForApplicationViewChanges( object listener, out int cooki...
    method UnregisterForApplicationViewChanges (line 136) | int  UnregisterForApplicationViewChanges( int  cookie );
  type IVirtualDesktop (line 139) | [ComImport]
    method IsViewVisible (line 144) | bool   IsViewVisible( IApplicationView view );
    method GetId (line 145) | Guid   GetId();
    method Unknown1 (line 146) | IntPtr Unknown1();
    method GetString (line 149) | public void GetString( out IntPtr hstr );
    method GetName (line 151) | [return: MarshalAs( UnmanagedType.HString )]
    method GetWallpaperPath (line 155) | [return: MarshalAs( UnmanagedType.HString )]
  type IVirtualDesktopManagerInternal (line 159) | [ComImport]
    method GetCount (line 164) | int             GetCount( IntPtr                      hWndOrMon );
    method MoveViewToDesktop (line 165) | void            MoveViewToDesktop( IApplicationView   view, IVirtualDe...
    method CanViewMoveDesktops (line 166) | bool            CanViewMoveDesktops( IApplicationView view );
    method GetCurrentDesktop (line 167) | IVirtualDesktop GetCurrentDesktop( IntPtr             hWndOrMon );
    method GetAllCurrentDesktops (line 168) | IObjectArray    GetAllCurrentDesktops();
    method GetDesktops (line 169) | void            GetDesktops( IntPtr hWndOrMon, out IObjectArray deskto...
    method GetAdjacentDesktop (line 171) | [PreserveSig]
    method SwitchDesktop (line 174) | void            SwitchDesktop( IntPtr                                h...
    method CreateDesktop (line 175) | IVirtualDesktop CreateDesktop( IntPtr                                h...
    method MoveDesktop (line 176) | void            MoveDesktop( IVirtualDesktop                         d...
    method RemoveDesktop (line 177) | void            RemoveDesktop( IVirtualDesktop                       d...
    method FindDesktop (line 178) | IVirtualDesktop FindDesktop( ref Guid                                d...
    method GetDesktopSwitchIncludeExcludeViews (line 179) | void            GetDesktopSwitchIncludeExcludeViews( IVirtualDesktop d...
    method SetName (line 181) | void SetName( IVirtualDesktop      desktop, IntPtr newName );
    method SetWallpaper (line 182) | void SetWallpaper( IVirtualDesktop desktop, IntPtr path );
    method SetDesktopName (line 184) | void SetDesktopName( IVirtualDesktop      desktop, [MarshalAs( Unmanag...
    method SetDesktopWallpaper (line 185) | void SetDesktopWallpaper( IVirtualDesktop desktop, [MarshalAs( Unmanag...
    method UpdateWallpaperPathForAllDesktops (line 187) | void UpdateWallpaperPathForAllDesktops( [MarshalAs( UnmanagedType.HStr...
    method CopyDesktopState (line 188) | void CopyDesktopState( IApplicationView                               ...
    method GetDesktopIsPerMonitor (line 189) | int  GetDesktopIsPerMonitor();
    method SetDesktopIsPerMonitor (line 190) | void SetDesktopIsPerMonitor( bool state );
  type IVirtualDesktopManager (line 193) | [ComImport]
    method IsWindowOnCurrentVirtualDesktop (line 198) | bool IsWindowOnCurrentVirtualDesktop( IntPtr topLevelWindow );
    method GetWindowDesktopId (line 199) | Guid GetWindowDesktopId( IntPtr              topLevelWindow );
    method MoveWindowToDesktop (line 200) | void MoveWindowToDesktop( IntPtr             topLevelWindow, ref Guid ...
  type IVirtualDesktopPinnedApps (line 203) | [ComImport]
    method IsAppIdPinned (line 208) | bool IsAppIdPinned( string          appId );
    method PinAppID (line 209) | void PinAppID( string               appId );
    method UnpinAppID (line 210) | void UnpinAppID( string             appId );
    method IsViewPinned (line 211) | bool IsViewPinned( IApplicationView applicationView );
    method PinView (line 212) | void PinView( IApplicationView      applicationView );
    method UnpinView (line 213) | void UnpinView( IApplicationView    applicationView );
  type IObjectArray (line 216) | [ComImport]
    method GetCount (line 221) | void GetCount( out int count );
    method GetAt (line 222) | void GetAt( int        index, ref Guid iid, [MarshalAs( UnmanagedType....
  type IServiceProvider10 (line 225) | [ComImport]
    method QueryService (line 230) | [return: MarshalAs( UnmanagedType.IUnknown )]
  type IVirtualDesktopNotification (line 234) | [ComImport]
    method VirtualDesktopCreated (line 239) | void VirtualDesktopCreated( IObjectArray       p0, IVirtualDesktop pDe...
    method VirtualDesktopDestroyBegin (line 240) | void VirtualDesktopDestroyBegin( IObjectArray  p0, IVirtualDesktop pDe...
    method VirtualDesktopDestroyFailed (line 241) | void VirtualDesktopDestroyFailed( IObjectArray p0, IVirtualDesktop pDe...
    method VirtualDesktopDestroyed (line 242) | void VirtualDesktopDestroyed( IObjectArray     p0, IVirtualDesktop pDe...
    method Proc7 (line 243) | void Proc7( int                                p0 );
    method VirtualDesktopMoved (line 244) | void VirtualDesktopMoved( IObjectArray         p0, IVirtualDesktop pDe...
    method VirtualDesktopRenamed (line 246) | void VirtualDesktopRenamed( IVirtualDesktop pDesktop, IntPtr newName );
    method VirtualDesktopRenamed (line 248) | void VirtualDesktopRenamed( IVirtualDesktop pDesktop, [MarshalAs( Unma...
    method ViewVirtualDesktopChanged (line 250) | void ViewVirtualDesktopChanged( IApplicationView pView );
    method CurrentVirtualDesktopChanged (line 251) | void CurrentVirtualDesktopChanged( IObjectArray  p0, IVirtualDesktop p...
    method VirtualDesktopWallpaperChanged (line 254) | void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop, IntPtr ...
    method VirtualDesktopWallpaperChanged (line 256) | void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop, [Marsha...
  type IVirtualDesktopNotificationService (line 260) | [ComImport]
    method Register (line 265) | uint Register( IVirtualDesktopNotification pNotification );
    method Unregister (line 266) | void Unregister( uint                      dwCookie );

FILE: VirtualDesktop/VirtualDesktop11/VirtualDesktop.cs
  class Desktop (line 23) | public class Desktop: IDesktop
    method Desktop (line 27) | private Desktop( IVirtualDesktop desktop )
    method GetWindowThreadProcessId (line 86) | [DllImport( "user32.dll" )]
    method GetForegroundWindow (line 90) | [DllImport( "user32.dll" )]
    method GetHashCode (line 93) | public override int GetHashCode()
    method Equals (line 99) | public override bool Equals( object? obj )
    method FromIndex (line 105) | public static Desktop FromIndex( int index )
    method FromWindow (line 111) | public static Desktop FromWindow( IntPtr hWnd )
    method SysIndexFromDesktop (line 119) | public static int SysIndexFromDesktop( Desktop desktop )
    method DesktopNameFromDesktop (line 126) | public static string DesktopNameFromDesktop( Desktop desktop )
    method DesktopNameFromIndex (line 155) | public static string DesktopNameFromIndex( int index )
    method HasDesktopNameFromIndex (line 184) | public static bool HasDesktopNameFromIndex( int index )
    method DesktopWallpaperFromIndex (line 210) | public static string DesktopWallpaperFromIndex( int index )
    method SearchDesktop (line 227) | public static int SearchDesktop( string partialName )
    method Create (line 245) | public static Desktop Create()
    method Remove (line 251) | public void Remove( Desktop? fallback = null )
    method RemoveAll (line 277) | public static void RemoveAll()
    method Move (line 283) | public void Move( int index )
    method SetName (line 289) | public void SetName( string name )
    method SetWallpaperPath (line 300) | public void SetWallpaperPath( string path )
    method SetAllWallpaperPaths (line 313) | public static void SetAllWallpaperPaths( string path )
    method MakeVisible (line 320) | public void MakeVisible()
    method MoveWindow (line 326) | public void MoveWindow( IntPtr hWnd )
    method MoveActiveWindow (line 364) | public void MoveActiveWindow()
    method HasWindow (line 370) | public bool HasWindow( IntPtr hWnd )
    method IsWindowPinned (line 377) | public static bool IsWindowPinned( IntPtr hWnd )
    method PinWindow (line 384) | public static void PinWindow( IntPtr hWnd )
    method UnpinWindow (line 396) | public static void UnpinWindow( IntPtr hWnd )
    method IsApplicationPinned (line 408) | public static bool IsApplicationPinned( IntPtr hWnd )
    method PinApplication (line 415) | public static void PinApplication( IntPtr hWnd )
    method UnpinApplication (line 427) | public static void UnpinApplication( IntPtr hWnd )
    method FromId (line 440) | public static Desktop? FromId( Guid guid )

FILE: VirtualDesktop/VirtualDesktop11/VirtualDesktopManager.cs
  class DesktopManager (line 21) | public static class DesktopManager
    method DesktopManager (line 30) | static DesktopManager()
    method ResetDesktopManager (line 36) | public static void ResetDesktopManager()
    method Init (line 41) | private static void Init()
    method GetDesktopCount (line 65) | public static int GetDesktopCount()
    method GetDesktop (line 78) | public static IVirtualDesktop GetDesktop( int index )
    method GetDesktopIndex (line 89) | internal static int GetDesktopIndex( IVirtualDesktop desktop )
    method GetApplicationView (line 110) | internal static IApplicationView GetApplicationView( this IntPtr hWnd )
    method GetAppId (line 117) | internal static string GetAppId( IntPtr hWnd )
    method GetViewCount (line 124) | public static int GetViewCount()
    class DisposableNotification (line 141) | private class DisposableNotification : IDisposable
      method Dispose (line 146) | public void Dispose()
    class EventProxy (line 155) | private class EventProxy : IVirtualDesktopNotification
      method ViewVirtualDesktopChanged (line 157) | public void ViewVirtualDesktopChanged( IApplicationView pView )
      method CurrentVirtualDesktopChanged (line 162) | public void CurrentVirtualDesktopChanged( IObjectArray p0, IVirtualD...
      method VirtualDesktopCreated (line 167) | public void VirtualDesktopCreated( IObjectArray p0, IVirtualDesktop ...
      method VirtualDesktopDestroyBegin (line 172) | public void VirtualDesktopDestroyBegin( IObjectArray p0, IVirtualDes...
      method VirtualDesktopDestroyFailed (line 177) | public void VirtualDesktopDestroyFailed( IObjectArray p0, IVirtualDe...
      method VirtualDesktopDestroyed (line 182) | public void VirtualDesktopDestroyed( IObjectArray p0, IVirtualDeskto...
      method Proc7 (line 187) | public void Proc7( int p0 )
      method VirtualDesktopMoved (line 192) | public void VirtualDesktopMoved( IObjectArray p0, IVirtualDesktop pD...
      method VirtualDesktopRenamed (line 198) | public void VirtualDesktopRenamed( IVirtualDesktop pDesktop, IntPtr ...
      method VirtualDesktopRenamed (line 204) | public void VirtualDesktopRenamed( IVirtualDesktop pDesktop, string ...
      method VirtualDesktopWallpaperChanged (line 211) | public void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop...
      method VirtualDesktopWallpaperChanged (line 217) | public void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop...
  class VirtualDesktopRenamedEventArgs (line 225) | public class VirtualDesktopRenamedEventArgs : EventArgs
    method VirtualDesktopRenamedEventArgs (line 227) | public VirtualDesktopRenamedEventArgs( IVirtualDesktop desktop, string...
  class VirtualDesktopWallpaperChangedEventArgs (line 237) | public class VirtualDesktopWallpaperChangedEventArgs : EventArgs
    method VirtualDesktopWallpaperChangedEventArgs (line 239) | public VirtualDesktopWallpaperChangedEventArgs( IVirtualDesktop deskto...
  class VirtualDesktopChangedEventArgs (line 250) | public class VirtualDesktopChangedEventArgs : EventArgs
    method VirtualDesktopChangedEventArgs (line 252) | public VirtualDesktopChangedEventArgs( IVirtualDesktop oldDesktop, IVi...
  class VirtualDesktopMovedEventArgs (line 262) | public class VirtualDesktopMovedEventArgs : EventArgs
    method VirtualDesktopMovedEventArgs (line 264) | public VirtualDesktopMovedEventArgs( IVirtualDesktop desktop, int oldI...
  class VirtualDesktopDestroyEventArgs (line 276) | public class VirtualDesktopDestroyEventArgs : EventArgs
    method VirtualDesktopDestroyEventArgs (line 278) | public VirtualDesktopDestroyEventArgs( IVirtualDesktop destroyed, IVir...

FILE: VirtualDesktop/VirtualDesktop11_21H2/COM.cs
  class Guids (line 18) | internal static class Guids
  type Size (line 27) | [StructLayout( LayoutKind.Sequential )]
  type Rect (line 34) | [StructLayout( LayoutKind.Sequential )]
  type APPLICATION_VIEW_CLOAK_TYPE (line 43) | public enum APPLICATION_VIEW_CLOAK_TYPE : int
  type APPLICATION_VIEW_COMPATIBILITY_POLICY (line 50) | public enum APPLICATION_VIEW_COMPATIBILITY_POLICY : int
  type IApplicationView (line 59) | [ComImport]
    method GetIIdsSlot (line 64) | void GetIIdsSlot();
    method GetRuntimeClassNameSlot (line 65) | void GetRuntimeClassNameSlot();
    method GetTrustLevelSlot (line 66) | void GetTrustLevelSlot();
    method SetFocus (line 67) | int  SetFocus();
    method SwitchTo (line 68) | int  SwitchTo();
    method TryInvokeBack (line 69) | int  TryInvokeBack( IntPtr /* IAsyncCallback* */ callback );
    method GetThumbnailWindow (line 70) | int  GetThumbnailWindow( out IntPtr hWnd );
    method GetMonitor (line 71) | int  GetMonitor( out         IntPtr /* IImmersiveMonitor */ immersiveM...
    method GetVisibility (line 72) | int  GetVisibility( out      int visibility );
    method SetCloak (line 73) | int  SetCloak( APPLICATION_VIEW_CLOAK_TYPE cloakType, int unknown );
    method GetPosition (line 74) | int  GetPosition( ref Guid guid /* GUID for IApplicationViewPosition *...
    method SetPosition (line 75) | int  SetPosition( ref IntPtr /* IApplicationViewPosition* */ position );
    method InsertAfterWindow (line 76) | int  InsertAfterWindow( IntPtr hWnd );
    method GetExtendedFramePosition (line 77) | int  GetExtendedFramePosition( out                              Rect r...
    method GetAppUserModelId (line 78) | int  GetAppUserModelId( [MarshalAs( UnmanagedType.LPWStr )] out string...
    method SetAppUserModelId (line 79) | int  SetAppUserModelId( string id );
    method IsEqualByAppUserModelId (line 80) | int  IsEqualByAppUserModelId( string id, out int result );
    method GetViewState (line 81) | int  GetViewState( out uint state );
    method SetViewState (line 82) | int  SetViewState( uint state );
    method GetNeediness (line 83) | int  GetNeediness( out               int neediness );
    method GetLastActivationTimestamp (line 84) | int  GetLastActivationTimestamp( out ulong timestamp );
    method SetLastActivationTimestamp (line 85) | int  SetLastActivationTimestamp( ulong timestamp );
    method GetVirtualDesktopId (line 86) | int  GetVirtualDesktopId( out Guid guid );
    method SetVirtualDesktopId (line 87) | int  SetVirtualDesktopId( ref Guid guid );
    method GetShowInSwitchers (line 88) | int  GetShowInSwitchers( out  int flag );
    method SetShowInSwitchers (line 89) | int  SetShowInSwitchers( int flag );
    method GetScaleFactor (line 90) | int  GetScaleFactor( out             int factor );
    method CanReceiveInput (line 91) | int  CanReceiveInput( out            bool canReceiveInput );
    method GetCompatibilityPolicyType (line 92) | int  GetCompatibilityPolicyType( out APPLICATION_VIEW_COMPATIBILITY_PO...
    method SetCompatibilityPolicyType (line 93) | int  SetCompatibilityPolicyType( APPLICATION_VIEW_COMPATIBILITY_POLICY...
    method GetSizeConstraints (line 94) | int  GetSizeConstraints( IntPtr /* IImmersiveMonitor* */ monitor, out ...
    method GetSizeConstraintsForDpi (line 95) | int  GetSizeConstraintsForDpi( uint uint1, out Size size1, out Size si...
    method SetSizeConstraintsForDpi (line 96) | int  SetSizeConstraintsForDpi( ref uint uint1, ref Size size1, ref Siz...
    method OnMinSizePreferencesUpdated (line 97) | int  OnMinSizePreferencesUpdated( IntPtr hWnd );
    method ApplyOperation (line 98) | int  ApplyOperation( IntPtr /* IApplicationViewOperation* */ operation );
    method IsTray (line 99) | int  IsTray( out                  bool isTray );
    method IsInHighZOrderBand (line 100) | int  IsInHighZOrderBand( out      bool isInHighZOrderBand );
    method IsSplashScreenPresented (line 101) | int  IsSplashScreenPresented( out bool isSplashScreenPresented );
    method Flash (line 102) | int  Flash();
    method GetRootSwitchableOwner (line 103) | int  GetRootSwitchableOwner( out                              IApplica...
    method EnumerateOwnershipTree (line 104) | int  EnumerateOwnershipTree( out                              IObjectA...
    method GetEnterpriseId (line 105) | int  GetEnterpriseId( [MarshalAs( UnmanagedType.LPWStr )] out string  ...
    method IsMirrored (line 106) | int  IsMirrored( out                                          bool    ...
    method Unknown1 (line 107) | int  Unknown1( out                                            int     ...
    method Unknown2 (line 108) | int  Unknown2( out                                            int     ...
    method Unknown3 (line 109) | int  Unknown3( out                                            int     ...
    method Unknown4 (line 110) | int  Unknown4( out                                            int     ...
    method Unknown5 (line 111) | int  Unknown5( out                                            int     ...
    method Unknown6 (line 112) | int  Unknown6( int                                                    ...
    method Unknown7 (line 113) | int  Unknown7();
    method Unknown8 (line 114) | int  Unknown8( out int   unknown );
    method Unknown9 (line 115) | int  Unknown9( int       unknown );
    method Unknown10 (line 116) | int  Unknown10( int      unknownX, int unknownY );
    method Unknown11 (line 117) | int  Unknown11( int      unknown );
    method Unknown12 (line 118) | int  Unknown12( out Size size1 );
  type IApplicationViewCollection (line 121) | [ComImport]
    method GetViews (line 126) | int  GetViews( out         IObjectArray array );
    method GetViewsByZOrder (line 127) | int  GetViewsByZOrder( out IObjectArray array );
    method GetViewsByAppUserModelId (line 128) | int  GetViewsByAppUserModelId( string   id,          out IObjectArray ...
    method GetViewForHWnd (line 129) | int  GetViewForHWnd( IntPtr             hWnd,        out IApplicationV...
    method GetViewForApplication (line 130) | int  GetViewForApplication( object      application, out IApplicationV...
    method GetViewForAppUserModelId (line 131) | int  GetViewForAppUserModelId( string   id,          out IApplicationV...
    method GetViewInFocus (line 132) | int  GetViewInFocus( out IntPtr         view );
    method Unknown1 (line 133) | int  Unknown1( out       IntPtr         view );
    method RefreshCollection (line 134) | void RefreshCollection();
    method RegisterForApplicationViewChanges (line 135) | int  RegisterForApplicationViewChanges( object listener, out int cooki...
    method UnregisterForApplicationViewChanges (line 136) | int  UnregisterForApplicationViewChanges( int  cookie );
  type IVirtualDesktop (line 139) | [ComImport]
    method IsViewVisible (line 144) | bool   IsViewVisible( IApplicationView view );
    method GetId (line 145) | Guid   GetId();
    method Unknown1 (line 146) | IntPtr Unknown1();
    method GetString (line 149) | public void GetString( out IntPtr hstr );
    method GetName (line 151) | [return: MarshalAs( UnmanagedType.HString )]
    method GetWallpaperPath (line 155) | [return: MarshalAs( UnmanagedType.HString )]
  type IVirtualDesktopManagerInternal (line 159) | [ComImport]
    method GetCount (line 164) | int             GetCount( IntPtr                      hWndOrMon );
    method MoveViewToDesktop (line 165) | void            MoveViewToDesktop( IApplicationView   view, IVirtualDe...
    method CanViewMoveDesktops (line 166) | bool            CanViewMoveDesktops( IApplicationView view );
    method GetCurrentDesktop (line 167) | IVirtualDesktop GetCurrentDesktop( IntPtr             hWndOrMon );
    method GetDesktops (line 168) | void            GetDesktops( IntPtr                   hWndOrMon, out I...
    method GetAdjacentDesktop (line 170) | [PreserveSig]
    method SwitchDesktop (line 173) | void            SwitchDesktop( IntPtr                                h...
    method CreateDesktop (line 174) | IVirtualDesktop CreateDesktop( IntPtr                                h...
    method MoveDesktop (line 175) | void            MoveDesktop( IVirtualDesktop                         d...
    method RemoveDesktop (line 176) | void            RemoveDesktop( IVirtualDesktop                       d...
    method FindDesktop (line 177) | IVirtualDesktop FindDesktop( ref Guid                                d...
    method GetDesktopSwitchIncludeExcludeViews (line 178) | void            GetDesktopSwitchIncludeExcludeViews( IVirtualDesktop d...
    method SetName (line 180) | void SetName( IVirtualDesktop      desktop, IntPtr newName );
    method SetWallpaper (line 181) | void SetWallpaper( IVirtualDesktop desktop, IntPtr path );
    method SetDesktopName (line 183) | void SetDesktopName( IVirtualDesktop      desktop, [MarshalAs( Unmanag...
    method SetDesktopWallpaper (line 184) | void SetDesktopWallpaper( IVirtualDesktop desktop, [MarshalAs( Unmanag...
    method UpdateWallpaperPathForAllDesktops (line 186) | void UpdateWallpaperPathForAllDesktops( [MarshalAs( UnmanagedType.HStr...
    method CopyDesktopState (line 187) | void CopyDesktopState( IApplicationView                               ...
    method GetDesktopIsPerMonitor (line 188) | int  GetDesktopIsPerMonitor();
    method SetDesktopIsPerMonitor (line 189) | void SetDesktopIsPerMonitor( bool state );
  type IVirtualDesktopManager (line 192) | [ComImport]
    method IsWindowOnCurrentVirtualDesktop (line 197) | bool IsWindowOnCurrentVirtualDesktop( IntPtr topLevelWindow );
    method GetWindowDesktopId (line 198) | Guid GetWindowDesktopId( IntPtr              topLevelWindow );
    method MoveWindowToDesktop (line 199) | void MoveWindowToDesktop( IntPtr             topLevelWindow, ref Guid ...
  type IVirtualDesktopPinnedApps (line 202) | [ComImport]
    method IsAppIdPinned (line 207) | bool IsAppIdPinned( string          appId );
    method PinAppID (line 208) | void PinAppID( string               appId );
    method UnpinAppID (line 209) | void UnpinAppID( string             appId );
    method IsViewPinned (line 210) | bool IsViewPinned( IApplicationView applicationView );
    method PinView (line 211) | void PinView( IApplicationView      applicationView );
    method UnpinView (line 212) | void UnpinView( IApplicationView    applicationView );
  type IObjectArray (line 215) | [ComImport]
    method GetCount (line 220) | void GetCount( out int count );
    method GetAt (line 221) | void GetAt( int        index, ref Guid iid, [MarshalAs( UnmanagedType....
  type IServiceProvider10 (line 224) | [ComImport]
    method QueryService (line 229) | [return: MarshalAs( UnmanagedType.IUnknown )]
  type IVirtualDesktopNotification (line 233) | [ComImport]
    method VirtualDesktopCreated (line 238) | void VirtualDesktopCreated( IObjectArray       p0, IVirtualDesktop pDe...
    method VirtualDesktopDestroyBegin (line 239) | void VirtualDesktopDestroyBegin( IObjectArray  p0, IVirtualDesktop pDe...
    method VirtualDesktopDestroyFailed (line 240) | void VirtualDesktopDestroyFailed( IObjectArray p0, IVirtualDesktop pDe...
    method VirtualDesktopDestroyed (line 241) | void VirtualDesktopDestroyed( IObjectArray     p0, IVirtualDesktop pDe...
    method Proc7 (line 242) | void Proc7( int                                p0 );
    method VirtualDesktopMoved (line 243) | void VirtualDesktopMoved( IObjectArray         p0, IVirtualDesktop pDe...
    method VirtualDesktopRenamed (line 245) | void VirtualDesktopRenamed( IVirtualDesktop pDesktop, IntPtr newName );
    method VirtualDesktopRenamed (line 247) | void VirtualDesktopRenamed( IVirtualDesktop pDesktop, [MarshalAs( Unma...
    method ViewVirtualDesktopChanged (line 249) | void ViewVirtualDesktopChanged( IApplicationView pView );
    method CurrentVirtualDesktopChanged (line 250) | void CurrentVirtualDesktopChanged( IObjectArray  p0, IVirtualDesktop p...
    method VirtualDesktopWallpaperChanged (line 253) | void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop, IntPtr ...
    method VirtualDesktopWallpaperChanged (line 255) | void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop, [Marsha...
  type IVirtualDesktopNotificationService (line 259) | [ComImport]
    method Register (line 264) | uint Register( IVirtualDesktopNotification pNotification );
    method Unregister (line 265) | void Unregister( uint                      dwCookie );

FILE: VirtualDesktop/VirtualDesktop11_21H2/VirtualDesktop.cs
  class Desktop (line 23) | public class Desktop: IDesktop
    method Desktop (line 27) | private Desktop( IVirtualDesktop desktop )
    method GetWindowThreadProcessId (line 86) | [DllImport( "user32.dll" )]
    method GetForegroundWindow (line 90) | [DllImport( "user32.dll" )]
    method GetHashCode (line 93) | public override int GetHashCode()
    method Equals (line 99) | public override bool Equals( object? obj )
    method FromIndex (line 105) | public static Desktop FromIndex( int index )
    method FromWindow (line 111) | public static Desktop FromWindow( IntPtr hWnd )
    method SysIndexFromDesktop (line 119) | public static int SysIndexFromDesktop( Desktop desktop )
    method DesktopNameFromDesktop (line 126) | public static string DesktopNameFromDesktop( Desktop desktop )
    method DesktopNameFromIndex (line 155) | public static string DesktopNameFromIndex( int index )
    method HasDesktopNameFromIndex (line 184) | public static bool HasDesktopNameFromIndex( int index )
    method DesktopWallpaperFromIndex (line 210) | public static string DesktopWallpaperFromIndex( int index )
    method SearchDesktop (line 227) | public static int SearchDesktop( string partialName )
    method Create (line 245) | public static Desktop Create()
    method Remove (line 251) | public void Remove( Desktop? fallback = null )
    method RemoveAll (line 277) | public static void RemoveAll()
    method Move (line 283) | public void Move( int index )
    method SetName (line 289) | public void SetName( string name )
    method SetWallpaperPath (line 300) | public void SetWallpaperPath( string path )
    method SetAllWallpaperPaths (line 313) | public static void SetAllWallpaperPaths( string path )
    method MakeVisible (line 320) | public void MakeVisible()
    method MoveWindow (line 326) | public void MoveWindow( IntPtr hWnd )
    method MoveActiveWindow (line 364) | public void MoveActiveWindow()
    method HasWindow (line 370) | public bool HasWindow( IntPtr hWnd )
    method IsWindowPinned (line 377) | public static bool IsWindowPinned( IntPtr hWnd )
    method PinWindow (line 384) | public static void PinWindow( IntPtr hWnd )
    method UnpinWindow (line 396) | public static void UnpinWindow( IntPtr hWnd )
    method IsApplicationPinned (line 408) | public static bool IsApplicationPinned( IntPtr hWnd )
    method PinApplication (line 415) | public static void PinApplication( IntPtr hWnd )
    method UnpinApplication (line 427) | public static void UnpinApplication( IntPtr hWnd )
    method FromId (line 440) | public static Desktop? FromId( Guid guid )

FILE: VirtualDesktop/VirtualDesktop11_21H2/VirtualDesktopManager.cs
  class DesktopManager (line 21) | public static class DesktopManager
    method DesktopManager (line 30) | static DesktopManager()
    method ResetDesktopManager (line 36) | public static void ResetDesktopManager()
    method Init (line 41) | private static void Init()
    method GetDesktopCount (line 65) | public static int GetDesktopCount()
    method GetDesktop (line 78) | public static IVirtualDesktop GetDesktop( int index )
    method GetDesktopIndex (line 89) | internal static int GetDesktopIndex( IVirtualDesktop desktop )
    method GetApplicationView (line 110) | internal static IApplicationView GetApplicationView( this IntPtr hWnd )
    method GetAppId (line 117) | internal static string GetAppId( IntPtr hWnd )
    method GetViewCount (line 124) | public static int GetViewCount()
    class DisposableNotification (line 141) | private class DisposableNotification : IDisposable
      method Dispose (line 146) | public void Dispose()
    class EventProxy (line 155) | private class EventProxy : IVirtualDesktopNotification
      method ViewVirtualDesktopChanged (line 157) | public void ViewVirtualDesktopChanged( IApplicationView pView )
      method CurrentVirtualDesktopChanged (line 162) | public void CurrentVirtualDesktopChanged( IObjectArray p0, IVirtualD...
      method VirtualDesktopCreated (line 167) | public void VirtualDesktopCreated( IObjectArray p0, IVirtualDesktop ...
      method VirtualDesktopDestroyBegin (line 172) | public void VirtualDesktopDestroyBegin( IObjectArray p0, IVirtualDes...
      method VirtualDesktopDestroyFailed (line 177) | public void VirtualDesktopDestroyFailed( IObjectArray p0, IVirtualDe...
      method VirtualDesktopDestroyed (line 182) | public void VirtualDesktopDestroyed( IObjectArray p0, IVirtualDeskto...
      method Proc7 (line 187) | public void Proc7( int p0 )
      method VirtualDesktopMoved (line 192) | public void VirtualDesktopMoved( IObjectArray p0, IVirtualDesktop pD...
      method VirtualDesktopRenamed (line 198) | public void VirtualDesktopRenamed( IVirtualDesktop pDesktop, IntPtr ...
      method VirtualDesktopRenamed (line 204) | public void VirtualDesktopRenamed( IVirtualDesktop pDesktop, string ...
      method VirtualDesktopWallpaperChanged (line 211) | public void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop...
      method VirtualDesktopWallpaperChanged (line 217) | public void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop...
  class VirtualDesktopRenamedEventArgs (line 225) | public class VirtualDesktopRenamedEventArgs : EventArgs
    method VirtualDesktopRenamedEventArgs (line 227) | public VirtualDesktopRenamedEventArgs( IVirtualDesktop desktop, string...
  class VirtualDesktopWallpaperChangedEventArgs (line 237) | public class VirtualDesktopWallpaperChangedEventArgs : EventArgs
    method VirtualDesktopWallpaperChangedEventArgs (line 239) | public VirtualDesktopWallpaperChangedEventArgs( IVirtualDesktop deskto...
  class VirtualDesktopChangedEventArgs (line 250) | public class VirtualDesktopChangedEventArgs : EventArgs
    method VirtualDesktopChangedEventArgs (line 252) | public VirtualDesktopChangedEventArgs( IVirtualDesktop oldDesktop, IVi...
  class VirtualDesktopMovedEventArgs (line 262) | public class VirtualDesktopMovedEventArgs : EventArgs
    method VirtualDesktopMovedEventArgs (line 264) | public VirtualDesktopMovedEventArgs( IVirtualDesktop desktop, int oldI...
  class VirtualDesktopDestroyEventArgs (line 276) | public class VirtualDesktopDestroyEventArgs : EventArgs
    method VirtualDesktopDestroyEventArgs (line 278) | public VirtualDesktopDestroyEventArgs( IVirtualDesktop destroyed, IVir...

FILE: VirtualDesktop/VirtualDesktop11_23H2/COM.cs
  class Guids (line 16) | internal static class Guids
  type Size (line 25) | [StructLayout( LayoutKind.Sequential )]
  type Rect (line 32) | [StructLayout( LayoutKind.Sequential )]
  type APPLICATION_VIEW_CLOAK_TYPE (line 41) | public enum APPLICATION_VIEW_CLOAK_TYPE : int
  type APPLICATION_VIEW_COMPATIBILITY_POLICY (line 48) | public enum APPLICATION_VIEW_COMPATIBILITY_POLICY : int
  type IApplicationView (line 57) | [ComImport]
    method GetIIdsSlot (line 62) | void GetIIdsSlot();
    method GetRuntimeClassNameSlot (line 63) | void GetRuntimeClassNameSlot();
    method GetTrustLevelSlot (line 64) | void GetTrustLevelSlot();
    method SetFocus (line 65) | int  SetFocus();
    method SwitchTo (line 66) | int  SwitchTo();
    method TryInvokeBack (line 67) | int  TryInvokeBack( IntPtr /* IAsyncCallback* */ callback );
    method GetThumbnailWindow (line 68) | int  GetThumbnailWindow( out IntPtr hWnd );
    method GetMonitor (line 69) | int  GetMonitor( out         IntPtr /* IImmersiveMonitor */ immersiveM...
    method GetVisibility (line 70) | int  GetVisibility( out      int visibility );
    method SetCloak (line 71) | int  SetCloak( APPLICATION_VIEW_CLOAK_TYPE cloakType, int unknown );
    method GetPosition (line 72) | int  GetPosition( ref Guid guid /* GUID for IApplicationViewPosition *...
    method SetPosition (line 73) | int  SetPosition( ref IntPtr /* IApplicationViewPosition* */ position );
    method InsertAfterWindow (line 74) | int  InsertAfterWindow( IntPtr hWnd );
    method GetExtendedFramePosition (line 75) | int  GetExtendedFramePosition( out                              Rect r...
    method GetAppUserModelId (line 76) | int  GetAppUserModelId( [MarshalAs( UnmanagedType.LPWStr )] out string...
    method SetAppUserModelId (line 77) | int  SetAppUserModelId( string id );
    method IsEqualByAppUserModelId (line 78) | int  IsEqualByAppUserModelId( string id, out int result );
    method GetViewState (line 79) | int  GetViewState( out uint state );
    method SetViewState (line 80) | int  SetViewState( uint state );
    method GetNeediness (line 81) | int  GetNeediness( out               int neediness );
    method GetLastActivationTimestamp (line 82) | int  GetLastActivationTimestamp( out ulong timestamp );
    method SetLastActivationTimestamp (line 83) | int  SetLastActivationTimestamp( ulong timestamp );
    method GetVirtualDesktopId (line 84) | int  GetVirtualDesktopId( out Guid guid );
    method SetVirtualDesktopId (line 85) | int  SetVirtualDesktopId( ref Guid guid );
    method GetShowInSwitchers (line 86) | int  GetShowInSwitchers( out  int flag );
    method SetShowInSwitchers (line 87) | int  SetShowInSwitchers( int flag );
    method GetScaleFactor (line 88) | int  GetScaleFactor( out             int factor );
    method CanReceiveInput (line 89) | int  CanReceiveInput( out            bool canReceiveInput );
    method GetCompatibilityPolicyType (line 90) | int  GetCompatibilityPolicyType( out APPLICATION_VIEW_COMPATIBILITY_PO...
    method SetCompatibilityPolicyType (line 91) | int  SetCompatibilityPolicyType( APPLICATION_VIEW_COMPATIBILITY_POLICY...
    method GetSizeConstraints (line 92) | int  GetSizeConstraints( IntPtr /* IImmersiveMonitor* */ monitor, out ...
    method GetSizeConstraintsForDpi (line 93) | int  GetSizeConstraintsForDpi( uint uint1, out Size size1, out Size si...
    method SetSizeConstraintsForDpi (line 94) | int  SetSizeConstraintsForDpi( ref uint uint1, ref Size size1, ref Siz...
    method OnMinSizePreferencesUpdated (line 95) | int  OnMinSizePreferencesUpdated( IntPtr hWnd );
    method ApplyOperation (line 96) | int  ApplyOperation( IntPtr /* IApplicationViewOperation* */ operation );
    method IsTray (line 97) | int  IsTray( out                  bool isTray );
    method IsInHighZOrderBand (line 98) | int  IsInHighZOrderBand( out      bool isInHighZOrderBand );
    method IsSplashScreenPresented (line 99) | int  IsSplashScreenPresented( out bool isSplashScreenPresented );
    method Flash (line 100) | int  Flash();
    method GetRootSwitchableOwner (line 101) | int  GetRootSwitchableOwner( out                              IApplica...
    method EnumerateOwnershipTree (line 102) | int  EnumerateOwnershipTree( out                              IObjectA...
    method GetEnterpriseId (line 103) | int  GetEnterpriseId( [MarshalAs( UnmanagedType.LPWStr )] out string  ...
    method IsMirrored (line 104) | int  IsMirrored( out                                          bool    ...
    method Unknown1 (line 105) | int  Unknown1( out                                            int     ...
    method Unknown2 (line 106) | int  Unknown2( out                                            int     ...
    method Unknown3 (line 107) | int  Unknown3( out                                            int     ...
    method Unknown4 (line 108) | int  Unknown4( out                                            int     ...
    method Unknown5 (line 109) | int  Unknown5( out                                            int     ...
    method Unknown6 (line 110) | int  Unknown6( int                                                    ...
    method Unknown7 (line 111) | int  Unknown7();
    method Unknown8 (line 112) | int  Unknown8( out int   unknown );
    method Unknown9 (line 113) | int  Unknown9( int       unknown );
    method Unknown10 (line 114) | int  Unknown10( int      unknownX, int unknownY );
    method Unknown11 (line 115) | int  Unknown11( int      unknown );
    method Unknown12 (line 116) | int  Unknown12( out Size size1 );
  type IApplicationViewCollection (line 119) | [ComImport]
    method GetViews (line 124) | int  GetViews( out         IObjectArray array );
    method GetViewsByZOrder (line 125) | int  GetViewsByZOrder( out IObjectArray array );
    method GetViewsByAppUserModelId (line 126) | int  GetViewsByAppUserModelId( string   id,          out IObjectArray ...
    method GetViewForHWnd (line 127) | int  GetViewForHWnd( IntPtr             hWnd,        out IApplicationV...
    method GetViewForApplication (line 128) | int  GetViewForApplication( object      application, out IApplicationV...
    method GetViewForAppUserModelId (line 129) | int  GetViewForAppUserModelId( string   id,          out IApplicationV...
    method GetViewInFocus (line 130) | int  GetViewInFocus( out IntPtr         view );
    method Unknown1 (line 131) | int  Unknown1( out       IntPtr         view );
    method RefreshCollection (line 132) | void RefreshCollection();
    method RegisterForApplicationViewChanges (line 133) | int  RegisterForApplicationViewChanges( object listener, out int cooki...
    method UnregisterForApplicationViewChanges (line 134) | int  UnregisterForApplicationViewChanges( int  cookie );
  type IVirtualDesktop (line 137) | [ComImport]
    method IsViewVisible (line 142) | bool IsViewVisible( IApplicationView view );
    method GetId (line 143) | Guid GetId();
    method GetString (line 146) | public void GetString( out IntPtr hstr );
    method GetName (line 148) | [return: MarshalAs( UnmanagedType.HString )]
    method GetWallpaperPath (line 152) | [return: MarshalAs( UnmanagedType.HString )]
    method IsRemote (line 155) | bool IsRemote();
  type IVirtualDesktopManagerInternal (line 158) | [ComImport]
    method GetCount (line 163) | int             GetCount();
    method MoveViewToDesktop (line 164) | void            MoveViewToDesktop( IApplicationView   view, IVirtualDe...
    method CanViewMoveDesktops (line 165) | bool            CanViewMoveDesktops( IApplicationView view );
    method GetCurrentDesktop (line 166) | IVirtualDesktop GetCurrentDesktop();
    method GetDesktops (line 167) | void            GetDesktops( out IObjectArray desktops );
    method GetAdjacentDesktop (line 169) | [PreserveSig]
    method SwitchDesktop (line 172) | void            SwitchDesktop( IVirtualDesktop desktop );
    method CreateDesktop (line 173) | IVirtualDesktop CreateDesktop();
    method MoveDesktop (line 174) | void            MoveDesktop( IVirtualDesktop                         d...
    method RemoveDesktop (line 175) | void            RemoveDesktop( IVirtualDesktop                       d...
    method FindDesktop (line 176) | IVirtualDesktop FindDesktop( ref Guid                                d...
    method GetDesktopSwitchIncludeExcludeViews (line 177) | void            GetDesktopSwitchIncludeExcludeViews( IVirtualDesktop d...
    method SetName (line 179) | void SetName( IVirtualDesktop      desktop, IntPtr newName );
    method SetWallpaper (line 180) | void SetWallpaper( IVirtualDesktop desktop, IntPtr path );
    method SetDesktopName (line 182) | void SetDesktopName( IVirtualDesktop      desktop, [MarshalAs( Unmanag...
    method SetDesktopWallpaper (line 183) | void SetDesktopWallpaper( IVirtualDesktop desktop, [MarshalAs( Unmanag...
    method UpdateWallpaperPathForAllDesktops (line 185) | void UpdateWallpaperPathForAllDesktops( [MarshalAs( UnmanagedType.HStr...
    method CopyDesktopState (line 186) | void CopyDesktopState( IApplicationView                               ...
    method CreateRemoteDesktop (line 187) | void CreateRemoteDesktop( [MarshalAs( UnmanagedType.HString )] string ...
    method SwitchRemoteDesktop (line 188) | void SwitchRemoteDesktop( IVirtualDesktop                             ...
    method SwitchDesktopWithAnimation (line 189) | void SwitchDesktopWithAnimation( IVirtualDesktop                      ...
    method GetLastActiveDesktop (line 190) | void GetLastActiveDesktop( out IVirtualDesktop                        ...
    method WaitForAnimationToComplete (line 191) | void WaitForAnimationToComplete();
  type IVirtualDesktopManager (line 194) | [ComImport]
    method IsWindowOnCurrentVirtualDesktop (line 199) | bool IsWindowOnCurrentVirtualDesktop( IntPtr topLevelWindow );
    method GetWindowDesktopId (line 200) | Guid GetWindowDesktopId( IntPtr              topLevelWindow );
    method MoveWindowToDesktop (line 201) | void MoveWindowToDesktop( IntPtr             topLevelWindow, ref Guid ...
  type IVirtualDesktopPinnedApps (line 204) | [ComImport]
    method IsAppIdPinned (line 209) | bool IsAppIdPinned( string          appId );
    method PinAppID (line 210) | void PinAppID( string               appId );
    method UnpinAppID (line 211) | void UnpinAppID( string             appId );
    method IsViewPinned (line 212) | bool IsViewPinned( IApplicationView applicationView );
    method PinView (line 213) | void PinView( IApplicationView      applicationView );
    method UnpinView (line 214) | void UnpinView( IApplicationView    applicationView );
  type IObjectArray (line 217) | [ComImport]
    method GetCount (line 222) | void GetCount( out int count );
    method GetAt (line 223) | void GetAt( int        index, ref Guid iid, [MarshalAs( UnmanagedType....
  type IServiceProvider10 (line 226) | [ComImport]
    method QueryService (line 231) | [return: MarshalAs( UnmanagedType.IUnknown )]
  type IVirtualDesktopNotification (line 235) | [ComImport]
    method VirtualDesktopCreated (line 240) | void VirtualDesktopCreated( IVirtualDesktop       pDesktop );
    method VirtualDesktopDestroyBegin (line 241) | void VirtualDesktopDestroyBegin( IVirtualDesktop  pDesktopDestroyed, I...
    method VirtualDesktopDestroyFailed (line 242) | void VirtualDesktopDestroyFailed( IVirtualDesktop pDesktopDestroyed, I...
    method VirtualDesktopDestroyed (line 243) | void VirtualDesktopDestroyed( IVirtualDesktop     pDesktopDestroyed, I...
    method VirtualDesktopMoved (line 244) | void VirtualDesktopMoved( IVirtualDesktop         pDesktop,          i...
    method VirtualDesktopRenamed (line 246) | void VirtualDesktopRenamed( IVirtualDesktop pDesktop, IntPtr newName );
    method VirtualDesktopRenamed (line 248) | void VirtualDesktopRenamed( IVirtualDesktop pDesktop, [MarshalAs( Unma...
    method ViewVirtualDesktopChanged (line 250) | void ViewVirtualDesktopChanged( IApplicationView   pView );
    method CurrentVirtualDesktopChanged (line 251) | void CurrentVirtualDesktopChanged( IVirtualDesktop pDesktopOld, IVirtu...
    method VirtualDesktopWallpaperChanged (line 254) | void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop, IntPtr ...
    method VirtualDesktopWallpaperChanged (line 256) | void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop, [Marsha...
    method VirtualDesktopSwitched (line 258) | void VirtualDesktopSwitched( IVirtualDesktop        pDesktop );
    method RemoteVirtualDesktopConnected (line 259) | void RemoteVirtualDesktopConnected( IVirtualDesktop pDesktop );
  type IVirtualDesktopNotificationService (line 262) | [ComImport]
    method Register (line 267) | uint Register( IVirtualDesktopNotification pNotification );
    method Unregister (line 268) | void Unregister( uint                      dwCookie );

FILE: VirtualDesktop/VirtualDesktop11_23H2/VirtualDesktop.cs
  class Desktop (line 21) | public class Desktop : IDesktop
    method Desktop (line 25) | private Desktop( IVirtualDesktop desktop )
    method GetWindowThreadProcessId (line 84) | [DllImport( "user32.dll" )]
    method GetForegroundWindow (line 88) | [DllImport( "user32.dll" )]
    method GetHashCode (line 91) | public override int GetHashCode()
    method Equals (line 97) | public override bool Equals( object? obj )
    method FromIndex (line 103) | public static Desktop FromIndex( int index )
    method FromWindow (line 109) | public static Desktop FromWindow( IntPtr hWnd )
    method SysIndexFromDesktop (line 117) | public static int SysIndexFromDesktop( Desktop desktop )
    method DesktopNameFromDesktop (line 124) | public static string DesktopNameFromDesktop( Desktop desktop )
    method DesktopNameFromIndex (line 153) | public static string DesktopNameFromIndex( int index )
    method HasDesktopNameFromIndex (line 182) | public static bool HasDesktopNameFromIndex( int index )
    method DesktopWallpaperFromIndex (line 208) | public static string DesktopWallpaperFromIndex( int index )
    method SearchDesktop (line 225) | public static int SearchDesktop( string partialName )
    method Create (line 243) | public static Desktop Create()
    method Remove (line 249) | public void Remove( Desktop? fallback = null )
    method RemoveAll (line 275) | public static void RemoveAll()
    method Move (line 281) | public void Move( int index )
    method SetName (line 287) | public void SetName( string name )
    method SetWallpaperPath (line 298) | public void SetWallpaperPath( string path )
    method SetAllWallpaperPaths (line 311) | public static void SetAllWallpaperPaths( string path )
    method MakeVisible (line 318) | public void MakeVisible()
    method MoveWindow (line 324) | public void MoveWindow( IntPtr hWnd )
    method MoveActiveWindow (line 362) | public void MoveActiveWindow()
    method HasWindow (line 368) | public bool HasWindow( IntPtr hWnd )
    method IsWindowPinned (line 375) | public static bool IsWindowPinned( IntPtr hWnd )
    method PinWindow (line 382) | public static void PinWindow( IntPtr hWnd )
    method UnpinWindow (line 394) | public static void UnpinWindow( IntPtr hWnd )
    method IsApplicationPinned (line 406) | public static bool IsApplicationPinned( IntPtr hWnd )
    method PinApplication (line 413) | public static void PinApplication( IntPtr hWnd )
    method UnpinApplication (line 425) | public static void UnpinApplication( IntPtr hWnd )
    method FromId (line 438) | public static Desktop? FromId( Guid guid )

FILE: VirtualDesktop/VirtualDesktop11_23H2/VirtualDesktopManager.cs
  class DesktopManager (line 19) | public static class DesktopManager
    method DesktopManager (line 28) | static DesktopManager()
    method ResetDesktopManager (line 34) | public static void ResetDesktopManager()
    method Init (line 39) | private static void Init()
    method GetDesktopCount (line 63) | public static int GetDesktopCount()
    method GetDesktop (line 76) | public static IVirtualDesktop GetDesktop( int index )
    method GetDesktopIndex (line 87) | internal static int GetDesktopIndex( IVirtualDesktop desktop )
    method GetApplicationView (line 108) | internal static IApplicationView GetApplicationView( this IntPtr hWnd )
    method GetAppId (line 115) | internal static string GetAppId( IntPtr hWnd )
    method GetViewCount (line 122) | public static int GetViewCount()
    class DisposableNotification (line 139) | private class DisposableNotification : IDisposable
      method Dispose (line 144) | public void Dispose()
    class EventProxy (line 153) | private class EventProxy : IVirtualDesktopNotification
      method ViewVirtualDesktopChanged (line 155) | public void ViewVirtualDesktopChanged( IApplicationView pView )
      method CurrentVirtualDesktopChanged (line 160) | public void CurrentVirtualDesktopChanged( IVirtualDesktop pDesktopOl...
      method VirtualDesktopCreated (line 165) | public void VirtualDesktopCreated( IVirtualDesktop pDesktop )
      method VirtualDesktopDestroyBegin (line 170) | public void VirtualDesktopDestroyBegin( IVirtualDesktop pDesktopDest...
      method VirtualDesktopDestroyFailed (line 175) | public void VirtualDesktopDestroyFailed( IVirtualDesktop pDesktopDes...
      method VirtualDesktopDestroyed (line 180) | public void VirtualDesktopDestroyed( IVirtualDesktop pDesktopDestroy...
      method VirtualDesktopMoved (line 186) | public void VirtualDesktopMoved( IVirtualDesktop pDesktop, int nInde...
      method VirtualDesktopRenamed (line 192) | public void VirtualDesktopRenamed( IVirtualDesktop pDesktop, IntPtr ...
      method VirtualDesktopRenamed (line 198) | public void VirtualDesktopRenamed( IVirtualDesktop pDesktop, string ...
      method VirtualDesktopWallpaperChanged (line 205) | public void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop...
      method VirtualDesktopWallpaperChanged (line 211) | public void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop...
      method VirtualDesktopSwitched (line 216) | public void VirtualDesktopSwitched( IVirtualDesktop pDesktop )
      method RemoteVirtualDesktopConnected (line 221) | public void RemoteVirtualDesktopConnected( IVirtualDesktop pDesktop )
  class VirtualDesktopRenamedEventArgs (line 228) | public class VirtualDesktopRenamedEventArgs : EventArgs
    method VirtualDesktopRenamedEventArgs (line 230) | public VirtualDesktopRenamedEventArgs( IVirtualDesktop desktop, string...
  class VirtualDesktopWallpaperChangedEventArgs (line 240) | public class VirtualDesktopWallpaperChangedEventArgs : EventArgs
    method VirtualDesktopWallpaperChangedEventArgs (line 242) | public VirtualDesktopWallpaperChangedEventArgs( IVirtualDesktop deskto...
  class VirtualDesktopChangedEventArgs (line 253) | public class VirtualDesktopChangedEventArgs : EventArgs
    method VirtualDesktopChangedEventArgs (line 255) | public VirtualDesktopChangedEventArgs( IVirtualDesktop oldDesktop, IVi...
  class VirtualDesktopMovedEventArgs (line 265) | public class VirtualDesktopMovedEventArgs : EventArgs
    method VirtualDesktopMovedEventArgs (line 267) | public VirtualDesktopMovedEventArgs( IVirtualDesktop desktop, int oldI...
  class VirtualDesktopDestroyEventArgs (line 279) | public class VirtualDesktopDestroyEventArgs : EventArgs
    method VirtualDesktopDestroyEventArgs (line 281) | public VirtualDesktopDestroyEventArgs( IVirtualDesktop destroyed, IVir...

FILE: VirtualDesktop/VirtualDesktop11_23H2_3085/COM.cs
  class Guids (line 16) | internal static class Guids
  type Size (line 25) | [StructLayout( LayoutKind.Sequential )]
  type Rect (line 32) | [StructLayout( LayoutKind.Sequential )]
  type APPLICATION_VIEW_CLOAK_TYPE (line 41) | public enum APPLICATION_VIEW_CLOAK_TYPE : int
  type APPLICATION_VIEW_COMPATIBILITY_POLICY (line 48) | public enum APPLICATION_VIEW_COMPATIBILITY_POLICY : int
  type IApplicationView (line 57) | [ComImport]
    method GetIIdsSlot (line 62) | void GetIIdsSlot();
    method GetRuntimeClassNameSlot (line 63) | void GetRuntimeClassNameSlot();
    method GetTrustLevelSlot (line 64) | void GetTrustLevelSlot();
    method SetFocus (line 65) | int  SetFocus();
    method SwitchTo (line 66) | int  SwitchTo();
    method TryInvokeBack (line 67) | int  TryInvokeBack( IntPtr /* IAsyncCallback* */ callback );
    method GetThumbnailWindow (line 68) | int  GetThumbnailWindow( out IntPtr hWnd );
    method GetMonitor (line 69) | int  GetMonitor( out         IntPtr /* IImmersiveMonitor */ immersiveM...
    method GetVisibility (line 70) | int  GetVisibility( out      int visibility );
    method SetCloak (line 71) | int  SetCloak( APPLICATION_VIEW_CLOAK_TYPE cloakType, int unknown );
    method GetPosition (line 72) | int  GetPosition( ref Guid guid /* GUID for IApplicationViewPosition *...
    method SetPosition (line 73) | int  SetPosition( ref IntPtr /* IApplicationViewPosition* */ position );
    method InsertAfterWindow (line 74) | int  InsertAfterWindow( IntPtr hWnd );
    method GetExtendedFramePosition (line 75) | int  GetExtendedFramePosition( out                              Rect r...
    method GetAppUserModelId (line 76) | int  GetAppUserModelId( [MarshalAs( UnmanagedType.LPWStr )] out string...
    method SetAppUserModelId (line 77) | int  SetAppUserModelId( string id );
    method IsEqualByAppUserModelId (line 78) | int  IsEqualByAppUserModelId( string id, out int result );
    method GetViewState (line 79) | int  GetViewState( out uint state );
    method SetViewState (line 80) | int  SetViewState( uint state );
    method GetNeediness (line 81) | int  GetNeediness( out               int neediness );
    method GetLastActivationTimestamp (line 82) | int  GetLastActivationTimestamp( out ulong timestamp );
    method SetLastActivationTimestamp (line 83) | int  SetLastActivationTimestamp( ulong timestamp );
    method GetVirtualDesktopId (line 84) | int  GetVirtualDesktopId( out Guid guid );
    method SetVirtualDesktopId (line 85) | int  SetVirtualDesktopId( ref Guid guid );
    method GetShowInSwitchers (line 86) | int  GetShowInSwitchers( out  int flag );
    method SetShowInSwitchers (line 87) | int  SetShowInSwitchers( int flag );
    method GetScaleFactor (line 88) | int  GetScaleFactor( out             int factor );
    method CanReceiveInput (line 89) | int  CanReceiveInput( out            bool canReceiveInput );
    method GetCompatibilityPolicyType (line 90) | int  GetCompatibilityPolicyType( out APPLICATION_VIEW_COMPATIBILITY_PO...
    method SetCompatibilityPolicyType (line 91) | int  SetCompatibilityPolicyType( APPLICATION_VIEW_COMPATIBILITY_POLICY...
    method GetSizeConstraints (line 92) | int  GetSizeConstraints( IntPtr /* IImmersiveMonitor* */ monitor, out ...
    method GetSizeConstraintsForDpi (line 93) | int  GetSizeConstraintsForDpi( uint uint1, out Size size1, out Size si...
    method SetSizeConstraintsForDpi (line 94) | int  SetSizeConstraintsForDpi( ref uint uint1, ref Size size1, ref Siz...
    method OnMinSizePreferencesUpdated (line 95) | int  OnMinSizePreferencesUpdated( IntPtr hWnd );
    method ApplyOperation (line 96) | int  ApplyOperation( IntPtr /* IApplicationViewOperation* */ operation );
    method IsTray (line 97) | int  IsTray( out                  bool isTray );
    method IsInHighZOrderBand (line 98) | int  IsInHighZOrderBand( out      bool isInHighZOrderBand );
    method IsSplashScreenPresented (line 99) | int  IsSplashScreenPresented( out bool isSplashScreenPresented );
    method Flash (line 100) | int  Flash();
    method GetRootSwitchableOwner (line 101) | int  GetRootSwitchableOwner( out                              IApplica...
    method EnumerateOwnershipTree (line 102) | int  EnumerateOwnershipTree( out                              IObjectA...
    method GetEnterpriseId (line 103) | int  GetEnterpriseId( [MarshalAs( UnmanagedType.LPWStr )] out string  ...
    method IsMirrored (line 104) | int  IsMirrored( out                                          bool    ...
    method Unknown1 (line 105) | int  Unknown1( out                                            int     ...
    method Unknown2 (line 106) | int  Unknown2( out                                            int     ...
    method Unknown3 (line 107) | int  Unknown3( out                                            int     ...
    method Unknown4 (line 108) | int  Unknown4( out                                            int     ...
    method Unknown5 (line 109) | int  Unknown5( out                                            int     ...
    method Unknown6 (line 110) | int  Unknown6( int                                                    ...
    method Unknown7 (line 111) | int  Unknown7();
    method Unknown8 (line 112) | int  Unknown8( out int   unknown );
    method Unknown9 (line 113) | int  Unknown9( int       unknown );
    method Unknown10 (line 114) | int  Unknown10( int      unknownX, int unknownY );
    method Unknown11 (line 115) | int  Unknown11( int      unknown );
    method Unknown12 (line 116) | int  Unknown12( out Size size1 );
  type IApplicationViewCollection (line 119) | [ComImport]
    method GetViews (line 124) | int  GetViews( out         IObjectArray array );
    method GetViewsByZOrder (line 125) | int  GetViewsByZOrder( out IObjectArray array );
    method GetViewsByAppUserModelId (line 126) | int  GetViewsByAppUserModelId( string   id,          out IObjectArray ...
    method GetViewForHWnd (line 127) | int  GetViewForHWnd( IntPtr             hWnd,        out IApplicationV...
    method GetViewForApplication (line 128) | int  GetViewForApplication( object      application, out IApplicationV...
    method GetViewForAppUserModelId (line 129) | int  GetViewForAppUserModelId( string   id,          out IApplicationV...
    method GetViewInFocus (line 130) | int  GetViewInFocus( out IntPtr         view );
    method Unknown1 (line 131) | int  Unknown1( out       IntPtr         view );
    method RefreshCollection (line 132) | void RefreshCollection();
    method RegisterForApplicationViewChanges (line 133) | int  RegisterForApplicationViewChanges( object listener, out int cooki...
    method UnregisterForApplicationViewChanges (line 134) | int  UnregisterForApplicationViewChanges( int  cookie );
  type IVirtualDesktop (line 137) | [ComImport]
    method IsViewVisible (line 142) | bool IsViewVisible( IApplicationView view );
    method GetId (line 143) | Guid GetId();
    method GetString (line 146) | public void GetString( out IntPtr hstr );
    method GetName (line 148) | [return: MarshalAs( UnmanagedType.HString )]
    method GetWallpaperPath (line 152) | [return: MarshalAs( UnmanagedType.HString )]
    method IsRemote (line 155) | bool IsRemote();
  type IVirtualDesktopManagerInternal (line 158) | [ComImport]
    method GetCount (line 163) | int             GetCount();
    method MoveViewToDesktop (line 164) | void            MoveViewToDesktop( IApplicationView   view, IVirtualDe...
    method CanViewMoveDesktops (line 165) | bool            CanViewMoveDesktops( IApplicationView view );
    method GetCurrentDesktop (line 166) | IVirtualDesktop GetCurrentDesktop();
    method GetDesktops (line 167) | void            GetDesktops( out IObjectArray desktops );
    method GetAdjacentDesktop (line 169) | [PreserveSig]
    method SwitchDesktop (line 172) | void            SwitchDesktop( IVirtualDesktop desktop );
    method CreateDesktop (line 173) | IVirtualDesktop CreateDesktop();
    method MoveDesktop (line 174) | void            MoveDesktop( IVirtualDesktop                         d...
    method RemoveDesktop (line 175) | void            RemoveDesktop( IVirtualDesktop                       d...
    method FindDesktop (line 176) | IVirtualDesktop FindDesktop( ref Guid                                d...
    method GetDesktopSwitchIncludeExcludeViews (line 177) | void            GetDesktopSwitchIncludeExcludeViews( IVirtualDesktop d...
    method SetName (line 179) | void SetName( IVirtualDesktop      desktop, IntPtr newName );
    method SetWallpaper (line 180) | void SetWallpaper( IVirtualDesktop desktop, IntPtr path );
    method SetDesktopName (line 182) | void SetDesktopName( IVirtualDesktop      desktop, [MarshalAs( Unmanag...
    method SetDesktopWallpaper (line 183) | void SetDesktopWallpaper( IVirtualDesktop desktop, [MarshalAs( Unmanag...
    method UpdateWallpaperPathForAllDesktops (line 185) | void UpdateWallpaperPathForAllDesktops( [MarshalAs( UnmanagedType.HStr...
    method CopyDesktopState (line 186) | void CopyDesktopState( IApplicationView                               ...
    method CreateRemoteDesktop (line 187) | void CreateRemoteDesktop( [MarshalAs( UnmanagedType.HString )] string ...
    method SwitchRemoteDesktop (line 188) | void SwitchRemoteDesktop( IVirtualDesktop                             ...
    method SwitchDesktopWithAnimation (line 189) | void SwitchDesktopWithAnimation( IVirtualDesktop                      ...
    method GetLastActiveDesktop (line 190) | void GetLastActiveDesktop( out IVirtualDesktop                        ...
    method WaitForAnimationToComplete (line 191) | void WaitForAnimationToComplete();
  type IVirtualDesktopManager (line 194) | [ComImport]
    method IsWindowOnCurrentVirtualDesktop (line 199) | bool IsWindowOnCurrentVirtualDesktop( IntPtr topLevelWindow );
    method GetWindowDesktopId (line 200) | Guid GetWindowDesktopId( IntPtr              topLevelWindow );
    method MoveWindowToDesktop (line 201) | void MoveWindowToDesktop( IntPtr             topLevelWindow, ref Guid ...
  type IVirtualDesktopPinnedApps (line 204) | [ComImport]
    method IsAppIdPinned (line 209) | bool IsAppIdPinned( string          appId );
    method PinAppID (line 210) | void PinAppID( string               appId );
    method UnpinAppID (line 211) | void UnpinAppID( string             appId );
    method IsViewPinned (line 212) | bool IsViewPinned( IApplicationView applicationView );
    method PinView (line 213) | void PinView( IApplicationView      applicationView );
    method UnpinView (line 214) | void UnpinView( IApplicationView    applicationView );
  type IObjectArray (line 217) | [ComImport]
    method GetCount (line 222) | void GetCount( out int count );
    method GetAt (line 223) | void GetAt( int        index, ref Guid iid, [MarshalAs( UnmanagedType....
  type IServiceProvider10 (line 226) | [ComImport]
    method QueryService (line 231) | [return: MarshalAs( UnmanagedType.IUnknown )]
  type IVirtualDesktopNotification (line 235) | [ComImport]
    method VirtualDesktopCreated (line 240) | void VirtualDesktopCreated( IVirtualDesktop       pDesktop );
    method VirtualDesktopDestroyBegin (line 241) | void VirtualDesktopDestroyBegin( IVirtualDesktop  pDesktopDestroyed, I...
    method VirtualDesktopDestroyFailed (line 242) | void VirtualDesktopDestroyFailed( IVirtualDesktop pDesktopDestroyed, I...
    method VirtualDesktopDestroyed (line 243) | void VirtualDesktopDestroyed( IVirtualDesktop     pDesktopDestroyed, I...
    method VirtualDesktopMoved (line 244) | void VirtualDesktopMoved( IVirtualDesktop         pDesktop,          i...
    method VirtualDesktopRenamed (line 246) | void VirtualDesktopRenamed( IVirtualDesktop pDesktop, IntPtr newName );
    method VirtualDesktopRenamed (line 248) | void VirtualDesktopRenamed( IVirtualDesktop pDesktop, [MarshalAs( Unma...
    method ViewVirtualDesktopChanged (line 250) | void ViewVirtualDesktopChanged( IApplicationView   pView );
    method CurrentVirtualDesktopChanged (line 251) | void CurrentVirtualDesktopChanged( IVirtualDesktop pDesktopOld, IVirtu...
    method VirtualDesktopWallpaperChanged (line 254) | void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop, IntPtr ...
    method VirtualDesktopWallpaperChanged (line 256) | void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop, [Marsha...
    method VirtualDesktopSwitched (line 258) | void VirtualDesktopSwitched( IVirtualDesktop        pDesktop );
    method RemoteVirtualDesktopConnected (line 259) | void RemoteVirtualDesktopConnected( IVirtualDesktop pDesktop );
  type IVirtualDesktopNotificationService (line 262) | [ComImport]
    method Register (line 267) | uint Register( IVirtualDesktopNotification pNotification );
    method Unregister (line 268) | void Unregister( uint                      dwCookie );

FILE: VirtualDesktop/VirtualDesktop11_23H2_3085/VirtualDesktop.cs
  class Desktop (line 21) | public class Desktop : IDesktop
    method Desktop (line 25) | private Desktop( IVirtualDesktop desktop )
    method GetWindowThreadProcessId (line 84) | [DllImport( "user32.dll" )]
    method GetForegroundWindow (line 88) | [DllImport( "user32.dll" )]
    method GetHashCode (line 91) | public override int GetHashCode()
    method Equals (line 97) | public override bool Equals( object? obj )
    method FromIndex (line 103) | public static Desktop FromIndex( int index )
    method FromWindow (line 109) | public static Desktop FromWindow( IntPtr hWnd )
    method SysIndexFromDesktop (line 117) | public static int SysIndexFromDesktop( Desktop desktop )
    method DesktopNameFromDesktop (line 124) | public static string DesktopNameFromDesktop( Desktop desktop )
    method DesktopNameFromIndex (line 153) | public static string DesktopNameFromIndex( int index )
    method HasDesktopNameFromIndex (line 182) | public static bool HasDesktopNameFromIndex( int index )
    method DesktopWallpaperFromIndex (line 208) | public static string DesktopWallpaperFromIndex( int index )
    method SearchDesktop (line 225) | public static int SearchDesktop( string partialName )
    method Create (line 243) | public static Desktop Create()
    method Remove (line 249) | public void Remove( Desktop? fallback = null )
    method RemoveAll (line 275) | public static void RemoveAll()
    method Move (line 281) | public void Move( int index )
    method SetName (line 287) | public void SetName( string name )
    method SetWallpaperPath (line 298) | public void SetWallpaperPath( string path )
    method SetAllWallpaperPaths (line 311) | public static void SetAllWallpaperPaths( string path )
    method MakeVisible (line 318) | public void MakeVisible()
    method MoveWindow (line 324) | public void MoveWindow( IntPtr hWnd )
    method MoveActiveWindow (line 362) | public void MoveActiveWindow()
    method HasWindow (line 368) | public bool HasWindow( IntPtr hWnd )
    method IsWindowPinned (line 375) | public static bool IsWindowPinned( IntPtr hWnd )
    method PinWindow (line 382) | public static void PinWindow( IntPtr hWnd )
    method UnpinWindow (line 394) | public static void UnpinWindow( IntPtr hWnd )
    method IsApplicationPinned (line 406) | public static bool IsApplicationPinned( IntPtr hWnd )
    method PinApplication (line 413) | public static void PinApplication( IntPtr hWnd )
    method UnpinApplication (line 425) | public static void UnpinApplication( IntPtr hWnd )
    method FromId (line 438) | public static Desktop? FromId( Guid guid )

FILE: VirtualDesktop/VirtualDesktop11_23H2_3085/VirtualDesktopManager.cs
  class DesktopManager (line 19) | public static class DesktopManager
    method DesktopManager (line 28) | static DesktopManager()
    method ResetDesktopManager (line 34) | public static void ResetDesktopManager()
    method Init (line 39) | private static void Init()
    method GetDesktopCount (line 63) | public static int GetDesktopCount()
    method GetDesktop (line 76) | public static IVirtualDesktop GetDesktop( int index )
    method GetDesktopIndex (line 87) | internal static int GetDesktopIndex( IVirtualDesktop desktop )
    method GetApplicationView (line 108) | internal static IApplicationView GetApplicationView( this IntPtr hWnd )
    method GetAppId (line 115) | internal static string GetAppId( IntPtr hWnd )
    method GetViewCount (line 122) | public static int GetViewCount()
    class DisposableNotification (line 139) | private class DisposableNotification : IDisposable
      method Dispose (line 144) | public void Dispose()
    class EventProxy (line 153) | private class EventProxy : IVirtualDesktopNotification
      method ViewVirtualDesktopChanged (line 155) | public void ViewVirtualDesktopChanged( IApplicationView pView )
      method CurrentVirtualDesktopChanged (line 160) | public void CurrentVirtualDesktopChanged( IVirtualDesktop pDesktopOl...
      method VirtualDesktopCreated (line 165) | public void VirtualDesktopCreated( IVirtualDesktop pDesktop )
      method VirtualDesktopDestroyBegin (line 170) | public void VirtualDesktopDestroyBegin( IVirtualDesktop pDesktopDest...
      method VirtualDesktopDestroyFailed (line 175) | public void VirtualDesktopDestroyFailed( IVirtualDesktop pDesktopDes...
      method VirtualDesktopDestroyed (line 180) | public void VirtualDesktopDestroyed( IVirtualDesktop pDesktopDestroy...
      method VirtualDesktopMoved (line 186) | public void VirtualDesktopMoved( IVirtualDesktop pDesktop, int nInde...
      method VirtualDesktopRenamed (line 192) | public void VirtualDesktopRenamed( IVirtualDesktop pDesktop, IntPtr ...
      method VirtualDesktopRenamed (line 198) | public void VirtualDesktopRenamed( IVirtualDesktop pDesktop, string ...
      method VirtualDesktopWallpaperChanged (line 205) | public void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop...
      method VirtualDesktopWallpaperChanged (line 211) | public void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop...
      method VirtualDesktopSwitched (line 216) | public void VirtualDesktopSwitched( IVirtualDesktop pDesktop )
      method RemoteVirtualDesktopConnected (line 221) | public void RemoteVirtualDesktopConnected( IVirtualDesktop pDesktop )
  class VirtualDesktopRenamedEventArgs (line 228) | public class VirtualDesktopRenamedEventArgs : EventArgs
    method VirtualDesktopRenamedEventArgs (line 230) | public VirtualDesktopRenamedEventArgs( IVirtualDesktop desktop, string...
  class VirtualDesktopWallpaperChangedEventArgs (line 240) | public class VirtualDesktopWallpaperChangedEventArgs : EventArgs
    method VirtualDesktopWallpaperChangedEventArgs (line 242) | public VirtualDesktopWallpaperChangedEventArgs( IVirtualDesktop deskto...
  class VirtualDesktopChangedEventArgs (line 253) | public class VirtualDesktopChangedEventArgs : EventArgs
    method VirtualDesktopChangedEventArgs (line 255) | public VirtualDesktopChangedEventArgs( IVirtualDesktop oldDesktop, IVi...
  class VirtualDesktopMovedEventArgs (line 265) | public class VirtualDesktopMovedEventArgs : EventArgs
    method VirtualDesktopMovedEventArgs (line 267) | public VirtualDesktopMovedEventArgs( IVirtualDesktop desktop, int oldI...
  class VirtualDesktopDestroyEventArgs (line 279) | public class VirtualDesktopDestroyEventArgs : EventArgs
    method VirtualDesktopDestroyEventArgs (line 281) | public VirtualDesktopDestroyEventArgs( IVirtualDesktop destroyed, IVir...

FILE: VirtualDesktop/VirtualDesktop11_24H2/COM.cs
  class Guids (line 16) | internal static class Guids
  type Size (line 25) | [StructLayout( LayoutKind.Sequential )]
  type Rect (line 32) | [StructLayout( LayoutKind.Sequential )]
  type APPLICATION_VIEW_CLOAK_TYPE (line 41) | public enum APPLICATION_VIEW_CLOAK_TYPE : int
  type APPLICATION_VIEW_COMPATIBILITY_POLICY (line 48) | public enum APPLICATION_VIEW_COMPATIBILITY_POLICY : int
  type IApplicationView (line 57) | [ComImport]
    method GetIIdsSlot (line 62) | void GetIIdsSlot();
    method GetRuntimeClassNameSlot (line 63) | void GetRuntimeClassNameSlot();
    method GetTrustLevelSlot (line 64) | void GetTrustLevelSlot();
    method SetFocus (line 65) | int  SetFocus();
    method SwitchTo (line 66) | int  SwitchTo();
    method TryInvokeBack (line 67) | int  TryInvokeBack( IntPtr /* IAsyncCallback* */ callback );
    method GetThumbnailWindow (line 68) | int  GetThumbnailWindow( out IntPtr hWnd );
    method GetMonitor (line 69) | int  GetMonitor( out         IntPtr /* IImmersiveMonitor */ immersiveM...
    method GetVisibility (line 70) | int  GetVisibility( out      int visibility );
    method SetCloak (line 71) | int  SetCloak( APPLICATION_VIEW_CLOAK_TYPE cloakType, int unknown );
    method GetPosition (line 72) | int  GetPosition( ref Guid guid /* GUID for IApplicationViewPosition *...
    method SetPosition (line 73) | int  SetPosition( ref IntPtr /* IApplicationViewPosition* */ position );
    method InsertAfterWindow (line 74) | int  InsertAfterWindow( IntPtr hWnd );
    method GetExtendedFramePosition (line 75) | int  GetExtendedFramePosition( out                              Rect r...
    method GetAppUserModelId (line 76) | int  GetAppUserModelId( [MarshalAs( UnmanagedType.LPWStr )] out string...
    method SetAppUserModelId (line 77) | int  SetAppUserModelId( string id );
    method IsEqualByAppUserModelId (line 78) | int  IsEqualByAppUserModelId( string id, out int result );
    method GetViewState (line 79) | int  GetViewState( out uint state );
    method SetViewState (line 80) | int  SetViewState( uint state );
    method GetNeediness (line 81) | int  GetNeediness( out               int neediness );
    method GetLastActivationTimestamp (line 82) | int  GetLastActivationTimestamp( out ulong timestamp );
    method SetLastActivationTimestamp (line 83) | int  SetLastActivationTimestamp( ulong timestamp );
    method GetVirtualDesktopId (line 84) | int  GetVirtualDesktopId( out Guid guid );
    method SetVirtualDesktopId (line 85) | int  SetVirtualDesktopId( ref Guid guid );
    method GetShowInSwitchers (line 86) | int  GetShowInSwitchers( out  int flag );
    method SetShowInSwitchers (line 87) | int  SetShowInSwitchers( int flag );
    method GetScaleFactor (line 88) | int  GetScaleFactor( out             int factor );
    method CanReceiveInput (line 89) | int  CanReceiveInput( out            bool canReceiveInput );
    method GetCompatibilityPolicyType (line 90) | int  GetCompatibilityPolicyType( out APPLICATION_VIEW_COMPATIBILITY_PO...
    method SetCompatibilityPolicyType (line 91) | int  SetCompatibilityPolicyType( APPLICATION_VIEW_COMPATIBILITY_POLICY...
    method GetSizeConstraints (line 92) | int  GetSizeConstraints( IntPtr /* IImmersiveMonitor* */ monitor, out ...
    method GetSizeConstraintsForDpi (line 93) | int  GetSizeConstraintsForDpi( uint uint1, out Size size1, out Size si...
    method SetSizeConstraintsForDpi (line 94) | int  SetSizeConstraintsForDpi( ref uint uint1, ref Size size1, ref Siz...
    method OnMinSizePreferencesUpdated (line 95) | int  OnMinSizePreferencesUpdated( IntPtr hWnd );
    method ApplyOperation (line 96) | int  ApplyOperation( IntPtr /* IApplicationViewOperation* */ operation );
    method IsTray (line 97) | int  IsTray( out                  bool isTray );
    method IsInHighZOrderBand (line 98) | int  IsInHighZOrderBand( out      bool isInHighZOrderBand );
    method IsSplashScreenPresented (line 99) | int  IsSplashScreenPresented( out bool isSplashScreenPresented );
    method Flash (line 100) | int  Flash();
    method GetRootSwitchableOwner (line 101) | int  GetRootSwitchableOwner( out                              IApplica...
    method EnumerateOwnershipTree (line 102) | int  EnumerateOwnershipTree( out                              IObjectA...
    method GetEnterpriseId (line 103) | int  GetEnterpriseId( [MarshalAs( UnmanagedType.LPWStr )] out string  ...
    method IsMirrored (line 104) | int  IsMirrored( out                                          bool    ...
    method Unknown1 (line 105) | int  Unknown1( out                                            int     ...
    method Unknown2 (line 106) | int  Unknown2( out                                            int     ...
    method Unknown3 (line 107) | int  Unknown3( out                                            int     ...
    method Unknown4 (line 108) | int  Unknown4( out                                            int     ...
    method Unknown5 (line 109) | int  Unknown5( out                                            int     ...
    method Unknown6 (line 110) | int  Unknown6( int                                                    ...
    method Unknown7 (line 111) | int  Unknown7();
    method Unknown8 (line 112) | int  Unknown8( out int   unknown );
    method Unknown9 (line 113) | int  Unknown9( int       unknown );
    method Unknown10 (line 114) | int  Unknown10( int      unknownX, int unknownY );
    method Unknown11 (line 115) | int  Unknown11( int      unknown );
    method Unknown12 (line 116) | int  Unknown12( out Size size1 );
  type IApplicationViewCollection (line 119) | [ComImport]
    method GetViews (line 124) | int  GetViews( out         IObjectArray array );
    method GetViewsByZOrder (line 125) | int  GetViewsByZOrder( out IObjectArray array );
    method GetViewsByAppUserModelId (line 126) | int  GetViewsByAppUserModelId( string   id,          out IObjectArray ...
    method GetViewForHWnd (line 127) | int  GetViewForHWnd( IntPtr             hWnd,        out IApplicationV...
    method GetViewForApplication (line 128) | int  GetViewForApplication( object      application, out IApplicationV...
    method GetViewForAppUserModelId (line 129) | int  GetViewForAppUserModelId( string   id,          out IApplicationV...
    method GetViewInFocus (line 130) | int  GetViewInFocus( out IntPtr         view );
    method Unknown1 (line 131) | int  Unknown1( out       IntPtr         view );
    method RefreshCollection (line 132) | void RefreshCollection();
    method RegisterForApplicationViewChanges (line 133) | int  RegisterForApplicationViewChanges( object listener, out int cooki...
    method UnregisterForApplicationViewChanges (line 134) | int  UnregisterForApplicationViewChanges( int  cookie );
  type IVirtualDesktop (line 137) | [ComImport]
    method IsViewVisible (line 142) | bool IsViewVisible( IApplicationView view );
    method GetId (line 143) | Guid GetId();
    method GetString (line 146) | public void GetString( out IntPtr hstr );
    method GetName (line 148) | [return: MarshalAs( UnmanagedType.HString )]
    method GetWallpaperPath (line 152) | [return: MarshalAs( UnmanagedType.HString )]
    method IsRemote (line 155) | bool IsRemote();
  type IVirtualDesktopManagerInternal (line 158) | [ComImport]
    method GetCount (line 163) | int             GetCount();
    method MoveViewToDesktop (line 164) | void            MoveViewToDesktop( IApplicationView   view, IVirtualDe...
    method CanViewMoveDesktops (line 165) | bool            CanViewMoveDesktops( IApplicationView view );
    method GetCurrentDesktop (line 166) | IVirtualDesktop GetCurrentDesktop();
    method GetDesktops (line 167) | void            GetDesktops( out IObjectArray desktops );
    method GetAdjacentDesktop (line 169) | [PreserveSig]
    method SwitchDesktop (line 172) | void            SwitchDesktop( IVirtualDesktop                      de...
    method SwitchDesktopAndMoveForegroundView (line 173) | void            SwitchDesktopAndMoveForegroundView( IVirtualDesktop de...
    method CreateDesktop (line 174) | IVirtualDesktop CreateDesktop();
    method MoveDesktop (line 175) | void            MoveDesktop( IVirtualDesktop                         d...
    method RemoveDesktop (line 176) | void            RemoveDesktop( IVirtualDesktop                       d...
    method FindDesktop (line 177) | IVirtualDesktop FindDesktop( ref Guid                                d...
    method GetDesktopSwitchIncludeExcludeViews (line 178) | void            GetDesktopSwitchIncludeExcludeViews( IVirtualDesktop d...
    method SetName (line 180) | void SetName( IVirtualDesktop      desktop, IntPtr newName );
    method SetWallpaper (line 181) | void SetWallpaper( IVirtualDesktop desktop, IntPtr path );
    method SetDesktopName (line 183) | void SetDesktopName( IVirtualDesktop      desktop, [MarshalAs( Unmanag...
    method SetDesktopWallpaper (line 184) | void SetDesktopWallpaper( IVirtualDesktop desktop, [MarshalAs( Unmanag...
    method UpdateWallpaperPathForAllDesktops (line 186) | void UpdateWallpaperPathForAllDesktops( [MarshalAs( UnmanagedType.HStr...
    method CopyDesktopState (line 187) | void CopyDesktopState( IApplicationView                               ...
    method CreateRemoteDesktop (line 188) | void CreateRemoteDesktop( [MarshalAs( UnmanagedType.HString )] string ...
    method SwitchRemoteDesktop (line 189) | void SwitchRemoteDesktop( IVirtualDesktop                             ...
    method SwitchDesktopWithAnimation (line 190) | void SwitchDesktopWithAnimation( IVirtualDesktop                      ...
    method GetLastActiveDesktop (line 191) | void GetLastActiveDesktop( out IVirtualDesktop                        ...
    method WaitForAnimationToComplete (line 192) | void WaitForAnimationToComplete();
  type IVirtualDesktopManager (line 195) | [ComImport]
    method IsWindowOnCurrentVirtualDesktop (line 200) | bool IsWindowOnCurrentVirtualDesktop( IntPtr topLevelWindow );
    method GetWindowDesktopId (line 201) | Guid GetWindowDesktopId( IntPtr              topLevelWindow );
    method MoveWindowToDesktop (line 202) | void MoveWindowToDesktop( IntPtr             topLevelWindow, ref Guid ...
  type IVirtualDesktopPinnedApps (line 205) | [ComImport]
    method IsAppIdPinned (line 210) | bool IsAppIdPinned( string          appId );
    method PinAppID (line 211) | void PinAppID( string               appId );
    method UnpinAppID (line 212) | void UnpinAppID( string             appId );
    method IsViewPinned (line 213) | bool IsViewPinned( IApplicationView applicationView );
    method PinView (line 214) | void PinView( IApplicationView      applicationView );
    method UnpinView (line 215) | void UnpinView( IApplicationView    applicationView );
  type IObjectArray (line 218) | [ComImport]
    method GetCount (line 223) | void GetCount( out int count );
    method GetAt (line 224) | void GetAt( int        index, ref Guid iid, [MarshalAs( UnmanagedType....
  type IServiceProvider10 (line 227) | [ComImport]
    method QueryService (line 232) | [return: MarshalAs( UnmanagedType.IUnknown )]
  type IVirtualDesktopNotification (line 236) | [ComImport]
    method VirtualDesktopCreated (line 241) | void VirtualDesktopCreated( IVirtualDesktop       pDesktop );
    method VirtualDesktopDestroyBegin (line 242) | void VirtualDesktopDestroyBegin( IVirtualDesktop  pDesktopDestroyed, I...
    method VirtualDesktopDestroyFailed (line 243) | void VirtualDesktopDestroyFailed( IVirtualDesktop pDesktopDestroyed, I...
    method VirtualDesktopDestroyed (line 244) | void VirtualDesktopDestroyed( IVirtualDesktop     pDesktopDestroyed, I...
    method VirtualDesktopMoved (line 245) | void VirtualDesktopMoved( IVirtualDesktop         pDesktop,          i...
    method VirtualDesktopRenamed (line 247) | void VirtualDesktopRenamed( IVirtualDesktop pDesktop, IntPtr newName );
    method VirtualDesktopRenamed (line 249) | void VirtualDesktopRenamed( IVirtualDesktop pDesktop, [MarshalAs( Unma...
    method ViewVirtualDesktopChanged (line 251) | void ViewVirtualDesktopChanged( IApplicationView   pView );
    method CurrentVirtualDesktopChanged (line 252) | void CurrentVirtualDesktopChanged( IVirtualDesktop pDesktopOld, IVirtu...
    method VirtualDesktopWallpaperChanged (line 255) | void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop, IntPtr ...
    method VirtualDesktopWallpaperChanged (line 257) | void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop, [Marsha...
    method VirtualDesktopSwitched (line 259) | void VirtualDesktopSwitched( IVirtualDesktop        pDesktop );
    method RemoteVirtualDesktopConnected (line 260) | void RemoteVirtualDesktopConnected( IVirtualDesktop pDesktop );
  type IVirtualDesktopNotificationService (line 263) | [ComImport]
    method Register (line 268) | uint Register( IVirtualDesktopNotification pNotification );
    method Unregister (line 269) | void Unregister( uint                      dwCookie );

FILE: VirtualDesktop/VirtualDesktop11_24H2/VirtualDesktop.cs
  class Desktop (line 22) | public class Desktop : IDesktop
    method Desktop (line 26) | private Desktop( IVirtualDesktop desktop )
    method GetWindowThreadProcessId (line 85) | [DllImport( "user32.dll" )]
    method GetForegroundWindow (line 89) | [DllImport( "user32.dll" )]
    method GetHashCode (line 92) | public override int GetHashCode()
    method Equals (line 98) | public override bool Equals( object? obj )
    method FromIndex (line 104) | public static Desktop FromIndex( int index )
    method FromWindow (line 110) | public static Desktop? FromWindow( IntPtr hWnd )
    method SysIndexFromDesktop (line 119) | public static int SysIndexFromDesktop( Desktop desktop )
    method DesktopNameFromDesktop (line 126) | public static string DesktopNameFromDesktop( Desktop desktop )
    method DesktopNameFromIndex (line 155) | public static string DesktopNameFromIndex( int index )
    method HasDesktopNameFromIndex (line 184) | public static bool HasDesktopNameFromIndex( int index )
    method DesktopWallpaperFromIndex (line 210) | public static string DesktopWallpaperFromIndex( int index )
    method SearchDesktop (line 227) | public static int SearchDesktop( string partialName )
    method Create (line 245) | public static Desktop Create()
    method Remove (line 251) | public void Remove( Desktop? fallback = null )
    method RemoveAll (line 277) | public static void RemoveAll()
    method Move (line 283) | public void Move( int index )
    method SetName (line 289) | public void SetName( string name )
    method SetWallpaperPath (line 300) | public void SetWallpaperPath( string path )
    method SetAllWallpaperPaths (line 313) | public static void SetAllWallpaperPaths( string path )
    method MakeVisible (line 320) | public void MakeVisible()
    method MoveWindow (line 326) | public void MoveWindow( IntPtr hWnd )
    method MoveActiveWindow (line 364) | public void MoveActiveWindow()
    method HasWindow (line 370) | public bool HasWindow( IntPtr hWnd )
    method IsWindowPinned (line 377) | public static bool IsWindowPinned( IntPtr hWnd )
    method PinWindow (line 384) | public static void PinWindow( IntPtr hWnd )
    method UnpinWindow (line 396) | public static void UnpinWindow( IntPtr hWnd )
    method IsApplicationPinned (line 408) | public static bool IsApplicationPinned( IntPtr hWnd )
    method PinApplication (line 415) | public static void PinApplication( IntPtr hWnd )
    method UnpinApplication (line 427) | public static void UnpinApplication( IntPtr hWnd )
    method FromId (line 440) | public static Desktop? FromId( Guid guid )
    method GetDesktopByGuid (line 445) | private static Desktop? GetDesktopByGuid( Guid guid )

FILE: VirtualDesktop/VirtualDesktop11_24H2/VirtualDesktopManager.cs
  class DesktopManager (line 19) | public static class DesktopManager
    method DesktopManager (line 28) | static DesktopManager()
    method ResetDesktopManager (line 34) | public static void ResetDesktopManager()
    method Init (line 39) | private static void Init()
    method GetDesktopCount (line 63) | public static int GetDesktopCount()
    method GetDesktop (line 76) | public static IVirtualDesktop GetDesktop( int index )
    method GetDesktopIndex (line 87) | internal static int GetDesktopIndex( IVirtualDesktop desktop )
    method GetApplicationView (line 108) | internal static IApplicationView GetApplicationView( this IntPtr hWnd )
    method GetAppId (line 115) | internal static string GetAppId( IntPtr hWnd )
    method GetViewCount (line 122) | public static int GetViewCount()
    class DisposableNotification (line 139) | private class DisposableNotification : IDisposable
      method Dispose (line 144) | public void Dispose()
    class EventProxy (line 153) | private class EventProxy : IVirtualDesktopNotification
      method ViewVirtualDesktopChanged (line 155) | public void ViewVirtualDesktopChanged( IApplicationView pView )
      method CurrentVirtualDesktopChanged (line 160) | public void CurrentVirtualDesktopChanged( IVirtualDesktop pDesktopOl...
      method VirtualDesktopCreated (line 165) | public void VirtualDesktopCreated( IVirtualDesktop pDesktop )
      method VirtualDesktopDestroyBegin (line 170) | public void VirtualDesktopDestroyBegin( IVirtualDesktop pDesktopDest...
      method VirtualDesktopDestroyFailed (line 175) | public void VirtualDesktopDestroyFailed( IVirtualDesktop pDesktopDes...
      method VirtualDesktopDestroyed (line 180) | public void VirtualDesktopDestroyed( IVirtualDesktop pDesktopDestroy...
      method VirtualDesktopMoved (line 186) | public void VirtualDesktopMoved( IVirtualDesktop pDesktop, int nInde...
      method VirtualDesktopRenamed (line 192) | public void VirtualDesktopRenamed( IVirtualDesktop pDesktop, IntPtr ...
      method VirtualDesktopRenamed (line 198) | public void VirtualDesktopRenamed( IVirtualDesktop pDesktop, string ...
      method VirtualDesktopWallpaperChanged (line 205) | public void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop...
      method VirtualDesktopWallpaperChanged (line 211) | public void VirtualDesktopWallpaperChanged( IVirtualDesktop pDesktop...
      method VirtualDesktopSwitched (line 216) | public void VirtualDesktopSwitched( IVirtualDesktop pDesktop )
      method RemoteVirtualDesktopConnected (line 221) | public void RemoteVirtualDesktopConnected( IVirtualDesktop pDesktop )
  class VirtualDesktopRenamedEventArgs (line 228) | public class VirtualDesktopRenamedEventArgs : EventArgs
    method VirtualDesktopRenamedEventArgs (line 230) | public VirtualDesktopRenamedEventArgs( IVirtualDesktop desktop, string...
  class VirtualDesktopWallpaperChangedEventArgs (line 240) | public class VirtualDesktopWallpaperChangedEventArgs : EventArgs
    method VirtualDesktopWallpaperChangedEventArgs (line 242) | public VirtualDesktopWallpaperChangedEventArgs( IVirtualDesktop deskto...
  class VirtualDesktopChangedEventArgs (line 253) | public class VirtualDesktopChangedEventArgs : EventArgs
    method VirtualDesktopChangedEventArgs (line 255) | public VirtualDesktopChangedEventArgs( IVirtualDesktop oldDesktop, IVi...
  class VirtualDesktopMovedEventArgs (line 265) | public class VirtualDesktopMovedEventArgs : EventArgs
    method VirtualDesktopMovedEventArgs (line 267) | public VirtualDesktopMovedEventArgs( IVirtualDesktop desktop, int oldI...
  class VirtualDesktopDestroyEventArgs (line 279) | public class VirtualDesktopDestroyEventArgs : EventArgs
    method VirtualDesktopDestroyEventArgs (line 281) | public VirtualDesktopDestroyEventArgs( IVirtualDesktop destroyed, IVir...

FILE: VirtualDesktopWrapper/DesktopManagerWrapper.cs
  class DesktopManagerWrapper (line 18) | public static partial class DesktopManagerWrapper
    method GetIdByIndex (line 20) | public static Guid GetIdByIndex( int index )
    method GetViewCount (line 37) | public static int GetViewCount()
    method ResetDesktopManager (line 47) | public static void ResetDesktopManager()

FILE: VirtualDesktopWrapper/DesktopManagerWrapper.events.cs
  class DesktopManagerWrapper (line 22) | public static partial class DesktopManagerWrapper
    method RegisterVirtualDesktopEvents (line 26) | public static void RegisterVirtualDesktopEvents( WallpaperChanged wc10...
    method RegisterVirtualDesktopEvents10 (line 38) | private static void RegisterVirtualDesktopEvents10( WallpaperChanged wc )
    method RegisterVirtualDesktopEvents11 (line 67) | private static void RegisterVirtualDesktopEvents11( Action<Guid, strin...
    method ListenVirtualDesktopEvents (line 110) | public static async void ListenVirtualDesktopEvents()

FILE: VirtualDesktopWrapper/DesktopManagerWrapper.wallpaper.cs
  class DesktopManagerWrapper (line 16) | public static partial class DesktopManagerWrapper
    method WatchWallpaperEvents (line 25) | private static void WatchWallpaperEvents( WallpaperChanged wc )

FILE: VirtualDesktopWrapper/DesktopWrapper.cs
  class DesktopWrapper (line 20) | public static partial class DesktopWrapper
    method RemoveDesktopByGuid (line 29) | public static bool RemoveDesktopByGuid( Guid guid )
    method PinWindow (line 54) | public static void PinWindow( IntPtr handle, bool isPinned )
    method PinApp (line 72) | public static void PinApp( IntPtr handle, bool isPinned )
    method IsWindowPinned (line 90) | public static bool IsWindowPinned( IntPtr handle )
    method IsApplicationPinned (line 95) | public static bool IsApplicationPinned( IntPtr handle )
    method DesktopNameFromIndex (line 100) | public static string DesktopNameFromIndex( int sysIndex )
    method DesktopNameFromGuid (line 105) | public static string DesktopNameFromGuid( Guid guid )
    method IndexFromGuid (line 119) | public static int IndexFromGuid( Guid guid )
    method MoveWindowToDesktop (line 133) | public static void MoveWindowToDesktop( IntPtr handle, int sysIndex )
    method MakeVisibleByIndex (line 147) | public static void MakeVisibleByIndex( int sysIndex )
    method MakeVisibleByGuid (line 159) | public static void MakeVisibleByGuid( Guid guid, bool? forceFocusForeg...
    method SetNameByGuid (line 177) | public static void SetNameByGuid( Guid guid, string name )
    method GuidFromWindow (line 189) | public static Guid GuidFromWindow( IntPtr handle )

FILE: VirtualDesktopWrapper/Wrapper11.cs
  class DesktopWrapper (line 20) | public static partial class DesktopWrapper
    method Create (line 22) | public static void Create()

FILE: VirtualSpace/App.xaml.cs
  class App (line 37) | public partial class App : Application
    method OnStartup (line 42) | protected override void OnStartup( StartupEventArgs e )
    method OnExit (line 82) | protected override void OnExit( ExitEventArgs e )
    method ReleaseMutex (line 90) | public void ReleaseMutex()
    method SingleInstanceCheck (line 97) | private static bool SingleInstanceCheck()
    method TryMutex (line 112) | public static bool TryMutex()
    method CreateCanvas (line 118) | private MainWindow CreateCanvas( StartupEventArgs args )
    method Bootstrap (line 124) | private static void Bootstrap()
    method BootInfo (line 137) | private static void BootInfo()
    method LogForVersion (line 157) | private static void LogForVersion()

FILE: VirtualSpace/Factory/AppControllerFactory.cs
  class AppControllerFactory (line 16) | public static class AppControllerFactory
    method Create (line 18) | public static IAppController Create( string name = "WPF", Collection<R...

FILE: VirtualSpace/MainWindow.filter.cs
  class MainWindow (line 19) | public partial class MainWindow
    method ToggleWindowFilter (line 21) | private void ToggleWindowFilter()
    method ShowFilterWindow (line 41) | private void ShowFilterWindow()
    method HideFilterWindow (line 51) | private static void HideFilterWindow( bool clearKeyword = true )

FILE: VirtualSpace/MainWindow.hotkeys.cs
  class MainWindow (line 28) | public partial class MainWindow
    method RegisterHotKey (line 33) | private void RegisterHotKey( IntPtr hWnd )
    method EnableMouseHook (line 82) | private void EnableMouseHook()
    method DisableMouseHook (line 88) | private static void DisableMouseHook()
    method KeyboardHookCallback (line 94) | private IntPtr KeyboardHookCallback( int nCode, IntPtr wParam, IntPtr ...
    method MouseHookCallback (line 197) | private IntPtr MouseHookCallback( int nCode, IntPtr wParam, IntPtr lPa...
    method Window_Closing (line 234) | private void Window_Closing( object sender, CancelEventArgs e )

FILE: VirtualSpace/MainWindow.layout.cs
  class MainWindow (line 26) | public partial class MainWindow
    method ResetMainGrid (line 34) | public static void ResetMainGrid()
    method ResetMainGridForSingleDesktop (line 79) | public static void ResetMainGridForSingleDesktop( int vdIndex )
    method UpdateHoverBorder (line 136) | public static void UpdateHoverBorder( int hover )
    method RenderCellBorder (line 150) | public static void RenderCellBorder()
    method GetCellLocationByMatrixIndex (line 183) | public static Point GetCellLocationByMatrixIndex( int index )
    method GetCellSizeByMatrixIndex (line 193) | public static Size GetCellSizeByMatrixIndex( int index )
    method InCell (line 198) | public static int InCell( Point p )
    method InitCellBorderShadowEffect (line 219) | private void InitCellBorderShadowEffect()

FILE: VirtualSpace/MainWindow.main.cs
  class MainWindow (line 27) | public partial class MainWindow
    method MainWindow (line 50) | private MainWindow()
    method GetMainWindow (line 66) | public static MainWindow GetMainWindow()
    method Create (line 71) | public static MainWindow Create( IAppController ac )
    method NotifyDesktopManagerReset (line 94) | public static void NotifyDesktopManagerReset()
    method OnSourceInitialized (line 99) | protected override void OnSourceInitialized( EventArgs e )
    method Window_Loaded (line 109) | private async void Window_Loaded( object sender, RoutedEventArgs e )
    method Bootstrap (line 126) | private void Bootstrap()
    method FakeHide (line 135) | public void FakeHide()
    method BringToTop (line 140) | private static void BringToTop( int processId = 0 )
    method BringToTopForCurrentVd (line 160) | private static void BringToTopForCurrentVd( int processId = 0 )
    method TopShow (line 168) | private static void TopShow()
    method CheckScreenArea (line 177) | private static void CheckScreenArea()
    method HideAll (line 185) | public static void HideAll()
    method IsShowing (line 192) | public static bool IsShowing()
    method UpdateVDIndexOnTrayIcon (line 197) | public static void UpdateVDIndexOnTrayIcon( Guid guid )
    method TryRunAsAdmin (line 210) | private static void TryRunAsAdmin()
    method RestartApp (line 215) | private static void RestartApp( bool runas = false )
    method Quit (line 238) | public static void Quit()

FILE: VirtualSpace/MainWindow.message.cs
  class MainWindow (line 30) | public partial class MainWindow
    method RegisterSystemMessages (line 34) | private void RegisterSystemMessages()
    method Window_MouseDown (line 43) | private void Window_MouseDown( object sender, MouseButtonEventArgs e )
    method WndProc (line 90) | private IntPtr WndProc( IntPtr hWnd, int msg, IntPtr wParam, IntPtr lP...
    method SwitchToDesktopById (line 310) | private static void SwitchToDesktopById( Guid guid )
    method SwitchDesktopByDirection (line 319) | private void SwitchDesktopByDirection( IntPtr lParam )

FILE: VirtualSpace/MainWindow.style.cs
  class MainWindow (line 17) | public partial class MainWindow
    method FixStyle (line 32) | private void FixStyle()
    method EnableBlur (line 44) | private void EnableBlur()

FILE: VirtualSpace/MainWindow.xaml.cs
  class MainWindow (line 19) | public partial class MainWindow : Window

FILE: VirtualSpace/Program.cs
  class Program (line 21) | public static class Program
    method Main (line 23) | [STAThread]
    method AutoResolver (line 35) | private static Assembly? AutoResolver( object? sender, ResolveEventArg...

FILE: VirtualSpace/Tools/SystemTool.cs
  class SystemTool (line 16) | public static class SystemTool
    method VersionCheck (line 18) | public static bool VersionCheck()

FILE: VirtualSpace/Tools/TrayIcon.cs
  class TrayIcon (line 22) | public static class TrayIcon
    method TrayIcon (line 31) | static TrayIcon()
    method InitTrayIcon (line 43) | public static void InitTrayIcon()
    method UpdateVDIndexOnTrayIcon (line 48) | public static void UpdateVDIndexOnTrayIcon( string index )
    method PaintVdIndexWithLogo (line 94) | private static void PaintVdIndexWithLogo( string index )
    method SetLang (line 145) | public static void SetLang()
    method Show (line 153) | public static void Show()

FILE: VirtualSpace/Tools/WindowTool.cs
  class WindowTool (line 20) | public static class WindowTool
    method MoveWindowToScreen (line 22) | private static void MoveWindowToScreen( IntPtr hWnd, Screen destScreen )
    method MoveWindowToScreen (line 59) | public static void MoveWindowToScreen( IntPtr hWnd, int index )
    method MoveWindowToScreen (line 68) | public static void MoveWindowToScreen( IntPtr hWnd, string deviceName )
    method GetZOrderByHandle (line 87) | public static int GetZOrderByHandle( IntPtr hWnd )
    method ActiveWindow (line 99) | public static void ActiveWindow( IntPtr hWnd, int desktopIndex )
    method ActiveWindow (line 119) | public static void ActiveWindow( IntPtr hWnd, Guid guid )
    method ActiveWindowReserve (line 140) | private static void ActiveWindowReserve( IntPtr hWnd )
    method IsModalWindow (line 153) | public static bool IsModalWindow( IntPtr hWnd )
    method IsPopupToolWindow (line 165) | public static bool IsPopupToolWindow( IntPtr hWnd )

FILE: VirtualSpace/VirtualDesktop/Daemon.cs
  class Daemon (line 32) | internal static class Daemon
    method WaitForAction (line 40) | private static async void WaitForAction()
    method Start (line 114) | public static async void Start()
    method SetCanRun (line 126) | public static void SetCanRun( bool isCanRun )
    method SetRunLevel (line 138) | public static void SetRunLevel( int i )
    method StartDaemon (line 143) | private static void StartDaemon()
    method WindowHandleFilter (line 163) | private static bool WindowHandleFilter( IntPtr hWnd, int lParam )
    method SendToCheckingRule (line 197) | private static void SendToCheckingRule( IntPtr hWnd, string title, str...

FILE: VirtualSpace/VirtualDesktop/DragWindow.Designer.cs
  class DragWindow (line 14) | partial class DragWindow
    method Dispose (line 25) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 39) | private void InitializeComponent()

FILE: VirtualSpace/VirtualDesktop/DragWindow.cs
  class DragWindow (line 18) | public partial class DragWindow : Form
    method DragWindow (line 20) | private DragWindow()
    method CreateAndShow (line 27) | public static DragWindow CreateAndShow( int width, int height )

FILE: VirtualSpace/VirtualDesktop/Filters.cs
  class Filters (line 20) | public static class Filters
    method IsCloaked (line 45) | public static bool IsCloaked( IntPtr handle )

FILE: VirtualSpace/VirtualDesktop/Manager.arrangement.cs
  class VirtualDesktopManager (line 18) | internal static partial class VirtualDesktopManager
    method GetMatrixIndexByVdIndex (line 20) | public static int GetMatrixIndexByVdIndex( int vdIndex )
    method GetVdIndexByMatrixIndex (line 29) | public static int GetVdIndexByMatrixIndex( int matrixIndex )

FILE: VirtualSpace/VirtualDesktop/Manager.cs
  class VirtualDesktopManager (line 23) | internal static partial class VirtualDesktopManager
    method VisibleWindowFilter (line 32) | private static bool VisibleWindowFilter( IntPtr hWnd, int lParam )
    method GetVisibleWindows (line 59) | private static List<VisibleWindow> GetVisibleWindows()
    method ShowVisibleWindowsForDesktops (line 66) | public static void ShowVisibleWindowsForDesktops( List<VirtualDesktopW...
    method RefreshThumbs (line 130) | public static void RefreshThumbs( IntPtr h, params VirtualDesktopWindo...
    method ShowAllVirtualDesktops (line 143) | public static void ShowAllVirtualDesktops()
    method HideAllVirtualDesktops (line 152) | public static void HideAllVirtualDesktops()
    method GetAllVirtualDesktops (line 163) | public static List<VirtualDesktopWindow> GetAllVirtualDesktops()
    method GetCurrentVdw (line 168) | public static VirtualDesktopWindow GetCurrentVdw()

FILE: VirtualSpace/VirtualDesktop/Manager.events.cs
  class VirtualDesktopManager (line 28) | internal static partial class VirtualDesktopManager
    method RegisterVirtualDesktopEvents (line 30) | public static void RegisterVirtualDesktopEvents()

FILE: VirtualSpace/VirtualDesktop/Manager.layout.cs
  class VirtualDesktopManager (line 26) | internal static partial class VirtualDesktopManager
    method SyncVirtualDesktops (line 31) | private static void SyncVirtualDesktops()
    method GetCommonVdwSize (line 64) | private static Size GetCommonVdwSize()
    method ReOrder (line 73) | private static void ReOrder( bool needSort = false )
    method UpdateMainView (line 110) | private static void UpdateMainView( VirtualDesktopNotification? vdn = ...
    method FixLayout (line 130) | public static void FixLayout()
    method InitLayout (line 145) | public static async Task InitLayout()
    method UpdateVdwBackground (line 180) | public static void UpdateVdwBackground()
    method SaveOrder (line 187) | public static void SaveOrder( List<Guid>? newOrder = null )
    method GetVdIndexByGuid (line 206) | public static int GetVdIndexByGuid( Guid guid )
    method Bootstrap (line 211) | public static void Bootstrap()

FILE: VirtualSpace/VirtualDesktop/Menus.cs
  class Menus (line 26) | public static class Menus
    method ThumbCtm (line 30) | public static void ThumbCtm( MenuInfo mi )
    method VdCtm (line 141) | public static void VdCtm( MenuInfo mi )
    method CloseContextMenu (line 261) | public static void CloseContextMenu()
  class MenuInfo (line 267) | public class MenuInfo

FILE: VirtualSpace/VirtualDesktop/Navigation.cs
  class Navigation (line 17) | public static class Navigation
    method CalculateTargetIndex (line 19) | public static int CalculateTargetIndex( int vdCount, int fromIndex, Ke...
    method IndexFromRowCol (line 140) | public static int IndexFromRowCol( int n, (int R, int C) currentRC, in...
    method RowColFromIndex (line 176) | public static (int R, int C) RowColFromIndex( int n, int logicIndex, i...

FILE: VirtualSpace/VirtualDesktop/VirtualDesktopWindow.Designer.cs
  class VirtualDesktopWindow (line 14) | partial class VirtualDesktopWindow
    method Dispose (line 25) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 40) | private void InitializeComponent()

FILE: VirtualSpace/VirtualDesktop/VirtualDesktopWindow.Mouse.cs
  class VirtualDesktopWindow (line 29) | public partial class VirtualDesktopWindow
    method ResetOnlyOneStatus (line 39) | public void ResetOnlyOneStatus()
    method VirtualDesktopWindow_MouseDown (line 44) | private void VirtualDesktopWindow_MouseDown( object sender, MouseEvent...
    method IsOutBounds (line 60) | private static bool IsOutBounds( Point location )
    method VirtualDesktopWindow_MouseMove (line 65) | private void VirtualDesktopWindow_MouseMove( object sender, MouseEvent...
    method VirtualDesktopWindow_MouseUp (line 112) | private void VirtualDesktopWindow_MouseUp( object sender, MouseEventAr...
    method HoverOnDesktop (line 301) | private int HoverOnDesktop( object sender, MouseEventArgs e )
    method MakeVisible (line 345) | private void MakeVisible()
    method Swap (line 351) | private static void Swap<T>( IList<T> list, int indexA, int indexB )
    method CloseSelectedWindow (line 356) | public async void CloseSelectedWindow( VisibleWindow vw )
    method MakeTheOnlyOne (line 393) | public void MakeTheOnlyOne( int pId = 0 )

FILE: VirtualSpace/VirtualDesktop/VirtualDesktopWindow.Thumbs.cs
  class VirtualDesktopWindow (line 19) | public partial class VirtualDesktopWindow
    method AddWindow (line 21) | public void AddWindow( VisibleWindow wnd )
    method ClearVisibleWindows (line 26) | public void ClearVisibleWindows()
    method ShowThumbnails (line 32) | public void ShowThumbnails()
    method ScaleCenter (line 107) | private static DWM_THUMBNAIL_PROPERTIES ScaleCenter( IntPtr thumb, REC...
    method UpdateThumbnail (line 146) | private static void UpdateThumbnail( IntPtr thumb, DWM_THUMBNAIL_PROPE...
    method ReleaseThumbnails (line 151) | private void ReleaseThumbnails()

FILE: VirtualSpace/VirtualDesktop/VirtualDesktopWindow.cs
  class VirtualDesktopWindow (line 29) | public partial class VirtualDesktopWindow : Form
    method VirtualDesktopWindow (line 39) | private VirtualDesktopWindow()
    method WndProc (line 57) | protected override void WndProc( ref Message m )
    method Create (line 80) | public static VirtualDesktopWindow Create( int index, Guid guid, Size ...
    method SetOwner (line 101) | private void SetOwner( MainWindow owner )
    method UpdateWallpaper (line 121) | public void UpdateWallpaper()
    method VirtualDesktopWindow_Closing (line 133) | private void VirtualDesktopWindow_Closing( object? sender, FormClosing...
    method RealClose (line 138) | public void RealClose()
    method ShowByVdIndex (line 145) | private void ShowByVdIndex()
    method CachedWallpaperInfo (line 181) | private (bool isCached, string path, Color? color) CachedWallpaperInfo()
    method DrawImage (line 193) | private static void DrawImage( PaintEventArgs e, Wallpaper wp, int wid...
    method InitPaint (line 207) | private void InitPaint( (bool isCached, string path, Color? color) wpI...
    method NormalPaint (line 254) | private void NormalPaint( (bool isCached, string path, Color? color) w...
    method RefreshThumbs (line 295) | private void RefreshThumbs( object? o, EventArgs e )
    method pbWallpaper_Paint (line 302) | private void pbWallpaper_Paint( object sender, PaintEventArgs e )
    method UpdateDesktopName (line 339) | public void UpdateDesktopName( string name )

FILE: VirtualSpace/VirtualDesktop/VisibleWindow.cs
  class VisibleWindow (line 18) | public class VisibleWindow
    method VisibleWindow (line 20) | public VisibleWindow( string title, string classname, IntPtr handle )
    method SetValidArea (line 39) | internal void SetValidArea( DWM_THUMBNAIL_PROPERTIES props )

FILE: VirtualSpace/WindowFilter.xaml.cs
  class WindowFilter (line 22) | public partial class WindowFilter : Window
    method WindowFilter (line 34) | private WindowFilter()
    method GetInstance (line 39) | public static WindowFilter GetInstance( IntPtr handle )
    method FilterTimerOnElapsed (line 61) | private static void FilterTimerOnElapsed( object? sender, ElapsedEvent...
    method OnSourceInitialized (line 68) | protected override void OnSourceInitialized( EventArgs e )
    method SetFocus (line 74) | public void SetFocus()
    method ClearAndHide (line 82) | public void ClearAndHide( bool clearKeyword = true )

FILE: WPF/ControlPanel/App.xaml.cs
  class App (line 8) | public partial class App : Application

FILE: WPF/ControlPanel/Converters/CheckBoxConverter.cs
  class CheckBoxConverter (line 17) | public class CheckBoxConverter : IValueConverter
    method Convert (line 19) | public object Convert( object value, Type targetType, object parameter...
    method ConvertBack (line 24) | public object ConvertBack( object value, Type targetType, object param...

FILE: WPF/ControlPanel/Converters/CheckBoxStateByIndexConverter.cs
  class CheckBoxStateByIndexConverter (line 17) | public class CheckBoxStateByIndexConverter : IValueConverter
    method Convert (line 19) | public object Convert( object value, Type targetType, object parameter...
    method ConvertBack (line 24) | public object ConvertBack( object value, Type targetType, object param...

FILE: WPF/ControlPanel/Converters/DrawerStateMutexConverter.cs
  class DrawerStateMutexConverter (line 18) | public class DrawerStateMutexConverter : IValueConverter
    method Convert (line 20) | public object Convert( object value, Type targetType, object parameter...
    method ConvertBack (line 25) | public object ConvertBack( object value, Type targetType, object param...

FILE: WPF/ControlPanel/Converters/LocConverter.cs
  class LocConverter (line 17) | public class LocConverter : IValueConverter
    method Convert (line 19) | public object Convert( object value, Type targetType, object parameter...
    method ConvertBack (line 24) | public object ConvertBack( object value, Type targetType, object param...

FILE: WPF/ControlPanel/Converters/MouseActionConverter.cs
  class MouseActionConverter (line 19) | public class MouseActionConverter : IMultiValueConverter
    method Convert (line 21) | public object Convert( object[] values, Type targetType, object parame...
    method ConvertBack (line 45) | public object[] ConvertBack( object value, Type[] targetTypes, object ...

FILE: WPF/ControlPanel/Converters/RuleFieldConverter.cs
  class RuleFieldConverter (line 23) | public class RuleFieldConverter : IMultiValueConverter
    method Convert (line 25) | public object Convert( object[] values, Type targetType, object parame...
    method ForValue (line 52) | private static int ForValue( object[] values )
    method ForCombobox (line 83) | private static int ForCombobox( object[] values )
    method ForCheckBox (line 114) | private static bool ForCheckBox( object[] values )
    method ForTextBox (line 140) | private static string ForTextBox( object[] values )
    method ConvertBack (line 166) | public object[] ConvertBack( object value, Type[] targetTypes, object ...

FILE: WPF/ControlPanel/Converters/RuleFieldFromControlNameConverter.cs
  class RuleFieldFromControlNameConverter (line 17) | public class RuleFieldFromControlNameConverter : IValueConverter
    method Convert (line 19) | public object Convert( object value, Type targetType, object parameter...
    method ConvertBack (line 25) | public object ConvertBack( object value, Type targetType, object param...

FILE: WPF/ControlPanel/Converters/RuleFormDefaultValueConverter.cs
  class RuleFormDefaultValueConverter (line 17) | public class RuleFormDefaultValueConverter : IValueConverter
    method Convert (line 19) | public object Convert( object value, Type targetType, object parameter...
    method ConvertBack (line 25) | public object ConvertBack( object value, Type targetType, object param...

FILE: WPF/ControlPanel/Converters/RuleHeaderByStateConverter.cs
  class RuleHeaderByStateConverter (line 17) | public class RuleHeaderByStateConverter : IValueConverter
    method Convert (line 19) | public object Convert( object value, Type targetType, object parameter...
    method ConvertBack (line 25) | public object ConvertBack( object value, Type targetType, object param...

FILE: WPF/ControlPanel/Converters/ThemeConverter.cs
  class ThemeConverter (line 17) | public class ThemeConverter : IValueConverter
    method Convert (line 19) | public object Convert( object value, Type targetType, object parameter...
    method ConvertBack (line 24) | public object ConvertBack( object value, Type targetType, object param...

FILE: WPF/ControlPanel/Converters/UIButtonStyleByVdAConverter.cs
  class UIButtonStyleByVdAConverter (line 18) | public class UIButtonStyleByVdAConverter : IMultiValueConverter
    method Convert (line 20) | public object Convert( object[] values, Type targetType, object parame...
    method ConvertBack (line 33) | public object[] ConvertBack( object value, Type[] targetTypes, object ...
    method GetFlag (line 38) | private static bool GetFlag( int num )

FILE: WPF/ControlPanel/Converters/WidthHeightConverter.cs
  class WidthHeightConverter (line 17) | public class WidthHeightConverter : IValueConverter
    method Convert (line 19) | public object Convert( object value, Type targetType, object parameter...
    method ConvertBack (line 24) | public object ConvertBack( object value, Type targetTypes, object para...

FILE: WPF/ControlPanel/ExportResourceDictionary.cs
  class ExportResourceDictionary (line 17) | public partial class ExportResourceDictionary
    method ExportResourceDictionary (line 21) | public ExportResourceDictionary()

FILE: WPF/ControlPanel/Factories/NavBarItem.cs
  class NavBarItem (line 19) | public class NavBarItem : TabItem
    method NavBarItem (line 32) | private NavBarItem( string tag, PackIconKind kind, string locKey )
    method InitNavBar (line 59) | public static void InitNavBar( TabControl tc )

FILE: WPF/ControlPanel/Factories/PageFactory.cs
  class PageFactory (line 18) | public static class PageFactory
    method GetPage (line 20) | public static UserControl GetPage( (PackIconKind kind, string locKey) ...

FILE: WPF/ControlPanel/MainWindow.logs.cs
  class MainWindow (line 22) | public partial class MainWindow
    method PickLogAndWrite (line 27) | private async void PickLogAndWrite( CancellationToken stoppingToken )

FILE: WPF/ControlPanel/MainWindow.theme.cs
  class MainWindow (line 19) | public partial class MainWindow
    method GetThemeInfo (line 21) | private (Color pColor, Color sColor, IBaseTheme theme) GetThemeInfo()
    method InitTheme (line 55) | private void InitTheme()
    method UpdateTheme (line 70) | public static void UpdateTheme()

FILE: WPF/ControlPanel/MainWindow.xaml.cs
  class MainWindow (line 31) | public partial class MainWindow : Window, IAppController
    method MainWindow (line 38) | public MainWindow()
    method ForceLoad (line 54) | public void ForceLoad()
    method OnSourceInitialized (line 66) | protected override void OnSourceInitialized( EventArgs e )
    method BringToTop (line 74) | public void BringToTop()
    method SetMainWindowHandle (line 97) | public void SetMainWindowHandle( IntPtr handle )
    method Quit (line 102) | public void Quit()
    method RenderDesktopArrangementButtons (line 108) | public void RenderDesktopArrangementButtons( string selectedDa )
    method CreateRuleFromWindowHandle (line 113) | public void CreateRuleFromWindowHandle( IntPtr handle )
    method MainWindow_OnLoaded (line 119) | private void MainWindow_OnLoaded( object sender, RoutedEventArgs e )
    method MainWindow_OnClosing (line 125) | private void MainWindow_OnClosing( object? sender, CancelEventArgs e )
    method TryClose (line 132) | public static void TryClose()
    method TryQuit (line 137) | public static void TryQuit()
    method RestartApp (line 142) | public static void RestartApp( bool runas = false )
    method NavBar_OnSelectionChanged (line 163) | private void NavBar_OnSelectionChanged( object sender, SelectionChange...
    method SettingsButton_OnClick (line 171) | private void SettingsButton_OnClick( object sender, RoutedEventArgs e )

FILE: WPF/ControlPanel/Pages/Control.keyboard.cs
  class Control (line 27) | public partial class Control
    method KeyboardTreeView_OnSelectedItemChanged (line 29) | private void KeyboardTreeView_OnSelectedItemChanged( object sender, Ro...
    method LoadKeyboardTreeView (line 85) | private void LoadKeyboardTreeView()
    method GetGhk (line 142) | private static (string keyCode, GlobalHotKey.KeyModifiers keyModifiers...
    method SaveHotkey (line 179) | private void SaveHotkey( (string keyCode, GlobalHotKey.KeyModifiers ke...
    method RegHotkey (line 190) | private void RegHotkey( (string keyCode, GlobalHotKey.KeyModifiers key...
    method RegAndSave_OnClick (line 217) | private void RegAndSave_OnClick( object sender, RoutedEventArgs e )
    method ClearAndSave_OnClick (line 239) | private void ClearAndSave_OnClick( object sender, RoutedEventArgs e )
    method ShowTips (line 253) | private void ShowTips( Snackbar sb, string msg, int seconds = 1 )

FILE: WPF/ControlPanel/Pages/Control.mouse.cs
  class Control (line 19) | public partial class Control
    method DesktopActionBind_OnClick (line 21) | private void DesktopActionBind_OnClick( object sender, RoutedEventArgs...
    method WindowActionBind_OnClick (line 28) | private void WindowActionBind_OnClick( object sender, RoutedEventArgs e )
    method MouseActionBind (line 35) | private void MouseActionBind( MouseActionModel vm, string prefix, stri...

FILE: WPF/ControlPanel/Pages/Control.tree.cs
  class Control (line 20) | public partial class Control
    method GetNodePath (line 22) | private static Stack<TreeViewItem> GetNodePath( UIElement element, boo...
    method BuildTreeView (line 41) | private static void BuildTreeView( object node, object jsonDoc, (strin...

FILE: WPF/ControlPanel/Pages/Control.xaml.cs
  class Control (line 21) | public partial class Control
    method Control (line 25) | public Control()
    method Control (line 30) | private Control( string headerKey, PackIconKind iconKind ) : this()
    method SettingsOnLanguageChanged (line 47) | private void SettingsOnLanguageChanged( object? sender, EventArgs e )
    method VisitTreeViewItem (line 61) | private static void VisitTreeViewItem( TreeViewItem item )
    method Create (line 92) | public static Control Create( string headerKey, PackIconKind iconKind )

FILE: WPF/ControlPanel/Pages/Dialogs/ProfileNameDialog.xaml.cs
  class ProfileNameDialog (line 16) | public partial class ProfileNameDialog : UserControl
    method ProfileNameDialog (line 18) | public ProfileNameDialog()
    method ProfileNameDialog (line 24) | public ProfileNameDialog( string profileName ) : this()
    method SetErrors (line 31) | public void SetErrors( string errors )

FILE: WPF/ControlPanel/Pages/Dialogs/YesNoWithNote.xaml.cs
  class YesNoWithNote (line 16) | public partial class YesNoWithNote : UserControl
    method YesNoWithNote (line 18) | public YesNoWithNote()
    method YesNoWithNote (line 23) | public YesNoWithNote( string notes, PackIconKind? iconKind = null ) : ...

FILE: WPF/ControlPanel/Pages/General.xaml.cs
  class General (line 19) | public partial class General
    method General (line 24) | public General()
    method General (line 29) | private General( string headerKey, PackIconKind iconKind ) : this()
    method Create (line 38) | public static General Create( string headerKey, PackIconKind iconKind )
    method OpenTaskScheduler_OnClick (line 43) | private void OpenTaskScheduler_OnClick( object sender, RoutedEventArgs...

FILE: WPF/ControlPanel/Pages/Help.xaml.cs
  class Help (line 21) | public partial class Help : UserControl
    method Help (line 25) | private Help()
    method Hyperlink_OnClick (line 33) | private void Hyperlink_OnClick( object sender, RoutedEventArgs e )
    method AppInfo (line 46) | private void AppInfo()

FILE: WPF/ControlPanel/Pages/Logs.xaml.cs
  class Logs (line 27) | public partial class Logs
    method Logs (line 38) | private Logs()
    method Logs (line 43) | private Logs( string headerKey, PackIconKind iconKind ) : this()
    method Create (line 189) | public static Logs Create( string headerKey, PackIconKind iconKind )
    method Append (line 194) | public static void Append( string message, string type )
    method NotifyStaticPropertyChanged (line 224) | private static void NotifyStaticPropertyChanged( [CallerMemberName] st...
    method Clear_Click (line 229) | private void Clear_Click( object sender, RoutedEventArgs e )
    method TabItem_OnContextMenuOpening (line 244) | private void TabItem_OnContextMenuOpening( object sender, ContextMenuE...
    method ClearAll (line 252) | public static void ClearAll()
    method OpenLogsDir (line 262) | public static void OpenLogsDir()

FILE: WPF/ControlPanel/Pages/Menus/Commons/MenuContainer.xaml.cs
  class MenuContainer (line 23) | public partial class MenuContainer : UserControl
    method MenuContainer (line 25) | public MenuContainer()
    method CloseWindow_OnClick (line 33) | private void CloseWindow_OnClick( object sender, RoutedEventArgs e )
    method RestartApp_OnClick (line 38) | private void RestartApp_OnClick( object sender, RoutedEventArgs e )
    method Shutdown_OnClick (line 50) | private void Shutdown_OnClick( object sender, RoutedEventArgs e )
    method CheckAdmin (line 62) | private void CheckAdmin()
    method MenuItemRunAsAdmin_OnClick (line 86) | private void MenuItemRunAsAdmin_OnClick( object sender, RoutedEventArg...

FILE: WPF/ControlPanel/Pages/Menus/LogsMenu.xaml.cs
  class LogsMenu (line 17) | public partial class LogsMenu : UserControl
    method LogsMenu (line 19) | public LogsMenu()
    method clearAll_OnClick (line 25) | private void clearAll_OnClick( object sender, RoutedEventArgs e )
    method openLogsDir_OnClick (line 30) | private void openLogsDir_OnClick( object sender, RoutedEventArgs e )

FILE: WPF/ControlPanel/Pages/Plugins.xaml.cs
  class Plugins (line 21) | public partial class Plugins
    method Plugins (line 25) | private Plugins()
    method Plugins (line 30) | private Plugins( string headerKey, PackIconKind iconKind ) : this()
    method Create (line 38) | public static Plugins Create( string headerKey, PackIconKind iconKind )
    method ToggleButton_OnChecked (line 43) | private void ToggleButton_OnChecked( object sender, RoutedEventArgs e )
    method ToggleButton_OnUnchecked (line 55) | private void ToggleButton_OnUnchecked( object sender, RoutedEventArgs e )
    method Selector_OnSelectionChanged (line 67) | private void Selector_OnSelectionChanged( object sender, SelectionChan...

FILE: WPF/ControlPanel/Pages/Rules.ue.cs
  class Rules (line 22) | public partial class Rules
    method RuleList_OnLoaded (line 28) | private void RuleList_OnLoaded( object sender, RoutedEventArgs e )
    method NameFilter (line 41) | private bool NameFilter( object item )
    method TbNameFilter_OnTextChanged (line 59) | private void TbNameFilter_OnTextChanged( object sender, TextChangedEve...
    method RuleList_OnPreviewKeyDown (line 64) | private void RuleList_OnPreviewKeyDown( object sender, KeyEventArgs e )
    method SortSelectedColumn (line 77) | private void SortSelectedColumn( GridViewColumnHeader targetHeader, Li...
    method RuleList_OnColumnHeaderClick (line 111) | private void RuleList_OnColumnHeaderClick( object sender, RoutedEventA...

FILE: WPF/ControlPanel/Pages/Rules.xaml.cs
  class Rules (line 23) | public partial class Rules
    method Rules (line 27) | private Rules()
    method Rules (line 33) | private Rules( string headerKey, PackIconKind iconKind ) : this()
    method ReloadRules (line 45) | public static void ReloadRules()
    method HandleClick (line 51) | private void HandleClick()
    method ClickEventFromSubControl (line 56) | private void ClickEventFromSubControl( object sender, RoutedEventArgs e )
    method Create (line 72) | public static Rules Create( string headerKey, PackIconKind iconKind )
    method RuleList_OnSelectionChanged (line 77) | private void RuleList_OnSelectionChanged( object sender, SelectionChan...
    method BtnEditRule_OnClick (line 86) | private void BtnEditRule_OnClick( object sender, RoutedEventArgs e )
    method BtnNewRule_OnClick (line 96) | private void BtnNewRule_OnClick( object sender, RoutedEventArgs e )
    method BtnCloneRule_OnClick (line 111) | private void BtnCloneRule_OnClick( object sender, RoutedEventArgs e )
    method BtnDeleteRule_OnClick (line 135) | private void BtnDeleteRule_OnClick( object sender, RoutedEventArgs e )
    method RefreshRuleIds (line 144) | private static ExpressionTemplate RefreshRuleIds( ExpressionTemplate e...

FILE: WPF/ControlPanel/Pages/Settings.xaml.cs
  class Settings (line 25) | public partial class Settings
    method Settings (line 29) | private Settings()
    method Create (line 36) | public static Settings Create()
    method ChangeConfigPath_OnClick (line 41) | private void ChangeConfigPath_OnClick( object sender, RoutedEventArgs e )
    method ProfileClone_OnClick (line 53) | private async void ProfileClone_OnClick( object sender, RoutedEventArg...
    method CreateProfile (line 71) | private void CreateProfile( string profileName )
    method ProfileRename_OnClick (line 90) | private async void ProfileRename_OnClick( object sender, RoutedEventAr...
    method ProfileRemove_OnClick (line 103) | private async void ProfileRemove_OnClick( object sender, RoutedEventAr...
    method ClosingEventHandler (line 129) | private void ClosingEventHandler( object sender, DialogClosingEventArg...

FILE: WPF/ControlPanel/Pages/UI.xaml.cs
  class UI (line 20) | public partial class UI
    method UI (line 25) | public UI()
    method UI (line 30) | private UI( string headerKey, PackIconKind iconKind ) : this()
    method OnVdArrangementButtonClicked (line 40) | private static void OnVdArrangementButtonClicked( object sender, Route...
    method Create (line 51) | public static UI Create( string headerKey, PackIconKind iconKind )

FILE: WPF/ControlPanel/Pages/UserControls/RuleForm.xaml.cs
  class RuleForm (line 27) | public partial class RuleForm : UserControl
    method RuleForm (line 29) | public RuleForm()
    method Cbb_OnSelectionChanged (line 36) | private void Cbb_OnSelectionChanged( object sender, SelectionChangedEv...
    method BtnSave_OnClick (line 55) | private void BtnSave_OnClick( object sender, RoutedEventArgs e )
    method BuildRule (line 148) | private void BuildRule( CheckBox cb, ComboBox cbb, TextBox? tb, Expres...
    method BtnCloseDefBox_OnClick (line 180) | private void BtnCloseDefBox_OnClick( object sender, RoutedEventArgs e )

FILE: WPF/ControlPanel/Resources/Langs.Designer.cs
  class Langs (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Langs (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: WPF/ControlPanel/RuleEditorWindow.xaml.cs
  class RuleEditorWindow (line 25) | public partial class RuleEditorWindow
    method RuleEditorWindow (line 29) | private RuleEditorWindow()
    method Create (line 35) | public static RuleEditorWindow Create( IntPtr handle )
    method ClickEventFromSubControl (line 97) | private void ClickEventFromSubControl( object sender, RoutedEventArgs e )
    method RuleEditorWindow_OnClosing (line 113) | private void RuleEditorWindow_OnClosing( object? sender, CancelEventAr...

FILE: WPF/ControlPanel/Validation/Helper.cs
  class Helper (line 15) | public abstract class Helper
    method HasError (line 17) | public static bool HasError( DependencyProperty dp, params FrameworkEl...

FILE: WPF/ControlPanel/Validation/NotEmptyValidationRule.cs
  class NotEmptyValidationRule (line 17) | public class NotEmptyValidationRule : ValidationRule
    method Validate (line 19) | public override ValidationResult Validate( object? value, CultureInfo ...

FILE: WPF/ControlPanel/Validation/NumberRangeValidationRule.cs
  class NumberRangeValidationRule (line 16) | public class NumberRangeValidationRule : ValidationRule
 
Condensed preview — 313 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,596K chars).
[
  {
    "path": ".gitignore",
    "chars": 6633,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": "Bridge/Agent.cs",
    "chars": 1403,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Bridge/Behavior.cs",
    "chars": 1723,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Bridge/Bridge.csproj",
    "chars": 1578,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "Bridge/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Bridge/Channels.cs",
    "chars": 1290,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Bridge/Interfaces/IAppController.cs",
    "chars": 1092,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Bridge/Interfaces/IDesktop.cs",
    "chars": 842,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Bridge/Resources/Images/Images.Designer.cs",
    "chars": 16355,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     此代码由工具生成。\n/"
  },
  {
    "path": "Bridge/Resources/Images/Images.resx",
    "chars": 15920,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Bridge/Resources/Langs/WinFormStrings.Designer.cs",
    "chars": 29262,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     此代码由工具生成。\n/"
  },
  {
    "path": "Bridge/Resources/Langs/WinFormStrings.resx",
    "chars": 16052,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Bridge/Resources/Langs/WinFormStrings.zh-Hans.Designer.cs",
    "chars": 24820,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Bridge/Resources/Langs/WinFormStrings.zh-Hans.resx",
    "chars": 14673,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Bridge/VirtualDesktopNotification.cs",
    "chars": 1139,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Bridge/Window.cs",
    "chars": 1614,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Configuration/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Configuration/ConfigTemplate.cs",
    "chars": 3760,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Configuration.csproj",
    "chars": 989,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n    "
  },
  {
    "path": "Configuration/Const.cs",
    "chars": 15989,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Converter/EntityConverter.cs",
    "chars": 2489,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Configuration/DataAnnotations/PropertyProtectorAttribute.cs",
    "chars": 4537,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Configuration/Entity/Cluster.cs",
    "chars": 1700,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Entity/Colour.cs",
    "chars": 1149,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Entity/KeyBinding.cs",
    "chars": 896,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Entity/LogConfig.cs",
    "chars": 927,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Configuration/Entity/Margin.cs",
    "chars": 1327,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Entity/Mouse.cs",
    "chars": 1500,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Configuration/Entity/Navigation.cs",
    "chars": 972,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Configuration/Entity/UserInterface.cs",
    "chars": 2425,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Events/Entity/ExpressionTemplate.cs",
    "chars": 1461,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Events/Entity/RuleTemplate.cs",
    "chars": 2201,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Events/Expression/Conditions.cs",
    "chars": 9321,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Events/Expression/Conditions.test.cs",
    "chars": 2915,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/FodyWeavers.xml",
    "chars": 146,
    "preview": "<Weavers xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"FodyWeavers.xsd\">\n    <Pr"
  },
  {
    "path": "Configuration/Manager.cs",
    "chars": 11258,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Profile.cs",
    "chars": 1956,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Configuration/Profiles/Default.cs",
    "chars": 2353,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Helpers/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Helpers/DwmApi.cs",
    "chars": 7177,
    "preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace VirtualSpace.Helpers\n{\n    public static class DwmApi\n  "
  },
  {
    "path": "Helpers/GlobalHotKey.cs",
    "chars": 1934,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Helpers/Helpers.csproj",
    "chars": 542,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n    "
  },
  {
    "path": "Helpers/Images.cs",
    "chars": 5548,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Helpers/Kernel32.cs",
    "chars": 295,
    "preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace VirtualSpace.Helpers\n{\n    public static class Kernel32\n"
  },
  {
    "path": "Helpers/LowLevelHooks.cs",
    "chars": 5603,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Helpers/StringHelper.cs",
    "chars": 1240,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Helpers/SysInfo.cs",
    "chars": 18212,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Helpers/TaskSchedulerHelper.cs",
    "chars": 2980,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Helpers/User32.cs",
    "chars": 5694,
    "preview": "using System;\nusing System.Runtime.InteropServices;\nusing System.Text;\n\nnamespace VirtualSpace.Helpers\n{\n    public sta"
  },
  {
    "path": "Helpers/UserMessage.cs",
    "chars": 2626,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Helpers/VisualEffects.cs",
    "chars": 1364,
    "preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace VirtualSpace.Helpers\n{\n    public static class VisualEff"
  },
  {
    "path": "Helpers/Win32.cs",
    "chars": 12868,
    "preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace VirtualSpace.Helpers\n{\n    /// <summary>\n    ///     Con"
  },
  {
    "path": "Helpers/WinForms.cs",
    "chars": 1502,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Helpers/WinMsg.cs",
    "chars": 1489,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Helpers/WinRegistry.cs",
    "chars": 5172,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Ipc/Commons/Config.cs",
    "chars": 931,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Ipc/Commons/HostInfo.cs",
    "chars": 2257,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Ipc/Commons/Ipc.csproj",
    "chars": 221,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "Ipc/Commons/PipeMessage.cs",
    "chars": 1527,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Ipc/Commons/PipeMessageType.cs",
    "chars": 938,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Ipc/IpcClient/IpcClient.csproj",
    "chars": 314,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "Ipc/IpcClient/IpcPipeClient.cs",
    "chars": 5086,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Ipc/IpcServer/IpcPipeServer.cs",
    "chars": 6885,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Ipc/IpcServer/IpcServer.csproj",
    "chars": 465,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "LinqExpressionBuilder/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "LinqExpressionBuilder/Keywords.cs",
    "chars": 2433,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of LinqExpressionBuilder.\n\nLinqExpr"
  },
  {
    "path": "LinqExpressionBuilder/LinqExpressionBuilder.cs",
    "chars": 6440,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of LinqExpressionBuilder.\n\nLinqExpr"
  },
  {
    "path": "LinqExpressionBuilder/LinqExpressionBuilder.csproj",
    "chars": 222,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n    "
  },
  {
    "path": "Logger/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Logger/LogMessage.cs",
    "chars": 1097,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Logger/Logger.cs",
    "chars": 7369,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Logger/Logger.csproj",
    "chars": 468,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n    "
  },
  {
    "path": "Logger/Manager.cs",
    "chars": 4068,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "Plugin/Commons/Plugin.csproj",
    "chars": 221,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "Plugin/Commons/PluginInfo.cs",
    "chars": 2536,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Plugin/Commons/PluginManager.cs",
    "chars": 2733,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Plugin/Commons/WinApi.cs",
    "chars": 2042,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Plugin/PluginHost/PluginConst.cs",
    "chars": 1162,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Plugin/PluginHost/PluginHost.cs",
    "chars": 5440,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "Plugin/PluginHost/PluginHost.csproj",
    "chars": 381,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "Plugins.sln/.gitignore",
    "chars": 7459,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": "Plugins.sln/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Plugins.sln/Cube3D/App.xaml",
    "chars": 884,
    "preview": "<Application x:Class=\"Cube3D.App\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n      "
  },
  {
    "path": "Plugins.sln/Cube3D/App.xaml.cs",
    "chars": 1708,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Cube3D.\n\nCube3D is free software"
  },
  {
    "path": "Plugins.sln/Cube3D/AssemblyInfo.cs",
    "chars": 444,
    "preview": "using System.Windows;\n\n[assembly: ThemeInfo(\n    ResourceDictionaryLocation.None, //where theme specific resource dictio"
  },
  {
    "path": "Plugins.sln/Cube3D/AutoVersion.tt",
    "chars": 2072,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Cube3D.\n\nCube3D is free software"
  },
  {
    "path": "Plugins.sln/Cube3D/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Plugins.sln/Cube3D/Config/Const.cs",
    "chars": 1365,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/Config/Settings.cs",
    "chars": 2499,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/Config/SettingsManager.cs",
    "chars": 1578,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Plugins.\n// \n// Plugins is"
  },
  {
    "path": "Plugins.sln/Cube3D/Cube3D.csproj",
    "chars": 2163,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.WindowsDesktop\">\n\n    <PropertyGroup>\n        <OutputType>WinExe</OutputType>\n        <"
  },
  {
    "path": "Plugins.sln/Cube3D/D3DImages/D3DImages.cs",
    "chars": 1540,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/Effects/Cube.cs",
    "chars": 10457,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/Effects/Effect.cs",
    "chars": 4527,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/Effects/Fade.cs",
    "chars": 4467,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/Effects/Flip.cs",
    "chars": 6199,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/Effects/InsideCube.cs",
    "chars": 10055,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/Effects/Reveal.cs",
    "chars": 5737,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/Effects/Slide.cs",
    "chars": 8660,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/FrameToD3DImage.cs",
    "chars": 2748,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Cube3D.\n\nCube3D is free software"
  },
  {
    "path": "Plugins.sln/Cube3D/Helpers/User32.cs",
    "chars": 7066,
    "preview": "using System;\nusing System.Runtime.InteropServices;\nusing System.Text;\n\nnamespace VirtualSpace.Helpers\n{\n    public sta"
  },
  {
    "path": "Plugins.sln/Cube3D/Helpers/Win32.cs",
    "chars": 1544,
    "preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace VirtualSpace.Helpers\n{\n    public enum GetWindowLongFiel"
  },
  {
    "path": "Plugins.sln/Cube3D/Helpers/WinMsg.cs",
    "chars": 803,
    "preview": "namespace VirtualSpace.Helpers\n{\n    public static class WinMsg\n    {\n        public const int WM_SYSCOMMAND    = 0x011"
  },
  {
    "path": "Plugins.sln/Cube3D/Helpers/WpfConverters.cs",
    "chars": 1374,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Plugins.\n// \n// Plugins is"
  },
  {
    "path": "Plugins.sln/Cube3D/MainWindow.2D.cs",
    "chars": 2776,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Cube3D.\n\nCube3D is free software"
  },
  {
    "path": "Plugins.sln/Cube3D/MainWindow.3D.cs",
    "chars": 2294,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Cube3D.\n\nCube3D is free software"
  },
  {
    "path": "Plugins.sln/Cube3D/MainWindow.animation.cs",
    "chars": 4445,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Cube3D.\n\nCube3D is free software"
  },
  {
    "path": "Plugins.sln/Cube3D/MainWindow.frame.cs",
    "chars": 1828,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Cube3D.\n\nCube3D is free software"
  },
  {
    "path": "Plugins.sln/Cube3D/MainWindow.hotkeys.cs",
    "chars": 8451,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Cube3D.\n\nCube3D is free software"
  },
  {
    "path": "Plugins.sln/Cube3D/MainWindow.xaml",
    "chars": 3077,
    "preview": "<Window x:Class=\"Cube3D.MainWindow\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n        x"
  },
  {
    "path": "Plugins.sln/Cube3D/MainWindow.xaml.cs",
    "chars": 7984,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Cube3D.\n\nCube3D is free software"
  },
  {
    "path": "Plugins.sln/Cube3D/SettingsWindow.xaml",
    "chars": 5108,
    "preview": "<Window x:Class=\"Cube3D.SettingsWindow\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n     "
  },
  {
    "path": "Plugins.sln/Cube3D/SettingsWindow.xaml.cs",
    "chars": 5212,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of Cube3D.\n// \n// Cube3D is f"
  },
  {
    "path": "Plugins.sln/Cube3D/app.manifest",
    "chars": 3291,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\" xmlns:a"
  },
  {
    "path": "Plugins.sln/Cube3D/plugin.json",
    "chars": 583,
    "preview": "{\n  \"Name\": \"Cube3D\",\n  \"Display\": \"Cube3D\",\n  \"Version\": \"2.1\",\n  \"Author\": \"Dylan Cheng\",\n  \"Email\": \"newlooper@hotmai"
  },
  {
    "path": "Plugins.sln/Cube3D/settings.json",
    "chars": 104,
    "preview": "{\n  \"AnimationDuration\": 500,\n  \"CheckAliveInterval\": 30,\n  \"SelectedEffect\": 0,\n  \"TransitionType\": 3\n}"
  },
  {
    "path": "Plugins.sln/Plugins.sln",
    "chars": 3480,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.1.3221"
  },
  {
    "path": "Plugins.sln/ScreenCapture/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Plugins.sln/ScreenCapture/CaptureHelper.cs",
    "chars": 4509,
    "preview": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Corpo"
  },
  {
    "path": "Plugins.sln/ScreenCapture/D3D9ShareCapture.cs",
    "chars": 11843,
    "preview": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Corpo"
  },
  {
    "path": "Plugins.sln/ScreenCapture/Direct3D11Helper.cs",
    "chars": 6586,
    "preview": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Corpo"
  },
  {
    "path": "Plugins.sln/ScreenCapture/FrameProcessor.cs",
    "chars": 864,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Cube3D.\n\nCube3D is free software"
  },
  {
    "path": "Plugins.sln/ScreenCapture/MonitorEnumerationHelper.cs",
    "chars": 4448,
    "preview": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Corpo"
  },
  {
    "path": "Plugins.sln/ScreenCapture/ScreenCapture.csproj",
    "chars": 939,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows10.0.20348.0;net6.0-wind"
  },
  {
    "path": "Plugins.sln/ScreenCapture/WindowEnumerationHelper.cs",
    "chars": 6260,
    "preview": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Corpo"
  },
  {
    "path": "Plugins.sln/Updater/AutoVersion.tt",
    "chars": 2078,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of Updater.\n\nUpdater is free softwa"
  },
  {
    "path": "Plugins.sln/Updater/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Plugins.sln/Updater/Config/Const.cs",
    "chars": 1375,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n//\n// This file is part of Updater.\n//\n// Updater is f"
  },
  {
    "path": "Plugins.sln/Updater/HttpClientProgress.cs",
    "chars": 2936,
    "preview": "namespace Updater;\n\n// https://gist.github.com/dalexsoto/9fd3c5bdbe9f61a717d47c5843384d11\n\npublic static class HttpClie"
  },
  {
    "path": "Plugins.sln/Updater/MainForm.Designer.cs",
    "chars": 3601,
    "preview": "namespace Updater\n{\n    partial class MainForm\n    {\n        /// <summary>\n        ///  Required designer variable.\n   "
  },
  {
    "path": "Plugins.sln/Updater/MainForm.cs",
    "chars": 6158,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n//\n// This file is part of Updater.\n//\n// Updater is fr"
  },
  {
    "path": "Plugins.sln/Updater/MainForm.resx",
    "chars": 2755,
    "preview": "<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsof"
  },
  {
    "path": "Plugins.sln/Updater/Program.cs",
    "chars": 1527,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n//\n// This file is part of Updater.\n//\n// Updater is fr"
  },
  {
    "path": "Plugins.sln/Updater/Resources/Langs/WinFormStrings.resx",
    "chars": 6510,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Plugins.sln/Updater/Resources/Langs/WinFormStrings.zh-Hans.resx",
    "chars": 6389,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Plugins.sln/Updater/Updater.csproj",
    "chars": 1616,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <OutputType>WinExe</OutputType>\n        <TargetFramework"
  },
  {
    "path": "Plugins.sln/Updater/plugin.json",
    "chars": 509,
    "preview": "{\n  \"Name\": \"Updater\",\n  \"Display\": \"Updater\",\n  \"Version\": \"1.2\",\n  \"Author\": \"Dylan Cheng\",\n  \"Email\": \"newlooper@hotm"
  },
  {
    "path": "Readme.md",
    "chars": 2115,
    "preview": "# VirtualSpace\n\n> A Virtual Desktop Enhancement GUI Program For Win10 & Win11\n\n[![License](https://img.shields.io/github"
  },
  {
    "path": "Resources/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Resources/Images.Designer.cs",
    "chars": 2417,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     此代码由工具生成。\n/"
  },
  {
    "path": "Resources/Images.resx",
    "chars": 5696,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Resources/Resources.csproj",
    "chars": 682,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "UiAutomation/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "UiAutomation/UIA.cs",
    "chars": 1387,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "UiAutomation/UiAutomation.csproj",
    "chars": 252,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n    "
  },
  {
    "path": "VirtualDesktop/VirtualDesktop10/COM.cs",
    "chars": 11884,
    "preview": "// Author: Markus Scholtes, 2021\n// Version 1.9, 2021-10-08\n// Version for Windows 10 1809 to 21H1\n// Compile with:\n// "
  },
  {
    "path": "VirtualDesktop/VirtualDesktop10/VirtualDesktop.cs",
    "chars": 14783,
    "preview": "// Author: Markus Scholtes, 2021\n// Version 1.9, 2021-10-08\n// Version for Windows 10 1809 to 21H1\n// Compile with:\n// C"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop10/VirtualDesktop10.csproj",
    "chars": 583,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n    "
  },
  {
    "path": "VirtualDesktop/VirtualDesktop10/VirtualDesktopManager.cs",
    "chars": 10314,
    "preview": "// Author: Markus Scholtes, 2021\n// Version 1.9, 2021-10-08\n// Version for Windows 10 1809 to 21H1\n// Compile with:\n// "
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11/COM.cs",
    "chars": 13000,
    "preview": "// Author: Markus Scholtes, 2021\n// Version 1.9, 2021-10-08\n// Version for Windows 10 21H2 and Windows 11\n// Compile wi"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11/VirtualDesktop.cs",
    "chars": 16215,
    "preview": "// Author: Markus Scholtes, 2021\n// Version 1.9, 2021-10-08\n// Version for Windows 10 21H2 and Windows 11\n// Compile wit"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11/VirtualDesktop11.csproj",
    "chars": 582,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n    "
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11/VirtualDesktopManager.cs",
    "chars": 11304,
    "preview": "// Author: Markus Scholtes, 2021\n// Version 1.9, 2021-10-08\n// Version for Windows 10 21H2 and Windows 11\n// Compile wi"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_21H2/COM.cs",
    "chars": 12969,
    "preview": "// Author: Markus Scholtes, 2021\n// Version 1.9, 2021-10-08\n// Version for Windows 10 21H2 and Windows 11\n// Compile wi"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_21H2/VirtualDesktop.cs",
    "chars": 16215,
    "preview": "// Author: Markus Scholtes, 2021\n// Version 1.9, 2021-10-08\n// Version for Windows 10 21H2 and Windows 11\n// Compile wit"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_21H2/VirtualDesktop11_21H2.csproj",
    "chars": 582,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_21H2/VirtualDesktopManager.cs",
    "chars": 11304,
    "preview": "// Author: Markus Scholtes, 2021\n// Version 1.9, 2021-10-08\n// Version for Windows 10 21H2 and Windows 11\n// Compile wi"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_23H2/COM.cs",
    "chars": 13355,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_23H2/VirtualDesktop.cs",
    "chars": 16351,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtua"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_23H2/VirtualDesktop11_23H2.csproj",
    "chars": 579,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_23H2/VirtualDesktopManager.cs",
    "chars": 11562,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_23H2_3085/COM.cs",
    "chars": 13355,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_23H2_3085/VirtualDesktop.cs",
    "chars": 16351,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtua"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_23H2_3085/VirtualDesktop11_23H2_3085.csproj",
    "chars": 579,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_23H2_3085/VirtualDesktopManager.cs",
    "chars": 11562,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_24H2/COM.cs",
    "chars": 13463,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_24H2/VirtualDesktop.cs",
    "chars": 16955,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtua"
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_24H2/VirtualDesktop11_24H2.csproj",
    "chars": 579,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFrameworks>net6.0-windows</TargetFrameworks>\n     "
  },
  {
    "path": "VirtualDesktop/VirtualDesktop11_24H2/VirtualDesktopManager.cs",
    "chars": 11562,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualDesktopWrapper/DesktopManagerWrapper.cs",
    "chars": 2043,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualDesktopWrapper/DesktopManagerWrapper.events.cs",
    "chars": 5314,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualDesktopWrapper/DesktopManagerWrapper.wallpaper.cs",
    "chars": 2138,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualDesktopWrapper/DesktopWrapper.cs",
    "chars": 6894,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualDesktopWrapper/VirtualDesktopWrapper.csproj",
    "chars": 683,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFramework>net6.0-windows</TargetFramework>\n      "
  },
  {
    "path": "VirtualDesktopWrapper/Wrapper11.cs",
    "chars": 1430,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/App.xaml",
    "chars": 269,
    "preview": "<Application x:Class=\"VirtualSpace.App\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n"
  },
  {
    "path": "VirtualSpace/App.xaml.cs",
    "chars": 5989,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/AssemblyInfo.cs",
    "chars": 444,
    "preview": "using System.Windows;\n\n[assembly: ThemeInfo(\n    ResourceDictionaryLocation.None, //where theme specific resource dictio"
  },
  {
    "path": "VirtualSpace/AutoVersion.tt",
    "chars": 2361,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "VirtualSpace/Factory/AppControllerFactory.cs",
    "chars": 1484,
    "preview": "// Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualSpace/MainWindow.filter.cs",
    "chars": 2133,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/MainWindow.hotkeys.cs",
    "chars": 10635,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/MainWindow.layout.cs",
    "chars": 9511,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/MainWindow.main.cs",
    "chars": 7614,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/MainWindow.message.cs",
    "chars": 16055,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualSpace/MainWindow.style.cs",
    "chars": 2732,
    "preview": "/* Copyright (C) 2022 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/MainWindow.xaml",
    "chars": 1388,
    "preview": "<Window x:Class=\"VirtualSpace.MainWindow\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n   "
  },
  {
    "path": "VirtualSpace/MainWindow.xaml.cs",
    "chars": 911,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/Program.cs",
    "chars": 5113,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualSpace/Tools/SystemTool.cs",
    "chars": 1219,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualSpace/Tools/TrayIcon.cs",
    "chars": 6654,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualSpace/Tools/WindowTool.cs",
    "chars": 6501,
    "preview": "// Copyright (C) 2023 Dylan Cheng (https://github.com/newlooper)\n// \n// This file is part of VirtualSpace.\n// \n// Virtu"
  },
  {
    "path": "VirtualSpace/VirtualDesktop/Daemon.cs",
    "chars": 8019,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/VirtualDesktop/DragWindow.Designer.cs",
    "chars": 2270,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/VirtualDesktop/DragWindow.cs",
    "chars": 1402,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/VirtualDesktop/DragWindow.resx",
    "chars": 6352,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n    <!-- \n      Microsoft ResX Schema \n      \n      Version 2.0\n      \n  "
  },
  {
    "path": "VirtualSpace/VirtualDesktop/Filters.cs",
    "chars": 2011,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  },
  {
    "path": "VirtualSpace/VirtualDesktop/Manager.arrangement.cs",
    "chars": 1752,
    "preview": "/* Copyright (C) 2021 Dylan Cheng (https://github.com/newlooper)\n\nThis file is part of VirtualSpace.\n\nVirtualSpace is f"
  }
]

// ... and 113 more files (download for full content)

About this extraction

This page contains the full source code of the newlooper/VirtualSpace GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 313 files (2.4 MB), approximately 635.4k tokens, and a symbol index with 2324 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!