C# 查找其他应用程序并打开、显示、隐藏、关闭的API
软件开发中,有时迫不得已要用到第三方的软件,这时就涉及到在C#应用程序需要对第三方软件打开、显示、隐藏以及关闭。
下面列举了几个常用的方式
打开应用程序,下面是2种简单用法:
第一种:

public enum ShowWindowCommands : int
{
SW_HIDE = 0,
SW_SHOWNORMAL = 1, //用最近的大小和位置显示,激活
SW_NORMAL = 2,
SW_SHOWMINIMIZED = 3,
SW_SHOWMAXIMIZED = 4,
SW_MAXIMIZE = 5,
SW_SHOWNOACTIVATE = 6,
SW_SHOW = 7,
SW_MINIMIZE = 8,
SW_SHOWMINNOACTIVE = 9,
SW_SHOWNA = 10,
SW_RESTORE = 11,
SW_SHOWDEFAULT = 12,
SW_MAX = 13
}
[DllImport("shell32.dll")]
public static extern IntPtr ShellExecute(
IntPtr hwnd,
string lpszOp,
string lpszFile,
string lpszParams,
string lpszDir,
ShowWindowCommands FsShowCmd
); ShellExecute(IntPtr.Zero, "open", @"D:\Program Files\OtherExe.exe", null, null, ShowWindowCommands.SW_SHOWMINIMIZED);

第二种:

Process myProcess = new Process();
myProcess.StartInfo.UseShellExecute = true;
myProcess.StartInfo.FileName = @"D:\Program Files\OtherExe.exe";
myProcess.StartInfo.CreateNoWindow = false;
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
myProcess.Start();

而有时我们在打开其他软件时,又不想让其显示,只有在打开时将其隐藏掉了,虽然上面的例子中myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;涉及到窗口的显示状态,但有时并不是所想的那样显示,可能是本人水平有限,没有正确使用---。
下面我用到了另一种方式实现窗体的查找,隐藏及关闭

[DllImport("user32.dll", EntryPoint = "FindWindow")]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int msg, uint wParam, uint lParam);

使窗体隐藏

IntPtr OtherExeWnd = new IntPtr(0);
OtherExeWnd = FindWindow("SunAwtFrame", null);
//判断这个窗体是否有效
if (OtherExeWnd != IntPtr.Zero)
{
Console.WriteLine("找到窗口");
ShowWindow(OtherExeWnd, 0);//0表示隐藏窗口
}
else
{
Console.WriteLine("没有找到窗口");
}

关闭窗体

IntPtr OtherExeWnd = new IntPtr(0);
OtherExeWnd = FindWindow("SunAwtFrame", null);
//判断这个窗体是否有效
if (OtherExeWnd != IntPtr.Zero)
{
Console.WriteLine("找到窗口");
SendMessage(OtherExeWnd, 16, 0, 0);//关闭窗口,通过发送消息的方式
}
else
{
Console.WriteLine("没有找到窗口");
}

C# 查找其他应用程序并打开、显示、隐藏、关闭的API的更多相关文章
- C# 查找其他应用程序并打开、显示、隐藏、关闭
软件开发中,有时迫不得已要用到第三方的软件,这时就涉及到在C#应用程序需要对第三方软件打开.显示.隐藏以及关闭. 下面列举了几个常用的方式 打开应用程序,下面是2种简单用法: 第一种: public ...
- Win7-其中的文件夹或文件已在另一个程序中打开
Win7-其中的文件夹或文件已在另一个程序中打开 如何解决Win7系统在删除或移动文件时提示,“操作无法完成,因为其中的文件夹或文件已在另一个程序中打开,请关闭该文件夹或文件,然后重试”. 步骤阅 ...
- win10文件夹或文件已在另一程序中打开
我们在对文件或文件夹进行删除.移动.重命名等操作时,系统可能提示“操作无法完成,因为其中的文件夹已在另一程序中打开,请关闭该文件或文件夹,然后重试.”,遇到这种情况我们应该怎么办呢?请看下文. 方法/ ...
- 慧自文档:代替 Everything 来快速查找文件的,实现文件显示在文件夹的层次结构中
1. 搜索功能和Everything一样快和强大 具有 Everything 搜索快.搜索功能强等优点, 解决了不能方便选择搜索哪个文件夹, 解决了不能同一个画面进行预览等问题 2.文件直接显示到文件 ...
- 小程序里打开app的实现过程
之前开发过类似得需求,也踩了一些小坑,在这里和大家分享下,毕竟这样的需求也不在少数,基本上产品后期都会有这样的需求: 官方说明 因为需要用户主动触发才能打开 APP,所以该功能不由 API 来调用,需 ...
- Mac应用程序无法打开或文件损坏的处理方法你知道吗?
很多用户在安装Mac软件的时候,经常会遇到提示“xxx.app已损坏,打不开.您应该将它移到废纸篓“或”打不开的xxx.app,因为它来自身份不明的开发者”,如下图的样子: 真的损坏了么?是不是真的要 ...
- Mac应用程序无法打开,提示不明开发者或文件损坏的处理方法
很多用户在安装Mac软件的时候,经常会遇到提示“xxx.app已损坏,打不开.您应该将它移到废纸篓“或”打不开的xxx.app,因为它来自身份不明的开发者”,如下图的样子: 真的损坏了么?是不是真的要 ...
- 使用未付费的账号真机调试 iOS 程序,过几天后程序一打开就会闪退
使用未付费的苹果开发者账号真机调试 iOS 程序,过几天后程序一打开就会闪退. 解决办法: 删除 Provisioning Profile,重新配置一次. 终极解决办法:花钱购买苹果开发者账号. ...
- [收集]在iPhone桌面的应用程序图标右上角显示数字
能够在ios桌面的程序icon右上角显示数字(badge number)的方法 在ViewController中的viewDidLoad方法中添加如下代码即可 - (void)viewDidLoad ...
随机推荐
- Vulkan SDK之 CommandBuff
Basic Command Buffer Operation 调用指定的api, 驱动将命令放入指定的buff当中. 在其他图形API(dx,or opengl) ,glsetlinewidth驱动会 ...
- 2020年9大顶级Java框架
诞生于1995年的Java,目前已在134,861个网站上广泛使用,包括ESPN.SnapDeal等.在其24年的成长史中,Java已经证明了自己是用于自定义软件开发的顶级通用编程语言. Java广泛 ...
- maven学习(三)-使用maven来创建项目
转自https://www.cnblogs.com/xdp-gacl/p/4240930.html maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项 ...
- RGB转到HSV色彩空间转换
原文链接:https://blog.csdn.net/lsg19920625/article/details/78416649
- Python基本数据类型之字符串
Python转义字符 在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符.如下表: 转义字符 描述 \(在行尾时) 续行符 \\ 反斜杠符号 \' 单引号 \" 双引号 \a ...
- MySQL--从库启动复制报错1236
链接:http://blog.csdn.net/yumushui/article/details/42742461 今天在搭建一个MySQL master-slave集群时,执行了change mas ...
- VC++ DLL 3 动态链接库
前面先介绍了静态链接库的方式提供了函数结构的方法,现在就来说下,如果用非MFC的动态链接库要怎么实现,这个过程稍微复杂一点点,但是基本也都是一个套路下来. 1.新建一个工程: 2.编写cpp文件和头文 ...
- JDK8 API离线文档免费下载&JavaEE API文档离线下载&API在线查看链接&常用的JAR包下载
1.JDK8 API离线文档 链接:https://pan.baidu.com/s/1fYc-QesmYRumTEPmnSgEKA 提取码:2bdr 2.JavaEE API文档离线下载 链接:htt ...
- Python笔记_第五篇_Python数据分析基础教程_相关安装和版本查看
1. IDE说明: 所有的案例用Anacoda中的Jupiter工具进行交互式讲解. 2. 版本和安装: NumPy从如下网站安装:http://sourceforge.net/projects/nu ...
- Python时间问题
获取当前的时间,time只能精确到秒,而datetime可以精确到毫秒,所以使用格式化的时候要注意. nowTime=time.localtime((time.time())) t=time.strf ...