diff --git a/ExtLibs/pinvokegen/NativeMethods.txt b/ExtLibs/pinvokegen/NativeMethods.txt
new file mode 100644
index 0000000000..2ed58530e5
--- /dev/null
+++ b/ExtLibs/pinvokegen/NativeMethods.txt
@@ -0,0 +1,12 @@
+FindWindow
+ShowWindow
+RegisterDeviceNotification
+GetConsoleWindow
+SetThreadExecutionState
+LoadLibraryEx
+S_OK
+NTSTATUS
+SW_HIDE
+SW_SHOWNORMAL
+ES_CONTINUOUS
+ES_SYSTEM_REQUIRED
diff --git a/ExtLibs/pinvokegen/Program.cs b/ExtLibs/pinvokegen/Program.cs
new file mode 100644
index 0000000000..a9b39c3a3f
--- /dev/null
+++ b/ExtLibs/pinvokegen/Program.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Threading.Tasks;
+
+namespace pinvokegen
+{
+ static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Windows.Win32.PInvoke.FindWindow("Notepad", null);
+ Windows.Win32.PInvoke.GetConsoleWindow();
+ }
+ }
+}
diff --git a/ExtLibs/pinvokegen/pinvokegen.csproj b/ExtLibs/pinvokegen/pinvokegen.csproj
new file mode 100644
index 0000000000..7216fef664
--- /dev/null
+++ b/ExtLibs/pinvokegen/pinvokegen.csproj
@@ -0,0 +1,17 @@
+
+
+
+ Library
+ net472
+ 9
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+