diff --git a/img/Terminal.png b/img/Terminal.png index 96836d6..4e78596 100644 Binary files a/img/Terminal.png and b/img/Terminal.png differ diff --git a/mpv.net/Misc/Program.cs b/mpv.net/Misc/Program.cs index 863e6c8..793b301 100644 --- a/mpv.net/Misc/Program.cs +++ b/mpv.net/Misc/Program.cs @@ -66,7 +66,9 @@ namespace mpvnet return; } - if (App.IsStartedFromTerminal) Native.AttachConsole(-1 /*ATTACH_PARENT_PROCESS*/); + if (App.IsStartedFromTerminal) + Native.AttachConsole(-1 /*ATTACH_PARENT_PROCESS*/); + Application.Run(new MainForm()); if (App.IsStartedFromTerminal) Native.FreeConsole(); mutex.Dispose(); diff --git a/mpv.net/Native/MediaInfo.cs b/mpv.net/Native/MediaInfo.cs index 1852f92..834ca65 100644 --- a/mpv.net/Native/MediaInfo.cs +++ b/mpv.net/Native/MediaInfo.cs @@ -10,7 +10,7 @@ public class MediaInfo : IDisposable { if (!Loaded) { - if (LoadLibrary("MediaInfo.dll") == IntPtr.Zero) + if (Native.LoadLibrary("MediaInfo.dll") == IntPtr.Zero) throw new Exception("Failed to load MediaInfo.dll."); Loaded = true; @@ -56,21 +56,27 @@ public class MediaInfo : IDisposable ~MediaInfo() { Dispose(); } - [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] - static extern IntPtr LoadLibrary(string path); + [DllImport("kernel32.dll")] + public static extern IntPtr LoadLibrary(string path); [DllImport("MediaInfo.dll")] static extern IntPtr MediaInfo_New(); - [DllImport("MediaInfo.dll")] - static extern void MediaInfo_Delete(IntPtr handle); + [DllImport("MediaInfo.dll", CharSet = CharSet.Unicode)] + static extern int MediaInfo_Open(IntPtr handle, string path); [DllImport("MediaInfo.dll", CharSet = CharSet.Unicode)] - static extern int MediaInfo_Open(IntPtr handle, string fileName); + static extern IntPtr MediaInfo_Option(IntPtr handle, string optionString, string value); + + [DllImport("MediaInfo.dll")] + static extern IntPtr MediaInfo_Inform(IntPtr handle, int reserved); [DllImport("MediaInfo.dll")] static extern int MediaInfo_Close(IntPtr handle); + [DllImport("MediaInfo.dll")] + static extern void MediaInfo_Delete(IntPtr handle); + [DllImport("MediaInfo.dll", CharSet = CharSet.Unicode)] static extern IntPtr MediaInfo_Get(IntPtr handle, MediaInfoStreamKind streamKind, diff --git a/mpv.net/Native/Native.cs b/mpv.net/Native/Native.cs index d2fc349..ff1c88a 100644 --- a/mpv.net/Native/Native.cs +++ b/mpv.net/Native/Native.cs @@ -2,97 +2,94 @@ using System.Drawing; using System.Runtime.InteropServices; -namespace mpvnet +public class Native { - public class Native + [DllImport("kernel32.dll")] + public static extern bool AttachConsole(int dwProcessId); + + [DllImport("kernel32.dll", SetLastError = true)] + public static extern bool FreeConsole(); + + [DllImport("kernel32.dll")] + public static extern IntPtr LoadLibrary(string path); + + [DllImport("user32.dll", CharSet = CharSet.Unicode)] + public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle); + + [DllImport("user32.dll", CharSet = CharSet.Unicode)] + public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); + + [DllImport("user32.dll", CharSet = CharSet.Unicode)] + public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, ref COPYDATASTRUCT lParam); + + [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)] + public static extern IntPtr PostMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); + + [DllImport("user32.dll", CharSet = CharSet.Unicode)] + public static extern int RegisterWindowMessage(string id); + + [DllImport("user32.dll")] + public static extern bool AllowSetForegroundWindow(int dwProcessId); + + [DllImport("user32.dll")] + public static extern void ReleaseCapture(); + + [DllImport("user32.dll")] + public static extern bool AdjustWindowRect(ref RECT lpRect, uint dwStyle, bool bMenu); + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags); + + [DllImport("user32.dll", EntryPoint = "GetWindowLong")] + private static extern IntPtr GetWindowLong32(IntPtr hWnd, int nIndex); + + [DllImport("user32.dll", EntryPoint = "GetWindowLongPtr")] + private static extern IntPtr GetWindowLong64(IntPtr hWnd, int nIndex); + + public static IntPtr GetWindowLong(IntPtr hWnd, int nIndex) { - [DllImport("kernel32.dll")] - public static extern bool AttachConsole(int dwProcessId); + if (IntPtr.Size == 8) + return GetWindowLong64(hWnd, nIndex); + else + return GetWindowLong32(hWnd, nIndex); + } - [DllImport("kernel32.dll", SetLastError = true)] - public static extern bool FreeConsole(); + [StructLayout(LayoutKind.Sequential)] + public struct RECT + { + public int Left; + public int Top; + public int Right; + public int Bottom; - [DllImport("kernel32.dll")] - public static extern IntPtr LoadLibrary(string dllToLoad); - - [DllImport("user32.dll", CharSet = CharSet.Unicode)] - public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle); - - [DllImport("user32.dll", CharSet = CharSet.Unicode)] - public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); - - [DllImport("user32.dll", CharSet = CharSet.Unicode)] - public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, ref COPYDATASTRUCT lParam); - - [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)] - public static extern IntPtr PostMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); - - [DllImport("user32.dll", CharSet = CharSet.Unicode)] - public static extern int RegisterWindowMessage(string id); - - [DllImport("user32.dll")] - public static extern bool AllowSetForegroundWindow(int dwProcessId); - - [DllImport("user32.dll")] - public static extern void ReleaseCapture(); - - [DllImport("user32.dll")] - public static extern bool AdjustWindowRect(ref RECT lpRect, uint dwStyle, bool bMenu); - - [DllImport("user32.dll", SetLastError = true)] - public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags); - - [DllImport("user32.dll", EntryPoint = "GetWindowLong")] - private static extern IntPtr GetWindowLong32(IntPtr hWnd, int nIndex); - - [DllImport("user32.dll", EntryPoint = "GetWindowLongPtr")] - private static extern IntPtr GetWindowLong64(IntPtr hWnd, int nIndex); - - public static IntPtr GetWindowLong(IntPtr hWnd, int nIndex) + public RECT(Rectangle r) { - if (IntPtr.Size == 8) - return GetWindowLong64(hWnd, nIndex); - else - return GetWindowLong32(hWnd, nIndex); + Left = r.Left; + Top = r.Top; + Right = r.Right; + Bottom = r.Bottom; } - [StructLayout(LayoutKind.Sequential)] - public struct RECT + public RECT(int left, int top, int right, int bottom) { - public int Left; - public int Top; - public int Right; - public int Bottom; - - public RECT(Rectangle r) - { - Left = r.Left; - Top = r.Top; - Right = r.Right; - Bottom = r.Bottom; - } - - public RECT(int left, int top, int right, int bottom) - { - Left = left; - Top = top; - Right = right; - Bottom = bottom; - } - - public Rectangle ToRectangle() { return Rectangle.FromLTRB(Left, Top, Right, Bottom); } - public Size Size => new Size(Right - Left, Bottom - Top); - public int Width => Right - Left; - public int Height => Bottom - Top; + Left = left; + Top = top; + Right = right; + Bottom = bottom; } - [StructLayout(LayoutKind.Sequential)] - public struct COPYDATASTRUCT - { - public IntPtr dwData; - public int cbData; - [MarshalAs(UnmanagedType.LPTStr)] - public string lpData; - } + public Rectangle ToRectangle() { return Rectangle.FromLTRB(Left, Top, Right, Bottom); } + public Size Size => new Size(Right - Left, Bottom - Top); + public int Width => Right - Left; + public int Height => Bottom - Top; + } + + [StructLayout(LayoutKind.Sequential)] + public struct COPYDATASTRUCT + { + public IntPtr dwData; + public int cbData; + [MarshalAs(UnmanagedType.LPTStr)] + public string lpData; } } \ No newline at end of file diff --git a/mpv.net/mpv/mp.cs b/mpv.net/mpv/mp.cs index 25296eb..585ba38 100644 --- a/mpv.net/mpv/mp.cs +++ b/mpv.net/mpv/mp.cs @@ -16,7 +16,7 @@ using System.Windows.Forms; using WinForms = System.Windows.Forms; using static mpvnet.libmpv; -using static mpvnet.Native; +using static Native; namespace mpvnet {