1         /// <summary>
2 /// 0-关闭窗口 1-正常大小显示 2最小化窗口 3-最大化窗口
3 /// </summary>
4 /// <param name="hwnd"></param>
5 /// <param name="nCmdShow"></param>
6 /// <returns></returns>
7 [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
8 public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
9
10 /// <summary>
11 /// 显示程序
12 /// </summary>
13 /// <param name="hwnd">窗口句柄</param>
14 /// <param name="nCmdshow">0-关闭窗口 1-正常大小显示 2最小化窗口 3-最大化窗口</param>
15 /// <returns></returns>
16 public int DisPlayWindow(IntPtr hwnd, int nCmdshow)
17 {
18 return ShowWindow(hwnd, nCmdshow);
19 }
20
21 public Process Run(string exeName)
22 {
23 return Process.Start(exeName);
24 }
25
26 IntPtr hWnd = IntPtr.Zero;
27 Process process=null;
28 bool IsMini = true;
29 int nCmdshow = 1;
30 private void button1_Click(object sender, EventArgs e)
31 {
32 //获取句柄
33 if (process == null)
34 {
35 string exeName = Application.StartupPath + @"\CCD\CameraVision.exe";
36 //创建启动进程信息
37 process = Run(exeName);
38 }
39 else
40 {
41 if (IsMini)
42 {
43 DisPlayWindow(process.MainWindowHandle, 1);
44 IsMini = false;
45 }
46 else
47 {
48 DisPlayWindow(process.MainWindowHandle, 2);
49 IsMini = true;
50 }
51 }
52 }

这里实现的是点击一个CCD按钮,打开CCD窗口,再点击CCD按钮,隐藏CCD窗口,测试发现,句柄不能通过这种方式获取:IntPtr hWnd=process.MainWindowHandle;而是直接用process.MainWindowHandle来表示这个进程的句柄,才可以实现。

这里还有一些其他的方法:

        /// <summary>
/// 0-隐藏窗口 1-正常大小显示
/// </summary>
/// <param name="hWnd"></param>
/// <param name="_value"></param>
/// <returns></returns>
[DllImport("user32.dll", EntryPoint = "ShowWindow")]
public static extern IntPtr ShowWindow(IntPtr hWnd, int _value); /// <summary>
/// 获取窗口句柄
/// </summary>
/// <param name="lp1"></param>
/// <param name="lp2"></param>
/// <returns></returns>
[DllImport("user32.dll", EntryPoint = "FindWindow")]
public static extern IntPtr FindWindow(string lp1, string lp2); /// <summary>
/// 获取当前窗口的句柄
/// </summary>
/// <returns></returns>
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetForegroundWindow();

/下面是通过进程的名字(CameraVision.exe)来获取一个进程的句柄:

c#显示和隐藏另外一个进程的更多相关文章

  1. Qt 进程和线程之一:运行一个进程和进程间通信

    Qt提供了对进程和线程的支持.本节讲述了怎样在Qt应用程序中启动一个进程,以及几种常用的进程间通信方法.如果对进程和线程的概念不是很了解,可以看我的另一篇博客:[多进程和多线程的概念. 设计应用程序时 ...

  2. CSS元素的显示与隐藏

    CSS元素的显示与隐藏 我们访问某些网站的时候,经常可以看到一些广告弹出来,点击关闭就不见了,但是重新刷新页面后,广告又会重新弹出来.这就是元素的显示和隐藏的一个应用. 1. display属性 di ...

  3. jquery怎么实现点击一个按钮控制一个div的显示和隐藏

    示例html 1 2 <div class="abc" style="display:none"></div> <input ty ...

  4. 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态。点击列表的项,切换二级列表的显示或隐藏状态

    查看本章节 查看作业目录 需求说明: 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态.点击列表的项,切 ...

  5. C#/WPF 仅启动一个进程实例

    如何实现仅启动一个 WPF 进程实例,并在打开第二个时,自动唤起之前打开的进程. 1 代码入口 在 App.xaml.cs 文件中,重写 OnStartup 方法,并添加 Mutex 进程锁. /// ...

  6. JAVA中让Swagger产出更加符合我们诉求的描述文档,按需决定显示或者隐藏指定内容

    大家好,又见面啦. 在前一篇文档<JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明,提升开发效率>中,我们探讨了如何通过自定义注解的方式扩展swagger的能力让Swag ...

  7. EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听

    软键盘显示和隐藏的监听: 注: mReplayRelativeLayout是EditText的父布局 //监听软键盘是否显示或隐藏 mReplayRelativeLayout.getViewTreeO ...

  8. jQuery判断当前元素显示状态并控制元素的显示与隐藏

    1.jQuery判断一个元素当前状态是显示还是隐藏 $("#id").is(':visible');   //true为显示,false为隐藏 $("#id") ...

  9. Div和Span标签显示与隐藏

    本实例中,学习jQuery的知识,显示与隐藏网页上的div或是span标签. 实际环境中,也许是根据某些条件进行,符合条件时,对某个或是某个div或是span标签时行显示与隐藏. 主要是学习jQuer ...

随机推荐

  1. 一篇文章教你学会ASP.Net Core LINQ基本操作

    一篇文章教你学会ASP.Net Core LINQ基本操作 为什么要使用LINQ LINQ中提供了很多集合的扩展方法,配合lambda能简化数据处理. 例如我们想要找出一个IEnumerable< ...

  2. Enable_hint_table 使用

    KingbaseES enable_hint_table 可以看成类似 oracle outline 工具,可以在不修改SQL 的情况下,通过hint 改变SQL 的执行计划. 一.启用enable_ ...

  3. 手写tomcat——netty版

    点击查看代码 package com.grady.diytomcat; import com.grady.diytomcat.handler.DiyNettyTomcatHandler; import ...

  4. (数据科学学习手札141)利用Learn Git Branching轻松学习git常用操作

    1 简介 大家好我是费老师,Git作为世界上最流行的版本控制系统,可以说是每一位与程序打交道的朋友最值得学习的软件之一.除了管理自己的项目,如果你对参与开源项目感兴趣,那么Git更是联结Github. ...

  5. [Python]-tqdm模块-给for循环加上进度条

    import tqdm 使用tqdm模块,可以在漫长的for循环加上一个进度条,显示当前进度百分比. 将tqdm写在迭代器之外即可:tqdm(iterator) for i in tqdm(range ...

  6. 装饰Hexo博客以及部署个人站点

    我的博客最开始采用的是Hexo+hexo-theme-next搭建的,使用GitHub Pages托管并进行自动化部署,写文发布的流程非常简单方便,云端写作发布也轻而易举. 本来事情到这里就应该结束了 ...

  7. 【gRPC】C++异步服务端客户端API实例及代码解析

    对于同步API而言,程序的吞吐量并不高.因为在每次发送一个gRPC请求时,会阻塞整个线程,必须等待服务端的ack回到客户端才能继续运行或者发送下一个请求,因此异步API是提升程序吞吐量的必要手段. g ...

  8. Oracle基础知识汇总一

    Oracle基础知识 以下内容为本人的学习笔记,如需要转载,请声明原文链接   https://www.cnblogs.com/lyh1024/p/16720759.html oracle工具: SQ ...

  9. nsis制作新版迅雷安装界面

    终于搞出来一点名堂,不借用皮肤插件,圆角,无标题栏拖动,渐隐渐显,纯nsis代码编写,相似度大概也有95%以上了. 演示程序下载

  10. [笔记] 兰道定理 Landau's Theorem

    兰道定理的内容: 一个竞赛图强连通的充要条件是:把它的所有顶点按照入度d从小到大排序,对于任意\(k\in [0,n-1]\)都不满足\(\sum_{i=0}^k d_i=\binom{k+1}{2} ...