原文:WPF 窗口句柄获取和设置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BYH371256/article/details/83347163

WPF 窗口句柄设置和获取

1、句柄类

  WHwnd.cs    

    public class WHwnd
{
/// <summary>
/// 主窗体句柄
/// </summary>
public static System.Windows.Interop.HwndSource Hwnd;
/// <summary>
/// 获取窗体句柄
/// </summary>
/// <param name="window">窗体</param>
public static IntPtr GetWindowHwndSource(DependencyObject window, bool isHwnd = true)
{
var formDependency = System.Windows.Interop.HwndSource.FromDependencyObject(window);
System.Windows.Interop.HwndSource winformWindow = (formDependency as System.Windows.Interop.HwndSource);
if (isHwnd)
Hwnd = winformWindow;
return winformWindow.Handle;
} }

2、窗口大小

WndSize.cs

    public class WndSize
{
/// <summary>
/// 获取主窗体大小和状态
/// </summary>
/// <returns></returns>
public static WindowSize GetWindowSize(IntPtr hwnd)
{
//是否最小化
bool min = IsIconic(hwnd);
//是否最大化
bool max = IsZoomed(hwnd); RECT size = new RECT();
GetWindowRect(hwnd, ref size); WindowSize wind = new WindowSize();
wind.Left = size.Left;
wind.Top = size.Top;
wind.Width = size.Right - size.Left;
wind.Height = size.Bottom - size.Top;
//if (max == true)
// wind.Windowstatue = WindowState.Maximized;
//else if (min == true)
// wind.Windowstatue = WindowState.Minimized;
//else
// wind.Windowstatue = WindowState.Normal; return wind;
} public static void CloseSoftware(IntPtr hwnd)
{
SendMessage(hwnd, SC_CLOSE, 0, 0);
}
public static int SC_CLOSE = 0X10; [DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)]
public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
public static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsIconic(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool IsZoomed(IntPtr hWnd); [DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;//最左坐标
public int Top;//最上坐标
public int Right;//最右坐标
public int Bottom;//最下坐标
} } public struct WindowSize
{
public int Left;
public int Top;
public int Width;
public int Height;
//public WindowState Windowstatue;
}

3、设置句柄和获取

在主函数Loaded事件中设置初始句柄:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
WHwnd.GetWindowHwndSource(this);
} //自定义对话框弹出测试
ExMessageBox.ShowDialog(0, false, 3, tipStr, "", "", WHwnd.Hwnd.Handle);

 

WPF 窗口句柄获取和设置的更多相关文章

  1. WPF备忘录(2)WPF获取和设置鼠标位置与progressbar的使用方法

    一.WPF 中获取和设置鼠标位置 方法一:WPF方法 Point p = Mouse.GetPosition(e.Source as FrameworkElement); Point p = (e.S ...

  2. WPF获取和设置鼠标位置与progressbar的使用方法

    一.WPF 中获取和设置鼠标位置 方法一:WPF方法 Point p = Mouse.GetPosition(e.Source as FrameworkElement); Point p = (e.S ...

  3. WPF获取和设置应用程序范围的资源

    设置资源: Application.Current.Resources["ApplicationScopeResource"] = Brushes.White; 使用代码获取资源: ...

  4. wpf 前台获取资源文件路径问题

    1 <ImageBrush ImageSource="YT.CM.CommonUI;component/Resource/FloadwindowImage/middle.png&quo ...

  5. WPF 3D 获取鼠标在场景的3d坐标

    原文:WPF 3D 获取鼠标在场景的3d坐标 上一篇中我们谈到了WPF 3d做图的一些简单原理,这里我们简单介绍一下怎样获得鼠标在场景中的3d坐标,知道了3d坐标就可以进行很多操作了: 首先介绍一下3 ...

  6. 在 WPF 中获取一个依赖对象的所有依赖项属性

    原文:在 WPF 中获取一个依赖对象的所有依赖项属性 本文介绍如何在 WPF 中获取一个依赖对象的所有依赖项属性. 本文内容 通过 WPF 标记获取 通过设计器专用方法获取 通过 WPF 标记获取 p ...

  7. 【VC++技术杂谈002】打印技术之获取及设置系统默认打印机

    本文主要介绍如何获取以及设置系统的默认打印机. 1.获取系统中的所有打印机 获取系统中的所有打印机可以使用EnumPrinters()函数,该函数可以枚举全部的本地.网络打印机信息.其函数原型为: B ...

  8. 关于获取、设置css样式封装的函数入门版

    <html> <head> <meta charset="UTF-8"> <title>CSS样式的获取和设置:简单版</ti ...

  9. jquery 获取和设置 checkbox radio 和 select option的值?

    ============== 获取和设置 checkbox radio 和 select的值? === val()函数, 其名字就表达了 它的意思: 他就是= value 的简写! val就是valu ...

随机推荐

  1. 缓存MEMCACHE php调用

    在项目中,涉及大访问量时,合理的使用缓存能减轻数据库的压力,同时提升用户体验.即在非实时性的需求的前提下,一小段时间内(若干秒),用于显示的数据从缓存中获取的,而不用直接读取数据库,能有效的减少数据库 ...

  2. iOS的图片:解码(CPU)与内存(缓存)

    图片的数据:资源数据(地址).原始数据(Data).显示数据(解码后的数据) 解压图片 - PNG或者JPEG压缩之后的图片文件会比同质量的位图小得多.但是在图片绘制到屏幕上之前,必须把它扩展成完整的 ...

  3. BZOJ5072:[Lydsy1710月赛]小A的树(树形DP)

    Description BZOJ只是扔了个下载链接 Solution 设$f[x][i]$表示$x$点选中$i$个黑点的最小连通块. 设$g[x][i]$表示$x$点选中$i$个黑点的最大连通块. 转 ...

  4. BZOJ3697:采药人的路径(点分治)

    Description 采药人的药田是一个树状结构,每条路径上都种植着同种药材. 采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性的,一种是阳性的. 采药人每天都要进行采药 ...

  5. ionic和angularjs的区别?

    a.ionic是一个用来开发混合手机应用的,开源的,免费的代码库.可以优化HTML.css和js的性能,构建高效的应用程序,而且还可以用于构建sass和angularJS的优化 b.AngularJS ...

  6. classlist和array.prototype.slice.call

    1.classlist document.getElementById("myDIV").classList.add("mystyle"); classList ...

  7. PHP+JQUERY+AJAX上传、裁剪图片

    PHP部分 /*图片上传*/ public function upload1(){ $file = $_FILES['file']; $upload = new \Think\Upload();// ...

  8. 【洛谷P2680】运输计划

    题目链接 题目大意: 一棵\(n\)个点的带边权的数,给定\(m\)条树上两点间的路径,现在你可以让树上任意一条边的权值变为零, 问如何选边使得\(m\)条路径中边权和最大的路径的边权和最小 \(\m ...

  9. 获取URL链接正则

    public static final String HTTP_PATTERN = "http://[a-zA-Z0-9\\.\\/\\-_]+";

  10. 软工之404 Note Found团队

    如果记忆是一个罐头的话,我希望这一罐罐头不会过期----<重庆森林> 404 Note Found Team 如果记忆是一个备忘录的话,别说了,它不会过期----<404 Note ...