Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a4a9a346ae | ||
|
|
d6ce290131 | ||
|
|
fb8a5909d4 | ||
|
|
13712898eb | ||
|
|
ee88265fc7 | ||
|
|
b8be95a820 | ||
|
|
714ac49d91 | ||
|
|
cfe5fea46e | ||
|
|
594c2fb051 | ||
|
|
c3aab0277c | ||
|
|
55a65e0bce | ||
|
|
c78b71bdc5 | ||
|
|
95a05390ec | ||
|
|
416a8ee475 | ||
|
|
44543166d4 | ||
|
|
e6ec735242 | ||
|
|
08bd643f22 | ||
|
|
33415eeb6d | ||
|
|
89accb614c | ||
|
|
79a8ddee7e | ||
|
|
cae76430ae | ||
|
|
03ad5e2051 | ||
|
|
5d91d42fc4 | ||
|
|
24a8820904 | ||
|
|
21fec64a2a | ||
|
|
bad09ce2c4 | ||
|
|
f001c0c076 | ||
|
|
4b5fdc2366 | ||
|
|
f1b5e4edb4 | ||
|
|
c15b200a08 | ||
|
|
25a23cf32e | ||
|
|
d34e522d0e | ||
|
|
4250d61c02 | ||
|
|
377014f571 | ||
|
|
dea23eaf28 | ||
|
|
257d6cd6c3 | ||
|
|
421d3b2fb2 | ||
|
|
2f2b2b2a17 | ||
|
|
88fa2c6efb | ||
|
|
310521ab05 | ||
|
|
cfed49d76d | ||
|
|
9c7dbaa938 | ||
|
|
8f57b0e66e | ||
|
|
0eda51cd73 | ||
|
|
49f8b087cd | ||
|
|
feecd81887 |
No files matched your search
@@ -0,0 +1,5 @@
|
|||||||
|
*.c linguist-language=C
|
||||||
|
*.h linguist-language=C
|
||||||
|
*.cpp linguist-language=C++
|
||||||
|
*.cc linguist-language=C++
|
||||||
|
*.hpp linguist-language=C++
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.12.35527.113
|
VisualStudioVersion = 17.12.35527.113
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyby11", "FlybyScript\Flyby11.csproj", "{503AF34B-7544-4C43-A099-2B948C3FF49A}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyby11", "Flyby11\Flyby11.csproj", "{503AF34B-7544-4C43-A099-2B948C3FF49A}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CpuCheckNative", "CpuCheckNative\CpuCheckNative.vcxproj", "{A2038E07-E21F-4B05-B811-3052A2B014BC}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CpuCheckNative", "CpuCheckNative\CpuCheckNative.vcxproj", "{A2038E07-E21F-4B05-B811-3052A2B014BC}"
|
||||||
EndProject
|
EndProject
|
||||||
File renamed without changes.
File renamed without changes.
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
File renamed without changes.
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Generated
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -130,9 +130,10 @@
|
|||||||
<EmbeddedResource Include="Locales\Strings.hu.resx" />
|
<EmbeddedResource Include="Locales\Strings.hu.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.it.resx" />
|
<EmbeddedResource Include="Locales\Strings.it.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.ja.resx" />
|
<EmbeddedResource Include="Locales\Strings.ja.resx" />
|
||||||
|
<EmbeddedResource Include="Locales\Strings.ko.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.nl.resx" />
|
<EmbeddedResource Include="Locales\Strings.nl.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.pl.resx" />
|
<EmbeddedResource Include="Locales\Strings.pl.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.ru.resx" />
|
<EmbeddedResource Include="Locales\Strings.pt-BR.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.sv-SE.resx" />
|
<EmbeddedResource Include="Locales\Strings.sv-SE.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.tr.resx" />
|
<EmbeddedResource Include="Locales\Strings.tr.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.zh-CN.resx" />
|
<EmbeddedResource Include="Locales\Strings.zh-CN.resx" />
|
||||||
File renamed without changes.
Generated
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Generated
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+2
-2
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
|||||||
// Buildnummer
|
// Buildnummer
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("3.0.500")]
|
[assembly: AssemblyVersion("3.10.510")]
|
||||||
[assembly: AssemblyFileVersion("3.0.500")]
|
[assembly: AssemblyFileVersion("3.10.510")]
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,15 @@
|
|||||||
|
// CpuCheck.cpp
|
||||||
|
#include "pch.h"
|
||||||
|
#include <intrin.h>
|
||||||
|
|
||||||
|
extern "C" __declspec(dllexport) bool __cdecl HasPopcnt()
|
||||||
|
{
|
||||||
|
int cpuInfo[4] = { 0 };
|
||||||
|
__cpuid(cpuInfo, 1);
|
||||||
|
// Check if the processor supports SSE4.2 (bit 20 of the ECX register)
|
||||||
|
bool hasSSE42 = (cpuInfo[2] & (1 << 20)) != 0;
|
||||||
|
// Check if the processor supports POPCNT (bit 23 of the ECX register)
|
||||||
|
bool hasPOPCNT = (cpuInfo[2] & (1 << 23)) != 0;
|
||||||
|
|
||||||
|
return hasSSE42 && hasPOPCNT;
|
||||||
|
}
|
||||||
@@ -0,0 +1,155 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>17.0</VCProjectVersion>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<ProjectGuid>{7a2dd9d3-5d3d-46e8-976a-51a6304ccf45}</ProjectGuid>
|
||||||
|
<RootNamespace>Flyby11</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;FLYBY11_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;FLYBY11_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;FLYBY11_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;FLYBY11_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="framework.h" />
|
||||||
|
<ClInclude Include="pch.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="CpuCheck.cpp" />
|
||||||
|
<ClCompile Include="dllmain.cpp" />
|
||||||
|
<ClCompile Include="pch.cpp">
|
||||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Quelldateien">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Headerdateien">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Ressourcendateien">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="framework.h">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="pch.h">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="dllmain.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="pch.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="CpuCheck.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
// dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
|
||||||
|
#include "pch.h"
|
||||||
|
|
||||||
|
BOOL APIENTRY DllMain( HMODULE hModule,
|
||||||
|
DWORD ul_reason_for_call,
|
||||||
|
LPVOID lpReserved
|
||||||
|
)
|
||||||
|
{
|
||||||
|
switch (ul_reason_for_call)
|
||||||
|
{
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
case DLL_THREAD_ATTACH:
|
||||||
|
case DLL_THREAD_DETACH:
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define WIN32_LEAN_AND_MEAN // Selten verwendete Komponenten aus Windows-Headern ausschließen
|
||||||
|
// Windows-Headerdateien
|
||||||
|
#include <windows.h>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
// pch.cpp: Quelldatei, die dem vorkompilierten Header entspricht
|
||||||
|
|
||||||
|
#include "pch.h"
|
||||||
|
|
||||||
|
// Bei der Verwendung vorkompilierter Header ist diese Quelldatei für eine erfolgreiche Kompilierung erforderlich.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
// pch.h: Dies ist eine vorkompilierte Headerdatei.
|
||||||
|
// Die unten aufgeführten Dateien werden nur einmal kompiliert, um die Buildleistung für zukünftige Builds zu verbessern.
|
||||||
|
// Dies wirkt sich auch auf die IntelliSense-Leistung aus, Codevervollständigung und viele Features zum Durchsuchen von Code eingeschlossen.
|
||||||
|
// Die hier aufgeführten Dateien werden jedoch ALLE neu kompiliert, wenn mindestens eine davon zwischen den Builds aktualisiert wird.
|
||||||
|
// Fügen Sie hier keine Dateien hinzu, die häufig aktualisiert werden sollen, da sich so der Leistungsvorteil ins Gegenteil verkehrt.
|
||||||
|
|
||||||
|
#ifndef PCH_H
|
||||||
|
#define PCH_H
|
||||||
|
|
||||||
|
// Fügen Sie hier Header hinzu, die vorkompiliert werden sollen.
|
||||||
|
#include "framework.h"
|
||||||
|
|
||||||
|
#endif //PCH_H
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Developer Essentials – Quick access to developer tools and features
|
||||||
|
# Host: console
|
||||||
|
# Options: Enable Developer Mode; Install WSL; Open Windows Features (silent); Open Device Manager (silent)
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
|
||||||
|
switch ($choice) {
|
||||||
|
"Enable Developer Mode" {
|
||||||
|
Write-Output "Enabling Developer Mode..."
|
||||||
|
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d 1
|
||||||
|
Write-Output "✔ Developer Mode enabled."
|
||||||
|
}
|
||||||
|
|
||||||
|
"Install WSL" {
|
||||||
|
Write-Output "Installing Windows Subsystem for Linux..."
|
||||||
|
Start-Process "wsl.exe" -ArgumentList "--install" -Verb runAs
|
||||||
|
}
|
||||||
|
|
||||||
|
"Open Windows Features" {
|
||||||
|
Write-Output "Opening Windows Features dialog..."
|
||||||
|
Start-Process "optionalfeatures.exe"
|
||||||
|
}
|
||||||
|
|
||||||
|
"Open Device Manager" {
|
||||||
|
Write-Output "Opening Device Manager..."
|
||||||
|
Start-Process "devmgmt.msc"
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
Write-Output "Unknown option: $choice"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
# Flyoobe Extensions
|
||||||
|
|
||||||
|
Here you can find community extensions for Flyoobe.
|
||||||
|
Copy the provided `.ps1` raw link and install it via the **Get Extensions → Install from URL** option in the app.
|
||||||
|
|
||||||
|
---
|
||||||
|
## ⚡ Power Actions
|
||||||
|
**Description:** Control Windows power and session actions directly from Flyoobe.
|
||||||
|
**Options:**
|
||||||
|
- Restart Explorer
|
||||||
|
- Restart PC
|
||||||
|
- Shutdown PC
|
||||||
|
- Log off
|
||||||
|
- Sleep
|
||||||
|
- Hibernate
|
||||||
|
|
||||||
|
🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Power%20Actions.ps1)
|
||||||
|
|
||||||
|
---
|
||||||
|
## 🛠 Developer Essentials
|
||||||
|
**Description:** Quick access to developer tools and features (Dev Mode, WSL, Windows Features, Device Manager).
|
||||||
|
**Options:**
|
||||||
|
- Enable Developer Mode
|
||||||
|
- Install WSL
|
||||||
|
- Open Windows Features
|
||||||
|
- Open Device Manager
|
||||||
|
|
||||||
|
🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Developer%20Essentials.ps1)
|
||||||
|
|
||||||
|
## 🌐 Network Tools
|
||||||
|
**Description:** Common network troubleshooting actions (DNS flush, Winsock reset, connections, ping).
|
||||||
|
**Options:**
|
||||||
|
- Flush DNS
|
||||||
|
- Reset Winsock
|
||||||
|
- Show active connections
|
||||||
|
- Test Ping (8.8.8.8)
|
||||||
|
|
||||||
|
🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Network%20Tools.ps1)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛡 Microsoft Defender Maintenance
|
||||||
|
**Description:** Update Defender signatures, repair definitions, or check Defender status.
|
||||||
|
**Options:**
|
||||||
|
- Update signatures
|
||||||
|
- Repair definitions and update
|
||||||
|
- Show Defender status
|
||||||
|
|
||||||
|
🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Microsoft%20Defender%20maintenance.ps1)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎮 Gaming Tweaks
|
||||||
|
**Description:** Optimize Windows 11 for gaming (Game Mode, HAGS, Power Plans, DVR).
|
||||||
|
**Options:**
|
||||||
|
- Enable Game Mode
|
||||||
|
- Disable Game Mode
|
||||||
|
- Toggle Hardware GPU Scheduling
|
||||||
|
- Switch Power Plans
|
||||||
|
- Disable Game DVR
|
||||||
|
- Clear Shader Cache
|
||||||
|
|
||||||
|
🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Gaming%20tweaks.ps1)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# Description: Gaming Tweaks – optimize Windows 11 for games
|
||||||
|
# Host: console
|
||||||
|
# Options: Enable Game Mode; Disable Game Mode; Toggle Hardware GPU Scheduling; Switch Power Plans; Disable Game DVR; Clear Shader Cache
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
|
||||||
|
function Is-Admin {
|
||||||
|
$id = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||||
|
$pr = New-Object Security.Principal.WindowsPrincipal($id)
|
||||||
|
return $pr.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($choice) {
|
||||||
|
|
||||||
|
"Enable Game Mode" {
|
||||||
|
Write-Output "✔ Enabling Game Mode..."
|
||||||
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\GameBar" -Name "AllowAutoGameMode" -Value 1
|
||||||
|
}
|
||||||
|
|
||||||
|
"Disable Game Mode" {
|
||||||
|
Write-Output "✔ Disabling Game Mode..."
|
||||||
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\GameBar" -Name "AllowAutoGameMode" -Value 0
|
||||||
|
}
|
||||||
|
|
||||||
|
"Toggle Hardware GPU Scheduling" {
|
||||||
|
if (-not (Is-Admin)) {
|
||||||
|
Write-Output "✘ Requires Administrator. Please run Flyoobe as Admin."
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
$path = "HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers"
|
||||||
|
$val = (Get-ItemProperty -Path $path -Name HwSchMode -ErrorAction SilentlyContinue).HwSchMode
|
||||||
|
if ($val -eq 2) {
|
||||||
|
Set-ItemProperty -Path $path -Name HwSchMode -Value 1 -Type DWord
|
||||||
|
Write-Output "✔ Hardware GPU Scheduling disabled (restart required)."
|
||||||
|
} else {
|
||||||
|
Set-ItemProperty -Path $path -Name HwSchMode -Value 2 -Type DWord
|
||||||
|
Write-Output "✔ Hardware GPU Scheduling enabled (restart required)."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
"Switch Power Plans" {
|
||||||
|
Write-Output "Available power plans:"
|
||||||
|
powercfg /list
|
||||||
|
|
||||||
|
Write-Output ""
|
||||||
|
Write-Output "Use one of these commands to switch manually:"
|
||||||
|
Write-Output " - Balanced: powercfg /setactive SCHEME_BALANCED"
|
||||||
|
Write-Output " - High Performance: powercfg /setactive SCHEME_MIN"
|
||||||
|
Write-Output " - Ultimate Performance: powercfg /setactive SCHEME_MAX"
|
||||||
|
}
|
||||||
|
|
||||||
|
"Disable Game DVR" {
|
||||||
|
Write-Output "✔ Disabling Game DVR..."
|
||||||
|
Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name "GameDVR_Enabled" -Value 0
|
||||||
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\GameDVR" -Name "AppCaptureEnabled" -Value 0
|
||||||
|
}
|
||||||
|
|
||||||
|
"Clear Shader Cache" {
|
||||||
|
$cache = "$env:LOCALAPPDATA\D3DSCache"
|
||||||
|
if (Test-Path $cache) {
|
||||||
|
Write-Output "✔ Clearing shader cache..."
|
||||||
|
Remove-Item "$cache\*" -Force -Recurse -ErrorAction SilentlyContinue
|
||||||
|
} else {
|
||||||
|
Write-Output "ℹ Shader cache folder not found."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
Write-Output "✘ Unknown option: $choice"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output "`nDone. Some changes may require restart to take effect."
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
# Microsoft Defender maintenance (update signatures, repair, show status)
|
||||||
|
# Host: console
|
||||||
|
# Options: Update signatures; Repair definitions and update; Show Defender status
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
|
||||||
|
function Get-MpCmdPath {
|
||||||
|
$candidates = @(
|
||||||
|
"$env:ProgramFiles\Windows Defender\MpCmdRun.exe",
|
||||||
|
"$env:ProgramFiles\Microsoft Defender\MpCmdRun.exe"
|
||||||
|
)
|
||||||
|
foreach ($p in $candidates) { if (Test-Path $p) { return $p } }
|
||||||
|
return $null
|
||||||
|
}
|
||||||
|
|
||||||
|
function Is-Admin {
|
||||||
|
$id = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||||
|
$pr = New-Object Security.Principal.WindowsPrincipal($id)
|
||||||
|
return $pr.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Show-Status {
|
||||||
|
try {
|
||||||
|
$s = Get-MpComputerStatus
|
||||||
|
Write-Output "=== Microsoft Defender Status ==="
|
||||||
|
Write-Output ("Engine version: {0}" -f $s.AMEngineVersion)
|
||||||
|
Write-Output ("Platform version: {0}" -f $s.AMProductVersion)
|
||||||
|
Write-Output ("AV signature version: {0}" -f $s.AntivirusSignatureVersion)
|
||||||
|
Write-Output ("AV signature last update: {0}" -f $s.AntivirusSignatureLastUpdated)
|
||||||
|
Write-Output ("AS signature version: {0}" -f $s.AntispywareSignatureVersion)
|
||||||
|
Write-Output ("Real-time protection: {0}" -f $s.RealTimeProtectionEnabled)
|
||||||
|
Write-Output ("NIS enabled: {0}" -f $s.NISEnabled)
|
||||||
|
Write-Output ("Service enabled: {0}" -f $s.AMServiceEnabled)
|
||||||
|
} catch {
|
||||||
|
Write-Output "✘ Failed to read Defender status: $($_.Exception.Message)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($choice) {
|
||||||
|
|
||||||
|
"Update signatures" {
|
||||||
|
if (-not (Is-Admin)) {
|
||||||
|
Write-Output "ℹ Tip: Run as Administrator for the most reliable results."
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
# Primary: PowerShell cmdlet
|
||||||
|
Update-MpSignature -ErrorAction Stop
|
||||||
|
Write-Output "✔ Signatures updated via Update-MpSignature."
|
||||||
|
} catch {
|
||||||
|
# Fallback: MpCmdRun
|
||||||
|
$mp = Get-MpCmdPath
|
||||||
|
if ($mp) {
|
||||||
|
Write-Output "↻ Falling back to MpCmdRun.exe ..."
|
||||||
|
& $mp -SignatureUpdate | Out-String | Write-Output
|
||||||
|
} else {
|
||||||
|
Write-Output "✘ MpCmdRun.exe not found and Update-MpSignature failed."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Show-Status
|
||||||
|
}
|
||||||
|
|
||||||
|
"Repair definitions and update" {
|
||||||
|
if (-not (Is-Admin)) {
|
||||||
|
Write-Output "✘ Please run this action as Administrator (required to reset definitions)."
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
$mp = Get-MpCmdPath
|
||||||
|
if (-not $mp) {
|
||||||
|
Write-Output "✘ MpCmdRun.exe not found."
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
Write-Output "↻ Removing all definitions (repair) ..."
|
||||||
|
& $mp -RemoveDefinitions -All | Out-String | Write-Output
|
||||||
|
} catch {
|
||||||
|
Write-Output "✘ Failed to remove definitions: $($_.Exception.Message)"
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
Write-Output "↻ Updating signatures ..."
|
||||||
|
Update-MpSignature -ErrorAction Stop
|
||||||
|
Write-Output "✔ Signatures updated."
|
||||||
|
} catch {
|
||||||
|
Write-Output "↻ Fallback: MpCmdRun signature update ..."
|
||||||
|
& $mp -SignatureUpdate | Out-String | Write-Output
|
||||||
|
}
|
||||||
|
|
||||||
|
Show-Status
|
||||||
|
}
|
||||||
|
|
||||||
|
"Show Defender status" {
|
||||||
|
Show-Status
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
Write-Output "✘ Unknown option: $choice"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# Network Tools – Common network troubleshooting actions
|
||||||
|
# Host: console
|
||||||
|
# Options: Flush DNS; Reset Winsock; Show active connections; Test Ping (8.8.8.8)
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
|
||||||
|
switch ($choice) {
|
||||||
|
"Flush DNS" {
|
||||||
|
Write-Output "Flushing DNS cache..."
|
||||||
|
ipconfig /flushdns
|
||||||
|
}
|
||||||
|
|
||||||
|
"Reset Winsock" {
|
||||||
|
Write-Output "Resetting Winsock..."
|
||||||
|
netsh winsock reset
|
||||||
|
}
|
||||||
|
|
||||||
|
"Show active connections" {
|
||||||
|
Write-Output "Active TCP connections:"
|
||||||
|
netstat -ano
|
||||||
|
}
|
||||||
|
|
||||||
|
"Test Ping (8.8.8.8)" {
|
||||||
|
Write-Output "Pinging Google DNS..."
|
||||||
|
ping 8.8.8.8
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
Write-Output "Unknown option: $choice"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
# Power Actions – Restart Explorer, Restart, Shutdown, Logoff, Sleep, Hibernate
|
||||||
|
# Host: silent
|
||||||
|
# Options: Restart Explorer; Restart PC; Shutdown PC; Log off; Sleep; Hibernate
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
|
||||||
|
switch ($choice) {
|
||||||
|
|
||||||
|
"Restart Explorer" {
|
||||||
|
Write-Output "Restarting Explorer..."
|
||||||
|
Stop-Process -Name explorer -Force
|
||||||
|
Start-Process explorer.exe
|
||||||
|
}
|
||||||
|
|
||||||
|
"Restart PC" {
|
||||||
|
Write-Output "Restarting computer..."
|
||||||
|
Restart-Computer -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
"Shutdown PC" {
|
||||||
|
Write-Output "Shutting down computer..."
|
||||||
|
Stop-Computer -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
"Log off" {
|
||||||
|
Write-Output "Logging off current user..."
|
||||||
|
shutdown.exe /l
|
||||||
|
}
|
||||||
|
|
||||||
|
"Sleep" {
|
||||||
|
Write-Output "Putting system to sleep..."
|
||||||
|
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
|
||||||
|
}
|
||||||
|
|
||||||
|
"Hibernate" {
|
||||||
|
Write-Output "Hibernating system..."
|
||||||
|
rundll32.exe powrprof.dll,SetSuspendState Hibernate
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
Write-Output "Unknown option: $choice"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
# 🆕 Setup Extensions: Host + Options Support
|
||||||
|
|
||||||
|
The **Setup Extensions** system now supports extended script metadata in the header.
|
||||||
|
This allows script authors to define dropdown menus and control how the script is executed.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ New Metadata Parameters
|
||||||
|
|
||||||
|
### `# Description: <string>`
|
||||||
|
- Short, user-friendly description of what the script does.
|
||||||
|
- Displayed in the Extensions page below the title.
|
||||||
|
|
||||||
|
### `# Host: embedded | console | log`
|
||||||
|
- **embedded** = run inside OOBE, output is captured and shown in the app.
|
||||||
|
- **console** = run in an external PowerShell window with `-NoExit`.
|
||||||
|
- **log** = Runs inside Flyoobe's live Log Viewer (App-Settings > Notifications) and writes messages to the internal notification logger.
|
||||||
|
- **Default:** `embedded` (if not specified).
|
||||||
|
|
||||||
|
### `# Options: value1; value2; value3; ...`
|
||||||
|
- Defines multiple selectable actions for a single script.
|
||||||
|
- A dropdown is automatically shown in the Extensions page.
|
||||||
|
- The selected value is passed to the script as `$choice`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 Example Script Header
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# Description: File Explorer tweaks
|
||||||
|
# Host: embedded
|
||||||
|
# Options: Show file extensions; Hide file extensions; Open This PC
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
switch ($choice) {
|
||||||
|
"Show file extensions" { ... }
|
||||||
|
"Hide file extensions" { ... }
|
||||||
|
"Open This PC" { ... }
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.14.36414.22
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyoobe.Spot", "Flyoobe.ToolSpot\Flyoobe.Spot.csproj", "{1133824D-6F42-48D4-8F18-A93AB7403DB7}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{1133824D-6F42-48D4-8F18-A93AB7403DB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{1133824D-6F42-48D4-8F18-A93AB7403DB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{1133824D-6F42-48D4-8F18-A93AB7403DB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{1133824D-6F42-48D4-8F18-A93AB7403DB7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {B22B36E3-C594-46AF-AF57-3C03B2F97541}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8.1" />
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{1133824D-6F42-48D4-8F18-A93AB7403DB7}</ProjectGuid>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<RootNamespace>Flyoobe.Spot</RootNamespace>
|
||||||
|
<AssemblyName>spot</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Deployment" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="MainForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="MainForm.Designer.cs">
|
||||||
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<EmbeddedResource Include="MainForm.resx">
|
||||||
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
</Compile>
|
||||||
|
<None Include="app.manifest" />
|
||||||
|
<None Include="Properties\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
<Compile Include="Properties\Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
namespace Flyoobe.ToolSpot
|
||||||
|
{
|
||||||
|
partial class MainForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Erforderliche Designervariable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Verwendete Ressourcen bereinigen.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Vom Windows Form-Designer generierter Code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Erforderliche Methode für die Designerunterstützung.
|
||||||
|
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.listResults = new System.Windows.Forms.ListBox();
|
||||||
|
this.textSearch = new System.Windows.Forms.TextBox();
|
||||||
|
this.labelStatus = new System.Windows.Forms.Label();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// listResults
|
||||||
|
//
|
||||||
|
this.listResults.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.listResults.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(243)))), ((int)(((byte)(240)))));
|
||||||
|
this.listResults.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.listResults.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.listResults.FormattingEnabled = true;
|
||||||
|
this.listResults.ItemHeight = 17;
|
||||||
|
this.listResults.Location = new System.Drawing.Point(25, 72);
|
||||||
|
this.listResults.Name = "listResults";
|
||||||
|
this.listResults.Size = new System.Drawing.Size(504, 170);
|
||||||
|
this.listResults.TabIndex = 5;
|
||||||
|
this.listResults.TabStop = false;
|
||||||
|
this.listResults.DoubleClick += new System.EventHandler(this.listResults_DoubleClick);
|
||||||
|
this.listResults.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listResults_KeyDown);
|
||||||
|
//
|
||||||
|
// textSearch
|
||||||
|
//
|
||||||
|
this.textSearch.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.textSearch.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.textSearch.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||||
|
this.textSearch.Location = new System.Drawing.Point(25, 26);
|
||||||
|
this.textSearch.Name = "textSearch";
|
||||||
|
this.textSearch.Size = new System.Drawing.Size(504, 29);
|
||||||
|
this.textSearch.TabIndex = 1;
|
||||||
|
this.textSearch.Text = "Search";
|
||||||
|
this.textSearch.Click += new System.EventHandler(this.textSearch_Click);
|
||||||
|
this.textSearch.TextChanged += new System.EventHandler(this.textSearch_TextChanged);
|
||||||
|
//
|
||||||
|
// labelStatus
|
||||||
|
//
|
||||||
|
this.labelStatus.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||||
|
this.labelStatus.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.labelStatus.Location = new System.Drawing.Point(0, 251);
|
||||||
|
this.labelStatus.Name = "labelStatus";
|
||||||
|
this.labelStatus.Size = new System.Drawing.Size(557, 21);
|
||||||
|
this.labelStatus.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// MainForm
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(244)))), ((int)(((byte)(244)))));
|
||||||
|
this.ClientSize = new System.Drawing.Size(557, 272);
|
||||||
|
this.Controls.Add(this.labelStatus);
|
||||||
|
this.Controls.Add(this.textSearch);
|
||||||
|
this.Controls.Add(this.listResults);
|
||||||
|
this.Name = "MainForm";
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "Spot";
|
||||||
|
this.Load += new System.EventHandler(this.Form1_Load);
|
||||||
|
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.ListBox listResults;
|
||||||
|
private System.Windows.Forms.TextBox textSearch;
|
||||||
|
private System.Windows.Forms.Label labelStatus;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,209 @@
|
|||||||
|
/// This tool is part of my Flyoobe app
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Data;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Flyoobe.ToolSpot
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public partial class MainForm : Form
|
||||||
|
|
||||||
|
{ // Path of the text DB
|
||||||
|
public string DatabasePath { get; set; } =
|
||||||
|
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "spot.txt");
|
||||||
|
|
||||||
|
// In-memory list of all tools
|
||||||
|
private readonly List<ToolItem> _all = new List<ToolItem>();
|
||||||
|
|
||||||
|
public MainForm()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Form1_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
LoadDatabase();
|
||||||
|
//ApplyFilter(); // show all initially
|
||||||
|
textSearch.Focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetStatus(string text)
|
||||||
|
{
|
||||||
|
if (labelStatus != null) labelStatus.Text = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Form1_KeyDown(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.KeyCode == Keys.Escape)
|
||||||
|
{
|
||||||
|
// close it
|
||||||
|
var form = this.FindForm();
|
||||||
|
form?.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void listResults_KeyDown(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.KeyCode == Keys.Enter) { LaunchSelected(); e.Handled = true; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private void listResults_DoubleClick(object sender, EventArgs e) => LaunchSelected();
|
||||||
|
|
||||||
|
private void textSearch_TextChanged(object sender, EventArgs e) => ApplyFilter();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reads toolspot.txt (Name;Command). Ignores empty and comment lines.
|
||||||
|
/// </summary>
|
||||||
|
private void LoadDatabase()
|
||||||
|
{
|
||||||
|
_all.Clear();
|
||||||
|
|
||||||
|
if (!File.Exists(DatabasePath))
|
||||||
|
{
|
||||||
|
SetStatus($"Database not found: {DatabasePath}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var line in File.ReadAllLines(DatabasePath))
|
||||||
|
{
|
||||||
|
var trimmed = line.Trim();
|
||||||
|
if (string.IsNullOrEmpty(trimmed)) continue;
|
||||||
|
if (trimmed.StartsWith("#")) continue;
|
||||||
|
|
||||||
|
var item = ParseLine(trimmed);
|
||||||
|
if (item != null) _all.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
SetStatus($"Loaded {_all.Count} tools.");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Parses "Name;Command" lines. Returns null if malformed.
|
||||||
|
/// </summary>
|
||||||
|
private ToolItem ParseLine(string line)
|
||||||
|
{
|
||||||
|
var parts = line.Split(new[] { ';' }, 2);
|
||||||
|
if (parts.Length != 2) return null;
|
||||||
|
|
||||||
|
var name = parts[0].Trim();
|
||||||
|
var cmd = parts[1].Trim();
|
||||||
|
if (name.Length == 0 || cmd.Length == 0) return null;
|
||||||
|
|
||||||
|
return new ToolItem(name, cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Filters list by substring (case-insensitive) from textSearch.
|
||||||
|
/// </summary>
|
||||||
|
private void ApplyFilter()
|
||||||
|
{
|
||||||
|
var q = (textSearch.Text ?? string.Empty).Trim().ToLower();
|
||||||
|
var list = string.IsNullOrEmpty(q)
|
||||||
|
? _all
|
||||||
|
: _all.Where(t => t.Name.ToLower().Contains(q)).ToList();
|
||||||
|
|
||||||
|
listResults.BeginUpdate();
|
||||||
|
listResults.Items.Clear();
|
||||||
|
foreach (var t in list) listResults.Items.Add(t);
|
||||||
|
listResults.EndUpdate();
|
||||||
|
|
||||||
|
if (listResults.Items.Count > 0) listResults.SelectedIndex = 0;
|
||||||
|
SetStatus(listResults.Items.Count > 0 ? $"{listResults.Items.Count} result(s)" : "No results");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Launches the selected tool's command. Supports URIs, .msc/.cpl, exe + args.
|
||||||
|
/// </summary>
|
||||||
|
private void LaunchSelected()
|
||||||
|
{
|
||||||
|
if (!(listResults.SelectedItem is ToolItem t)) return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Split command into FileName + Arguments (handles quoted paths)
|
||||||
|
SplitCommand(t.Command, out var fileName, out var args);
|
||||||
|
|
||||||
|
var psi = new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = fileName,
|
||||||
|
Arguments = args,
|
||||||
|
UseShellExecute = true // required for ms-settings:, .msc/.cpl
|
||||||
|
};
|
||||||
|
Process.Start(psi);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Could not launch: " + ex.Message, "Quick Tools",
|
||||||
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Splits a command line into executable and arguments.
|
||||||
|
/// Examples:
|
||||||
|
/// notepad.exe
|
||||||
|
/// "C:\Path With Spaces\app.exe" --flag
|
||||||
|
/// chrome.exe --settings
|
||||||
|
/// For URIs / shell verbs (e.g., ms-settings:...), no split is needed.
|
||||||
|
/// </summary>
|
||||||
|
private void SplitCommand(string command, out string fileName, out string args)
|
||||||
|
{
|
||||||
|
command = command.Trim();
|
||||||
|
|
||||||
|
// If it's a URI-like command (ms-settings:, http:, etc.), pass as-is.
|
||||||
|
if (command.Contains(":") && !command.Contains("\\"))
|
||||||
|
{
|
||||||
|
fileName = command;
|
||||||
|
args = string.Empty;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Quoted path case: "C:\Program Files\App\app.exe" arg1 arg2
|
||||||
|
if (command.StartsWith("\""))
|
||||||
|
{
|
||||||
|
int end = command.IndexOf('"', 1);
|
||||||
|
if (end > 0)
|
||||||
|
{
|
||||||
|
fileName = command.Substring(1, end - 1);
|
||||||
|
args = command.Substring(end + 1).TrimStart();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unquoted: split on first space
|
||||||
|
int space = command.IndexOf(' ');
|
||||||
|
if (space > 0)
|
||||||
|
{
|
||||||
|
fileName = command.Substring(0, space);
|
||||||
|
args = command.Substring(space + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fileName = command;
|
||||||
|
args = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ToolItem
|
||||||
|
{
|
||||||
|
public string Name { get; }
|
||||||
|
public string Command { get; }
|
||||||
|
|
||||||
|
public ToolItem(string name, string command)
|
||||||
|
{ Name = name; Command = command; }
|
||||||
|
|
||||||
|
public override string ToString() => Name; // shown in ListBox
|
||||||
|
}
|
||||||
|
|
||||||
|
private void textSearch_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
textSearch.Clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
<?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>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Flyoobe.ToolSpot
|
||||||
|
{
|
||||||
|
internal static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Der Haupteinstiegspunkt für die Anwendung.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
static void Main()
|
||||||
|
{
|
||||||
|
Application.EnableVisualStyles();
|
||||||
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
Application.Run(new MainForm());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||||
|
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||||
|
// die einer Assembly zugeordnet sind.
|
||||||
|
[assembly: AssemblyTitle("Spot")]
|
||||||
|
[assembly: AssemblyDescription("Flyoobe Spot")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("Builtbybel")]
|
||||||
|
[assembly: AssemblyProduct("Flyoobe Spot")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2025")]
|
||||||
|
[assembly: AssemblyTrademark("A Belim app creation")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
|
||||||
|
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
|
||||||
|
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||||
|
[assembly: Guid("1133824d-6f42-48d4-8f18-a93ab7403db7")]
|
||||||
|
|
||||||
|
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||||
|
//
|
||||||
|
// Hauptversion
|
||||||
|
// Nebenversion
|
||||||
|
// Buildnummer
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
[assembly: AssemblyVersion("0.2.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("0.2.0.0")]
|
||||||
+63
@@ -0,0 +1,63 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// Dieser Code wurde von einem Tool generiert.
|
||||||
|
// Laufzeitversion:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||||
|
// der Code erneut generiert wird.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace Flyoobe.Spot.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
|
||||||
|
/// </summary>
|
||||||
|
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
|
||||||
|
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
|
||||||
|
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
|
||||||
|
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||||
|
/// </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("Flyoobe.Spot.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
|
||||||
|
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
<?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.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: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" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
</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" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// Dieser Code wurde von einem Tool generiert.
|
||||||
|
// Laufzeitversion:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||||
|
// der Code erneut generiert wird.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace Flyoobe.Spot.Properties {
|
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default {
|
||||||
|
get {
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||||
|
<Profiles>
|
||||||
|
<Profile Name="(Default)" />
|
||||||
|
</Profiles>
|
||||||
|
<Settings />
|
||||||
|
</SettingsFile>
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||||
|
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||||
|
<security>
|
||||||
|
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<!-- UAC-Manifestoptionen
|
||||||
|
Wenn Sie die Ebene der Benutzerkontensteuerung für Windows ändern möchten, ersetzen Sie den
|
||||||
|
Knoten "requestedExecutionLevel" wie folgt.
|
||||||
|
|
||||||
|
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||||
|
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||||
|
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||||
|
|
||||||
|
Durch Angabe des Elements "requestedExecutionLevel" wird die Datei- und Registrierungsvirtualisierung deaktiviert.
|
||||||
|
Entfernen Sie dieses Element, wenn diese Virtualisierung aus Gründen der Abwärtskompatibilität
|
||||||
|
für die Anwendung erforderlich ist.
|
||||||
|
-->
|
||||||
|
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||||
|
</requestedPrivileges>
|
||||||
|
</security>
|
||||||
|
</trustInfo>
|
||||||
|
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!-- Eine Liste der Windows-Versionen, unter denen diese Anwendung getestet
|
||||||
|
und für die sie entwickelt wurde. Wenn Sie die Auskommentierung der entsprechenden Elemente aufheben,
|
||||||
|
wird von Windows automatisch die kompatibelste Umgebung ausgewählt. -->
|
||||||
|
|
||||||
|
<!-- Windows Vista -->
|
||||||
|
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 7 -->
|
||||||
|
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 8 -->
|
||||||
|
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 8.1 -->
|
||||||
|
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 10 -->
|
||||||
|
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||||
|
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
|
||||||
|
<!-- Gibt an, dass die Anwendung mit DPI-Werten kompatibel ist und von Windows nicht automatisch auf höhere
|
||||||
|
DPI-Werte skaliert wird. WPF-Anwendungen (Windows Presentation Foundation) sind automatisch mit DPI-Werten kompatibel, eine Aktivierung
|
||||||
|
ist nicht erforderlich. Für Windows Forms-Anwendungen für .NET Framework 4.6, die diese Einstellung aktivieren, muss
|
||||||
|
auch die Einstellung "'EnableWindowsFormsHighDpiAutoResizing" in der Datei "app.config" auf TRUE festgelegt werden.
|
||||||
|
|
||||||
|
Hierdurch können für die Anwendung lange Pfade verwendet werden. Weitere Informationen finden Sie unter https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation.-->
|
||||||
|
|
||||||
|
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<windowsSettings>
|
||||||
|
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||||
|
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||||
|
</windowsSettings>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Designs für allgemeine Windows-Steuerelemente und -Dialogfelder (Windows XP und höher) aktivieren -->
|
||||||
|
<!--
|
||||||
|
<dependency>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity
|
||||||
|
type="win32"
|
||||||
|
name="Microsoft.Windows.Common-Controls"
|
||||||
|
version="6.0.0.0"
|
||||||
|
processorArchitecture="*"
|
||||||
|
publicKeyToken="6595b64144ccf1df"
|
||||||
|
language="*"
|
||||||
|
/>
|
||||||
|
</dependentAssembly>
|
||||||
|
</dependency>
|
||||||
|
-->
|
||||||
|
|
||||||
|
</assembly>
|
||||||
+51
@@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.14.36221.1
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyoobe", "Flyoobe\Flyoobe.csproj", "{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Flyby11", "Flyby11\Flyby11.vcxproj", "{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|Any CPU.Build.0 = Release|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x64.Build.0 = Release|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {263B972C-E7F5-43F6-AF4B-9C138C57DEDB}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
Generated
+216
@@ -0,0 +1,216 @@
|
|||||||
|
namespace Flyoobe
|
||||||
|
{
|
||||||
|
partial class AboutForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.linkAppVersion = new System.Windows.Forms.LinkLabel();
|
||||||
|
this.chkDonated = new System.Windows.Forms.CheckBox();
|
||||||
|
this.btnDonate = new System.Windows.Forms.Button();
|
||||||
|
this.lblHeader = new System.Windows.Forms.Label();
|
||||||
|
this.lblCopyright = new System.Windows.Forms.Label();
|
||||||
|
this.btnGitHub = new System.Windows.Forms.Button();
|
||||||
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
|
this.panel1.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
||||||
|
this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(230)))), ((int)(((byte)(220)))));
|
||||||
|
this.panel1.Controls.Add(this.linkAppVersion);
|
||||||
|
this.panel1.Controls.Add(this.chkDonated);
|
||||||
|
this.panel1.Controls.Add(this.btnDonate);
|
||||||
|
this.panel1.Controls.Add(this.lblHeader);
|
||||||
|
this.panel1.Controls.Add(this.lblCopyright);
|
||||||
|
this.panel1.Controls.Add(this.btnGitHub);
|
||||||
|
this.panel1.Location = new System.Drawing.Point(13, 63);
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
this.panel1.Size = new System.Drawing.Size(411, 274);
|
||||||
|
this.panel1.TabIndex = 322;
|
||||||
|
//
|
||||||
|
// linkAppVersion
|
||||||
|
//
|
||||||
|
this.linkAppVersion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.linkAppVersion.AutoEllipsis = true;
|
||||||
|
this.linkAppVersion.Font = new System.Drawing.Font("Segoe UI Variable Small Semibol", 11.75F, System.Drawing.FontStyle.Bold);
|
||||||
|
this.linkAppVersion.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||||
|
this.linkAppVersion.LinkColor = System.Drawing.Color.Black;
|
||||||
|
this.linkAppVersion.Location = new System.Drawing.Point(3, 75);
|
||||||
|
this.linkAppVersion.Name = "linkAppVersion";
|
||||||
|
this.linkAppVersion.Size = new System.Drawing.Size(405, 46);
|
||||||
|
this.linkAppVersion.TabIndex = 334;
|
||||||
|
this.linkAppVersion.TabStop = true;
|
||||||
|
this.linkAppVersion.Text = "Version";
|
||||||
|
this.linkAppVersion.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||||
|
this.linkAppVersion.UseCompatibleTextRendering = true;
|
||||||
|
this.linkAppVersion.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkAppVersion_LinkClicked);
|
||||||
|
//
|
||||||
|
// chkDonated
|
||||||
|
//
|
||||||
|
this.chkDonated.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||||
|
this.chkDonated.AutoSize = true;
|
||||||
|
this.chkDonated.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.chkDonated.ForeColor = System.Drawing.Color.Black;
|
||||||
|
this.chkDonated.Location = new System.Drawing.Point(14, 255);
|
||||||
|
this.chkDonated.Name = "chkDonated";
|
||||||
|
this.chkDonated.Size = new System.Drawing.Size(141, 19);
|
||||||
|
this.chkDonated.TabIndex = 333;
|
||||||
|
this.chkDonated.Text = "I have already donated";
|
||||||
|
this.chkDonated.UseVisualStyleBackColor = true;
|
||||||
|
this.chkDonated.CheckedChanged += new System.EventHandler(this.chkDonated_CheckedChanged);
|
||||||
|
//
|
||||||
|
// btnDonate
|
||||||
|
//
|
||||||
|
this.btnDonate.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||||
|
this.btnDonate.AutoEllipsis = true;
|
||||||
|
this.btnDonate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(29)))), ((int)(((byte)(27)))), ((int)(((byte)(26)))));
|
||||||
|
this.btnDonate.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.btnDonate.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(141)))), ((int)(((byte)(141)))), ((int)(((byte)(141)))));
|
||||||
|
this.btnDonate.FlatAppearance.BorderSize = 0;
|
||||||
|
this.btnDonate.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(243)))), ((int)(((byte)(243)))));
|
||||||
|
this.btnDonate.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||||
|
this.btnDonate.Font = new System.Drawing.Font("Segoe UI Variable Display Semib", 11F, System.Drawing.FontStyle.Bold);
|
||||||
|
this.btnDonate.ForeColor = System.Drawing.Color.White;
|
||||||
|
this.btnDonate.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
this.btnDonate.Location = new System.Drawing.Point(12, 214);
|
||||||
|
this.btnDonate.Name = "btnDonate";
|
||||||
|
this.btnDonate.Size = new System.Drawing.Size(388, 38);
|
||||||
|
this.btnDonate.TabIndex = 331;
|
||||||
|
this.btnDonate.TabStop = false;
|
||||||
|
this.btnDonate.Text = "Donate";
|
||||||
|
this.btnDonate.UseCompatibleTextRendering = true;
|
||||||
|
this.btnDonate.UseVisualStyleBackColor = false;
|
||||||
|
this.btnDonate.Click += new System.EventHandler(this.btnDonate_Click);
|
||||||
|
//
|
||||||
|
// lblHeader
|
||||||
|
//
|
||||||
|
this.lblHeader.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.lblHeader.AutoEllipsis = true;
|
||||||
|
this.lblHeader.Font = new System.Drawing.Font("Segoe UI Variable Small Semibol", 20.75F, System.Drawing.FontStyle.Bold);
|
||||||
|
this.lblHeader.ForeColor = System.Drawing.Color.Black;
|
||||||
|
this.lblHeader.Location = new System.Drawing.Point(3, 20);
|
||||||
|
this.lblHeader.Name = "lblHeader";
|
||||||
|
this.lblHeader.Size = new System.Drawing.Size(405, 38);
|
||||||
|
this.lblHeader.TabIndex = 330;
|
||||||
|
this.lblHeader.Text = "Flyoobe";
|
||||||
|
this.lblHeader.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
this.lblHeader.UseCompatibleTextRendering = true;
|
||||||
|
//
|
||||||
|
// lblCopyright
|
||||||
|
//
|
||||||
|
this.lblCopyright.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||||
|
this.lblCopyright.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.lblCopyright.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblCopyright.ForeColor = System.Drawing.Color.Black;
|
||||||
|
this.lblCopyright.Location = new System.Drawing.Point(3, 127);
|
||||||
|
this.lblCopyright.Name = "lblCopyright";
|
||||||
|
this.lblCopyright.Size = new System.Drawing.Size(405, 21);
|
||||||
|
this.lblCopyright.TabIndex = 319;
|
||||||
|
this.lblCopyright.Text = "A Belim app creation (C) 2025";
|
||||||
|
this.lblCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
this.lblCopyright.UseCompatibleTextRendering = true;
|
||||||
|
//
|
||||||
|
// btnGitHub
|
||||||
|
//
|
||||||
|
this.btnGitHub.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||||
|
this.btnGitHub.AutoEllipsis = true;
|
||||||
|
this.btnGitHub.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(29)))), ((int)(((byte)(27)))), ((int)(((byte)(26)))));
|
||||||
|
this.btnGitHub.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.btnGitHub.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(141)))), ((int)(((byte)(141)))), ((int)(((byte)(141)))));
|
||||||
|
this.btnGitHub.FlatAppearance.BorderSize = 0;
|
||||||
|
this.btnGitHub.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(243)))), ((int)(((byte)(243)))));
|
||||||
|
this.btnGitHub.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||||
|
this.btnGitHub.Font = new System.Drawing.Font("Segoe UI Variable Display Semib", 11F, System.Drawing.FontStyle.Bold);
|
||||||
|
this.btnGitHub.ForeColor = System.Drawing.Color.White;
|
||||||
|
this.btnGitHub.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
this.btnGitHub.Location = new System.Drawing.Point(12, 170);
|
||||||
|
this.btnGitHub.Name = "btnGitHub";
|
||||||
|
this.btnGitHub.Size = new System.Drawing.Size(388, 38);
|
||||||
|
this.btnGitHub.TabIndex = 317;
|
||||||
|
this.btnGitHub.TabStop = false;
|
||||||
|
this.btnGitHub.Text = "GitHub";
|
||||||
|
this.btnGitHub.UseCompatibleTextRendering = true;
|
||||||
|
this.btnGitHub.UseVisualStyleBackColor = false;
|
||||||
|
this.btnGitHub.Click += new System.EventHandler(this.btnGitHub_Click);
|
||||||
|
//
|
||||||
|
// btnClose
|
||||||
|
//
|
||||||
|
this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnClose.AutoSize = true;
|
||||||
|
this.btnClose.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.btnClose.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(247)))), ((int)(((byte)(242)))));
|
||||||
|
this.btnClose.FlatAppearance.BorderSize = 0;
|
||||||
|
this.btnClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(247)))), ((int)(((byte)(242)))));
|
||||||
|
this.btnClose.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(247)))), ((int)(((byte)(242)))));
|
||||||
|
this.btnClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.btnClose.Font = new System.Drawing.Font("Segoe MDL2 Assets", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.btnClose.ForeColor = System.Drawing.Color.Black;
|
||||||
|
this.btnClose.Location = new System.Drawing.Point(387, 15);
|
||||||
|
this.btnClose.Name = "btnClose";
|
||||||
|
this.btnClose.Size = new System.Drawing.Size(30, 29);
|
||||||
|
this.btnClose.TabIndex = 332;
|
||||||
|
this.btnClose.Text = "...";
|
||||||
|
this.btnClose.UseVisualStyleBackColor = false;
|
||||||
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
|
//
|
||||||
|
// AboutForm
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(230)))), ((int)(((byte)(220)))));
|
||||||
|
this.ClientSize = new System.Drawing.Size(436, 349);
|
||||||
|
this.Controls.Add(this.btnClose);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.Name = "AboutForm";
|
||||||
|
this.Opacity = 0.95D;
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.Load += new System.EventHandler(this.AboutForm_Load);
|
||||||
|
this.panel1.ResumeLayout(false);
|
||||||
|
this.panel1.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.Label lblCopyright;
|
||||||
|
private System.Windows.Forms.Button btnGitHub;
|
||||||
|
private System.Windows.Forms.Label lblHeader;
|
||||||
|
private System.Windows.Forms.Button btnClose;
|
||||||
|
private System.Windows.Forms.Button btnDonate;
|
||||||
|
private System.Windows.Forms.CheckBox chkDonated;
|
||||||
|
private System.Windows.Forms.LinkLabel linkAppVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,210 @@
|
|||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Flyoobe
|
||||||
|
{
|
||||||
|
public partial class AboutForm : Form
|
||||||
|
{
|
||||||
|
public AboutForm()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
this.FormBorderStyle = FormBorderStyle.None;
|
||||||
|
this.DoubleBuffered = true;
|
||||||
|
|
||||||
|
linkAppVersion.Text = $"You have Flyoobe version {Program.GetAppVersion()}\n" +
|
||||||
|
"(Fetching updates...)";
|
||||||
|
|
||||||
|
btnClose.Text = "\uEF2C";
|
||||||
|
ApplyRoundedCorners();
|
||||||
|
chkDonated.Checked = DonationHelper.HasDonated();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void AboutForm_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
await Task.Delay(1000);
|
||||||
|
// Call update check when form loads
|
||||||
|
await CheckForUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ApplyRoundedCorners()
|
||||||
|
{
|
||||||
|
int radius = 60; // Corner radius
|
||||||
|
var path = new System.Drawing.Drawing2D.GraphicsPath();
|
||||||
|
path.AddArc(0, 0, radius, radius, 180, 90); // top-left
|
||||||
|
path.AddArc(this.Width - radius, 0, radius, radius, 270, 90); // top-right
|
||||||
|
path.AddArc(this.Width - radius, this.Height - radius, radius, radius, 0, 90); // bottom-right
|
||||||
|
path.AddArc(0, this.Height - radius, radius, radius, 90, 90); // bottom-left
|
||||||
|
path.CloseFigure();
|
||||||
|
|
||||||
|
this.Region = new Region(path); // Apply the rounded shape
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnResize(EventArgs e)
|
||||||
|
{
|
||||||
|
base.OnResize(e);
|
||||||
|
ApplyRoundedCorners(); // Reapply on resize
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnPaint(PaintEventArgs e)
|
||||||
|
{
|
||||||
|
base.OnPaint(e);
|
||||||
|
|
||||||
|
int radius = 45;
|
||||||
|
int borderWidth = 1;
|
||||||
|
|
||||||
|
// Adjust drawing rectangle
|
||||||
|
var rect = new Rectangle(borderWidth / 2, borderWidth / 2, Width - borderWidth, Height - borderWidth);
|
||||||
|
radius = Math.Min(radius, Math.Min(rect.Width, rect.Height) / 2); // Clamp radius
|
||||||
|
|
||||||
|
var path = new System.Drawing.Drawing2D.GraphicsPath();
|
||||||
|
path.AddArc(rect.Left, rect.Top, radius * 2, radius * 2, 180, 90);
|
||||||
|
path.AddArc(rect.Right - radius * 2, rect.Top, radius * 2, radius * 2, 270, 90);
|
||||||
|
path.AddArc(rect.Right - radius * 2, rect.Bottom - radius * 2, radius * 2, radius * 2, 0, 90);
|
||||||
|
path.AddArc(rect.Left, rect.Bottom - radius * 2, radius * 2, radius * 2, 90, 90);
|
||||||
|
path.CloseFigure();
|
||||||
|
|
||||||
|
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
||||||
|
|
||||||
|
e.Graphics.DrawPath(new Pen(Color.Gray, borderWidth), path); // Draw border
|
||||||
|
|
||||||
|
this.Region = new Region(path); // apply rounded region
|
||||||
|
}
|
||||||
|
|
||||||
|
private void chkDonated_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
DonationHelper.SetDonationStatus(chkDonated.Checked);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Version NormalizeVersionString(string version)
|
||||||
|
{
|
||||||
|
// Split by dot
|
||||||
|
var parts = version.Split('.');
|
||||||
|
// Add missing zeros to have at least 3 parts
|
||||||
|
while (parts.Length < 3)
|
||||||
|
{
|
||||||
|
version += ".0";
|
||||||
|
parts = version.Split('.');
|
||||||
|
}
|
||||||
|
return Version.Parse(version);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task CheckForUpdate()
|
||||||
|
{
|
||||||
|
const string githubApiUrl = "https://api.github.com/repos/builtbybel/Flyoobe/releases/latest";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var client = new HttpClient())
|
||||||
|
{
|
||||||
|
client.DefaultRequestHeaders.UserAgent.ParseAdd("FlyoobeUpdateChecker");
|
||||||
|
|
||||||
|
var response = await client.GetAsync(githubApiUrl);
|
||||||
|
response.EnsureSuccessStatusCode();
|
||||||
|
|
||||||
|
string json = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
|
const string tagKey = "\"tag_name\":\"";
|
||||||
|
int index = json.IndexOf(tagKey);
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
UpdateLabel($"Flyoobe v{Program.GetAppVersion()}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int start = index + tagKey.Length;
|
||||||
|
int end = json.IndexOf("\"", start);
|
||||||
|
if (end <= start)
|
||||||
|
{
|
||||||
|
UpdateLabel($"Flyoobe version {Program.GetAppVersion()}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string latestTag = json.Substring(start, end - start);
|
||||||
|
|
||||||
|
if (latestTag.StartsWith("v"))
|
||||||
|
latestTag = latestTag.Substring(1);
|
||||||
|
|
||||||
|
string currentVersionString = Program.GetAppVersion();
|
||||||
|
|
||||||
|
Version latestVersion = NormalizeVersionString(latestTag);
|
||||||
|
Version currentVersion = NormalizeVersionString(currentVersionString);
|
||||||
|
|
||||||
|
if (latestVersion > currentVersion)
|
||||||
|
{
|
||||||
|
UpdateLabel($"Update available: v{latestVersion}", clickable: true);
|
||||||
|
}
|
||||||
|
else if (latestVersion == currentVersion)
|
||||||
|
{
|
||||||
|
UpdateLabel($"Flyoobe version {currentVersion} (up-to-date)");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// User has a nightly/dev or newer version
|
||||||
|
UpdateLabel($"Flyoobe version {currentVersion} (dev version?)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
UpdateLabel($"Update check failed: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper method to update label safely on UI thread
|
||||||
|
private void UpdateLabel(string text, bool clickable = false)
|
||||||
|
{
|
||||||
|
// Update label text
|
||||||
|
linkAppVersion.Text = text;
|
||||||
|
|
||||||
|
// If clickable,
|
||||||
|
// show bold ; underline ; make cursor a hand
|
||||||
|
if (clickable)
|
||||||
|
{
|
||||||
|
linkAppVersion.Font = new Font(linkAppVersion.Font, FontStyle.Bold | FontStyle.Underline);
|
||||||
|
linkAppVersion.Enabled = true;
|
||||||
|
linkAppVersion.Cursor = Cursors.Hand;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Otherwise normal font and default cursor
|
||||||
|
linkAppVersion.Font = new Font(linkAppVersion.Font, FontStyle.Regular);
|
||||||
|
linkAppVersion.Enabled = false;
|
||||||
|
linkAppVersion.Cursor = Cursors.Default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void linkAppVersion_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||||
|
{
|
||||||
|
Process.Start(new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = "https://github.com/builtbybel/Flyoobe/releases/latest",
|
||||||
|
UseShellExecute = true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnGitHub_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Process.Start("https://github.com/builtbybel/Flyoobe");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnDonate_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Process.Start(new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = "https://www.paypal.com/donate?hosted_button_id=MY7HX4QLYR4KG",
|
||||||
|
UseShellExecute = true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
<?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>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
@@ -0,0 +1,71 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
using Flyoobe;
|
||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Settings.UI
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Disables the Click to Do feature, which also removes its entry from the right-click context menu.
|
||||||
|
/// Only available on Copilot+ PCs running Windows 11 24H2 or newer.
|
||||||
|
/// Requires a PC with an NPU (Neural Processing Unit).
|
||||||
|
/// </summary>
|
||||||
|
internal class ClickToDo : FeatureBase
|
||||||
|
{
|
||||||
|
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\ClickToDo";
|
||||||
|
private const string valueName = "DisableClickToDo";
|
||||||
|
private const int recommendedValue = 1; // 1 = fully disabled, including context menu
|
||||||
|
|
||||||
|
public override string GetFeatureDetails()
|
||||||
|
{
|
||||||
|
return $"{keyName} | Value: {valueName} | Set to: {recommendedValue} (disables Click to Do, removing it from context menus). " +
|
||||||
|
"Note: This setting only applies on Copilot+ PCs with Windows 11 24H2 or newer.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ID()
|
||||||
|
{
|
||||||
|
return "Disable Click to Do (Only Copilot+ PCs)";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string Info()
|
||||||
|
{
|
||||||
|
return "Disables Click to Do entirely, including its context menu entry which uses on-device AI to suggest actions based on screen content. Only available on Copilot+ PCs with Windows 11 24H2 or newer.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string SupportedOS() => "Windows 11";
|
||||||
|
public override bool IsRecommended => true;
|
||||||
|
|
||||||
|
public override Task<bool> CheckFeature()
|
||||||
|
{
|
||||||
|
return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> DoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord);
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Error disabling Click to Do: " + ex.Message, LogLevel.Error);
|
||||||
|
return Task.FromResult(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool UndoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Error re-enabling Click to Do: " + ex.Message, LogLevel.Error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
using Flyoobe;
|
||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Settings.AI
|
||||||
|
{
|
||||||
|
internal class CopilotTaskbar : FeatureBase
|
||||||
|
{
|
||||||
|
private const string keyName = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\WindowsCopilot";
|
||||||
|
private const string valueName = "TurnOffWindowsCopilot";
|
||||||
|
private const int recommendedValue = 1;
|
||||||
|
|
||||||
|
public override string GetFeatureDetails()
|
||||||
|
{
|
||||||
|
return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ID()
|
||||||
|
{
|
||||||
|
return "Don't Show Copilot in Taskbar";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string Info()
|
||||||
|
{
|
||||||
|
return "This feature will disable Copilot in Taskbar.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string SupportedOS() => "Windows 11";
|
||||||
|
public override bool IsRecommended => true;
|
||||||
|
|
||||||
|
public override Task<bool> CheckFeature()
|
||||||
|
{
|
||||||
|
return Task.FromResult(Utils.IntEquals(keyName, valueName, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> DoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord);
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Task.FromResult(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool UndoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
using Flyoobe;
|
||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Settings.AI
|
||||||
|
{
|
||||||
|
internal class Recall : FeatureBase
|
||||||
|
{
|
||||||
|
private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsAI";
|
||||||
|
private const string valueName = "AllowRecallEnablement";
|
||||||
|
private const int recommendedValue = 0;
|
||||||
|
|
||||||
|
public override string GetFeatureDetails()
|
||||||
|
{
|
||||||
|
return $"{keyName} | Value: {valueName} | Recommended: {recommendedValue} (Recall off – protect your privacy, prevent AI from accessing personal data)";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ID()
|
||||||
|
{
|
||||||
|
return "Turn off Recall in Windows 11";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string Info()
|
||||||
|
{
|
||||||
|
return "This will remove Recall from Windows 11 24H2";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string SupportedOS() => "Windows 11";
|
||||||
|
public override bool IsRecommended => true;
|
||||||
|
|
||||||
|
public override Task<bool> CheckFeature()
|
||||||
|
{
|
||||||
|
// Check if reg key exists
|
||||||
|
object value = Registry.GetValue(keyName, valueName, null);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
// Key does not exist, turn off feature
|
||||||
|
return Task.FromResult(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Key exists, check if value is desired value
|
||||||
|
return Task.FromResult((int)value == recommendedValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> DoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, recommendedValue, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
Logger.Log("You've even disabled system-wide Snapshots for all users now.", LogLevel.Info);
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Task.FromResult(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool UndoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
using Flyoobe;
|
||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Settings.Ads
|
||||||
|
{
|
||||||
|
internal class FileExplorerAds : FeatureBase
|
||||||
|
{
|
||||||
|
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
|
||||||
|
private const string valueName = "ShowSyncProviderNotifications";
|
||||||
|
private const int recommendedValue = 0;
|
||||||
|
|
||||||
|
public override string ID()
|
||||||
|
{
|
||||||
|
return "Disable File Explorer Ads";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string Info()
|
||||||
|
{
|
||||||
|
return "This feature will disable ads in File Explorer.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string SupportedOS() => "Windows 11";
|
||||||
|
public override bool IsRecommended => true;
|
||||||
|
|
||||||
|
public override string GetFeatureDetails()
|
||||||
|
{
|
||||||
|
return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> CheckFeature()
|
||||||
|
{
|
||||||
|
return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> DoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
|
||||||
|
Logger.Log("File Explorer Ads disabled", LogLevel.Info);
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Task.FromResult(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool UndoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
|
||||||
|
Logger.Log("File Explorer Ads enabled", LogLevel.Info);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
using Flyoobe;
|
||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Settings.Ads
|
||||||
|
{
|
||||||
|
internal class FinishSetupAds : FeatureBase
|
||||||
|
{
|
||||||
|
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\UserProfileEngagement";
|
||||||
|
private const string valueName = "ScoobeSystemSettingEnabled";
|
||||||
|
private const int recommendedValue = 0;
|
||||||
|
|
||||||
|
public override string ID() => "Disable Finish Setup Ads";
|
||||||
|
|
||||||
|
public override string Info() => "This feature will disable the \"Lets finish setting up your device\" and other advertising.";
|
||||||
|
|
||||||
|
public override string SupportedOS() => "Windows 11";
|
||||||
|
public override bool IsRecommended => true;
|
||||||
|
|
||||||
|
public override string GetFeatureDetails()
|
||||||
|
{
|
||||||
|
return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> CheckFeature()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
Task.FromResult(Utils.IntEquals(keyName, valueName, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> DoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Task.FromResult(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool UndoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
using Flyoobe;
|
||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Settings.Ads
|
||||||
|
{
|
||||||
|
internal class LockScreenAds : FeatureBase
|
||||||
|
{
|
||||||
|
private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
|
||||||
|
private const string valueName = "RotatingLockScreenOverlayEnabled";
|
||||||
|
private const string valueName2 = "SubscribedContent-338387Enabled";
|
||||||
|
private const int recommendedValue = 0;
|
||||||
|
|
||||||
|
public override string ID() => "Disable Lock Screen Tips and Ads";
|
||||||
|
|
||||||
|
public override string Info() => "This feature will disable tips and ads on the lock screen.";
|
||||||
|
|
||||||
|
public override string SupportedOS() => "Windows 11";
|
||||||
|
public override bool IsRecommended => true;
|
||||||
|
|
||||||
|
public override string GetFeatureDetails()
|
||||||
|
{
|
||||||
|
return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> CheckFeature()
|
||||||
|
{
|
||||||
|
return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue) &&
|
||||||
|
Utils.IntEquals(keyName, valueName2, recommendedValue)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> DoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
Registry.SetValue(keyName, valueName2, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Task.FromResult(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool UndoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
Registry.SetValue(keyName, valueName2, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
using Flyoobe;
|
||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Settings.Ads
|
||||||
|
{
|
||||||
|
public class PersonalizedAds : FeatureBase
|
||||||
|
{
|
||||||
|
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo";
|
||||||
|
private const string valueName = "Enabled";
|
||||||
|
private const int recommendedValue = 0;
|
||||||
|
|
||||||
|
public override string ID() => "Disable Personalized Ads";
|
||||||
|
|
||||||
|
public override string Info() => "This feature will disable personalized ads.";
|
||||||
|
|
||||||
|
public override string SupportedOS() => "Windows 11";
|
||||||
|
public override bool IsRecommended => true;
|
||||||
|
|
||||||
|
public override string GetFeatureDetails()
|
||||||
|
{
|
||||||
|
return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> CheckFeature()
|
||||||
|
{
|
||||||
|
return Task.FromResult(Utils.IntEquals(keyName, valueName, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> DoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Task.FromResult(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool UndoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
using Flyoobe;
|
||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Settings.Ads
|
||||||
|
{
|
||||||
|
internal class SettingsAds : FeatureBase
|
||||||
|
{
|
||||||
|
private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
|
||||||
|
private const string valueName = "SubscribedContent-338393Enabled";
|
||||||
|
private const string valueName2 = "SubscribedContent-353694Enabled";
|
||||||
|
private const string valueName3 = "SubscribedContent-353696Enabled";
|
||||||
|
|
||||||
|
private const int recommendedValue = 0;
|
||||||
|
|
||||||
|
public override string ID() => "Disable Settings Ads";
|
||||||
|
|
||||||
|
public override string Info() => "This feature will disable ads in settings.";
|
||||||
|
|
||||||
|
public override string SupportedOS() => "Windows 11";
|
||||||
|
public override bool IsRecommended => true;
|
||||||
|
|
||||||
|
public override string GetFeatureDetails()
|
||||||
|
{
|
||||||
|
return $"{keyName} | Value: {valueName} + {valueName2} + {valueName3} | Recommended Value: {recommendedValue}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> CheckFeature()
|
||||||
|
{
|
||||||
|
return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue) &&
|
||||||
|
Utils.IntEquals(keyName, valueName2, recommendedValue) &&
|
||||||
|
Utils.IntEquals(keyName, valueName3, recommendedValue)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> DoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
Registry.SetValue(keyName, valueName2, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
Registry.SetValue(keyName, valueName3, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Task.FromResult(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool UndoFeature()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
Registry.SetValue(keyName, valueName2, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
Registry.SetValue(keyName, valueName3, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log("Code red in " + ex.Message, LogLevel.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loaded 100 of 231 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user