naps2/NAPS2.Core/Util/Win32Window.cs
Ben Olden-Cooligan 35dd3901aa Async scanning
2018-09-05 23:24:25 -04:00

35 lines
832 B
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace NAPS2.Util
{
/// <summary>
/// A trivial implementation of IWin32Window for use when serializing window handles cross-process.
/// </summary>
public class Win32Window : IWin32Window
{
public Win32Window(IntPtr hwnd)
{
Handle = hwnd;
}
public IntPtr Handle { get; }
}
public static class Win32WindowExtensions
{
public static IntPtr SafeHandle(this IWin32Window window)
{
if (window is Form form)
{
IntPtr hwnd = IntPtr.Zero;
form.Invoke(new Action(() => hwnd = window.Handle));
return hwnd;
}
return window.Handle;
}
}
}