关于C# 窗体自动隐藏和加载的问题
2016-09-07 08:09
351 查看
最近在写一个小项目,开发一个小程序配合其他软件使用,其中一款软件在使用工作时需要截图生成报告,此时不能有其他应用程式界面在显示器桌面显示,故需要自动隐藏和加载窗体,通过阅读Windows API实现了这一功能与大伙分享交流一下:原本C#自带Hide()和Show()方法;但是在项目开发时将窗体定义为静态类型;故无法通过this关键字来调用其对应的隐藏和显示窗体方法。这里通过Windows API提供的函数来实现,首先要获取当前运行窗体的句柄,方法如下:
定义一个全局变量
IntPtr Handle;
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
Handle = FindWindow(null,"窗体名称");//lpWindowName为窗体名称
接下来定义常量
Private Const int SW_HIDE = 0//隐藏
Private Const int SW_RESTORE = 9//显示
导入Win32引用
[DllImport("user32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern int ShowWindow( int hwnd, int nCmdShow);
通过全局变量Handle调用方法即可实现功能
ShowWindowAsync(Handle,SW_HIDE);//实现自动隐藏
ShowWindow(Handle,SW_RESTORE);//自动弹出窗体
定义一个全局变量
IntPtr Handle;
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
Handle = FindWindow(null,"窗体名称");//lpWindowName为窗体名称
接下来定义常量
Private Const int SW_HIDE = 0//隐藏
Private Const int SW_RESTORE = 9//显示
导入Win32引用
[DllImport("user32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern int ShowWindow( int hwnd, int nCmdShow);
通过全局变量Handle调用方法即可实现功能
ShowWindowAsync(Handle,SW_HIDE);//实现自动隐藏
ShowWindow(Handle,SW_RESTORE);//自动弹出窗体
相关文章推荐
- 关于调用隐藏窗体的问题(C#)
- C# 窗体加载时隐藏的问题
- 关于c#页面加载时确定和取消问题
- C# 关于winFrom控制网页的自动登录的问题(网页刷屏器的制作原理)
- 关于C#中动态加载AppDomain的问题
- C#关于Windows窗体最大化所引起的闪烁问题的处理经验
- C# 窗体靠近屏幕边缘自动隐藏*学习(类似于QQ)
- 一个关于C#中一次关闭多个子窗体的问题
- C#窗体贴边自动隐藏组件 By Red_angelX
- 仿QQ 窗体拖到 windows窗体边上时,C#WinForm 自动隐藏
- 经典问题 C#隐藏和显示窗体
- 【转载】关于C#中动态加载AppDomain的问题
- C#窗体贴边自动隐藏组件 By Red_angelX
- C#窗体贴边自动隐藏组件 By Red_angelX
- 关于C#中hibernate.cfg.xml动态加载问题
- (转贴)C#窗体贴边自动隐藏组件
- 关于第一个窗体隐藏后显示第二个窗体,第二个窗体关闭后显示第一个窗体的问题
- C#WinForm仿qq窗体拖到windows窗体边上时,自动隐藏C#WinForm
- c# 实现窗体拖到屏幕边缘自动隐藏
- C#WinForm仿qq窗体拖到windows窗体边上时,自动隐藏C#WinForm