C# 查找其他应用程序并打开、显示、隐藏、关闭

软件开发中,有时迫不得已要用到第三方的软件,这时就涉及到在C#应用程序需要对第三方软件打开、显示、隐藏以及关闭。

下面列举了几个常用的方式

打开应用程序,下面是2种简单用法:

第一种:

public enum ShowWindowCommands : int
        {
            SW_HIDE = 0,
            SW_SHOWNORMAL = 1,    //用最近的大小和位置显示,激活
            SW_NORMAL = 1,
            SW_SHOWMINIMIZED = 2,
            SW_SHOWMAXIMIZED = 3,
            SW_MAXIMIZE = 3,
            SW_SHOWNOACTIVATE = 4,
            SW_SHOW = 5,
            SW_MINIMIZE = 6,
            SW_SHOWMINNOACTIVE = 7,
            SW_SHOWNA = 8,
            SW_RESTORE = 9,
            SW_SHOWDEFAULT = 10,
            SW_MAX = 10
        }
[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(ParenthWnd, 16, 0, 0);//关闭窗口,通过发送消息的方式
}
 else
{
      Console.WriteLine("没有找到窗口");
}
时间: 2024-10-14 18:40:25

C# 查找其他应用程序并打开、显示、隐藏、关闭的相关文章

如何用Deeper打开Mac程序里的显示完整工具栏?

怎样用Deeper打开Mac程序里的显示完整工具栏?这个问题看似很简单,但是如果我们不能掌握其中的小技巧,就会花费我们双倍甚至更多的时间.所以,今天小编给大家带来快速用Deeper打开Mac程序里的显示完整工具栏的小技巧,希望对大家有所帮助! 一.首先打开Deeper软件,在软件主页面右上角单击“程序”图标,在打开的“程序”页面找到“屏幕共享”栏.如下图所示: 二.单击“屏幕共享”里“显示完整工具栏”选项(该选项前对勾为蓝色即可),如下图所示: 以上就是MacDown小编为您带来的快速用Deep

SCCM2012软件中心的“从应用程序目录中查找其他应用程序”打不开的解决方法

软件中心的"从应用程序目录中查找其他应用程序"处可以打开部署的应用程序,刚部署完后打开怎么没反应呢? IIS在SCCM服务器上,登到服务器从本地打开提示错误 Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

慧自文档:代替 Everything 来快速查找文件的,实现文件显示在文件夹的层次结构中

1. 搜索功能和Everything一样快和强大      具有 Everything 搜索快.搜索功能强等优点,      解决了不能方便选择搜索哪个文件夹,      解决了不能同一个画面进行预览等问题   2.文件直接显示到文件夹的层次结构中     非常直观,很有利于快速找文档   3. 很方便就可以指定要搜索的文件夹      因为集成了"Windows资源管理器"放在"目录栏"   4. 同一个画面的快速预览.嵌入预览        更方便排查以找到目标

基于Visual C++2010与office2010开发办公自动应用(1)在自己的程序里面打开office文档

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net Office 2010,是微软推出新一代办公软件,开发代号为Office 14,实际是第12个发行版.该软件共有6个版本,分别是初级版.家庭及学生版.家庭及商业版.标准版.专业版和专业高级版,此外还推出Office 2010免费版本,其中仅包括Word和Excel应用.除了完整版以外,微软还将发布针对Office 2007的升级版O

Mac应用程序无法打开,提示不明开发者或文件损坏的处理方法

很多用户在安装Mac软件的时候,经常会遇到提示“xxx.app已损坏,打不开.您应该将它移到废纸篓“或”打不开的xxx.app,因为它来自身份不明的开发者”,如下图的样子: 真的损坏了么?是不是真的要移动到废纸篓呢?遇到这样的情况,通常是打开任何来源即可轻松解决,下面Macdown小编就为您带来Mac应用程序无法打开或文件损坏的处理方法,解答Mac没有任何来源选项怎么开启?的问题,为您轻松解决打开任何来源解决Mac提示文件“已损坏”的问题,一起看下. 1. 打开系统偏好设置界面,进入安全性与隐私

打开VS2012项目“关闭程序”

在Win7-32系统上装完VS2012并使用一段时间后,当打开VS2012项目时出现如下对话框: 通过查资料得知这是由于VS2012的漏洞导致的,下载并安装完Microsoft Visual Studio 2012 更新 (KB2781514)文件patch_KB2781514.exe之后,问题得到解决.文件下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=36020 打开VS2012项目"关闭程序",布布扣,bu

[收集]在iPhone桌面的应用程序图标右上角显示数字

能够在ios桌面的程序icon右上角显示数字(badge number)的方法 在ViewController中的viewDidLoad方法中添加如下代码即可 - (void)viewDidLoad { [super viewDidLoad]; [UIApplication sharedApplication].applicationIconBadgeNumber = 2; } [收集]在iPhone桌面的应用程序图标右上角显示数字,布布扣,bubuko.com

Android应用程序全屏显示方法

导入两个包: import android.view.Window; import android.view.WindowManager; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(W

delphi程序全屏显示无标题栏覆盖整个屏幕

delphi 简单实现程序全屏显示无标题栏,覆盖整个屏幕,这个在做工控机或屏保时有用的,具体代码如下,感兴趣的朋友可以参考下哈 delphi 程序全屏显示无标题栏,覆盖整个屏幕,这个在做工控机或屏保时有用的,所以记下 复制代码 代码如下: procedure TMainFrm.FormCreate(Sender: TObject); begin with MainFrm do begin { Position form } Top := 0 ; Left := 0 ; { Go full scr