C#启动一个外部程序(2)

转载 2007年09月21日 18:25:00
 

调用Win32 API。
1.
using System.Runtime.InteropServices;
2.
[DllImport(
"shell32.dll")]
        
public static extern int ShellExecute(IntPtr hwnd,StringBuilder lpszOp,StringBuilder lpszFile,
                                                    StringBuilder lpszParams,StringBuilder lpszDir,
int FsShowCmd);
3.调用,打开记事本:
int a = ShellExecute(IntPtr.Zero,new StringBuilder("Open"),new StringBuilder("notepad"),
                            new
 StringBuilder(""),new StringBuilder(@"C:"), 1);
            System.Windows.Forms.MessageBox.Show(a.ToString());
4.打开一个网页:
ShellExecute(IntPtr.Zero,
new StringBuilder("Open"),new StringBuilder("http://yao.cnblogs.com/"),
                                new
 StringBuilder(""),new StringBuilder(""), 1);

ShellExecute函数原型及参数含义如下:

  function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
                                                        Directory: PChar; ShowCmd: Integer): HINST; stdcall;

  ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即 Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。

   ●Operation:用于指定要进行的操作。其中“open”操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;“print”操作表示打印由FileName参数指定的文件;“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为nil时,表示执行默认操作“open”。

  ●FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。

  ●Parameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(
0)。

  ●Directory:用于指定默认目录。

  ●ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。此参数更详细说明见:C#启动一个外部程序


  若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。
调用Win32 API。
1.
using System.Runtime.InteropServices;
2.
//
        
//#define SW_HIDE             0 //隐藏窗口,活动状态给令一个窗口
        
//#define SW_SHOWNORMAL       1 //用原来的大小和位置显示一个窗口,同时令其进入活动状态
        
//#define SW_NORMAL           1
        
//#define SW_SHOWMINIMIZED    2
        
//#define SW_SHOWMAXIMIZED    3
        
//#define SW_MAXIMIZE         3
        
//#define SW_SHOWNOACTIVATE   4 //用最近的大小和位置显示一个窗口,同时不改变活动窗口
        
//#define SW_SHOW             5 //用当前的大小和位置显示一个窗口,同时令其进入活动状态
        
//#define SW_MINIMIZE         6 //最小化窗口,活动状态给令一个窗口
        
//#define SW_SHOWMINNOACTIVE  7 //最小化一个窗口,同时不改变活动窗口
        
//#define SW_SHOWNA           8 //用当前的大小和位置显示一个窗口,不改变活动窗口
        
//#define SW_RESTORE          9 //与 SW_SHOWNORMAL  1 相同
        
//#define SW_SHOWDEFAULT      10
        
//#define SW_FORCEMINIMIZE    11
        
//#define SW_MAX              11
        [DllImport("kernel32.dll")]
        
public static extern int WinExec(string exeName, int operType);
3.
WinExec(
@"C:WINDOWSsystem32cmd.exe",5);

C#做服务使用Process启动外部程序没窗体

最近想写一个进程守护程序并把它做成服务,结果发现在服务中启动带窗体的应用程序,只有进程看不到窗体。 找了很多文章,最后选择了一个答案: 网上也有叫session0穿透的,具体的大家可以找找。 (我...
  • finish_dream
  • finish_dream
  • 2017年03月03日 11:00
  • 2143

c#启动一个外部程序

启动一个外部程序: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
  • ghevinn
  • ghevinn
  • 2013年02月20日 16:03
  • 1066

在windows下打开关闭外部应用程序的方法。

项目里有几个应用程序,它们之间有先后关系,有时需要在某个程序中,重新启动另外一个应用程序,因此需要找到windows api来实现。 在这里列举三种情况:在程序中,纯粹打开外部应用程序、纯粹关闭外部...
  • daye704
  • daye704
  • 2016年04月12日 12:32
  • 982

C#实现对外部程序的调用操作

C#借助API实现黑盒自动化测试工具的编写 本文代码下载(VS2010开发):http://download.csdn.net/source/2796362 本文摘要: 1:一个简单...
  • m0_37283423
  • m0_37283423
  • 2017年07月10日 11:03
  • 1369

C/C++执行外部程序(调用外部exe程序)

C中的函数: 1.exec() 函数家族: exec() 家族的函数将会创建一个新的进程来执行程序。(不能设置权限,只是单纯的传值执行exe) _execl, _wexecl _execv, _wex...
  • u011164819
  • u011164819
  • 2016年12月02日 10:53
  • 2788

【VS开发】C++调用外部程序

关于三个SDK函数:WinExec, ShellExecute,CreateProcess的其他注意事项: 【1】定义头文件 必须定义以下两个头文件: [cpp] view ...
  • LG1259156776
  • LG1259156776
  • 2016年08月25日 09:10
  • 1876

C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)

防止程序运行多个实例的方法有多种,如:通过使用互斥量和进程名等.而我想要实现的是:在程序运行多个实例时激活的是第一个实例,使其获得焦点,并在前端显示. 主要用到两个API 函数: ShowW...
  • dyllove98
  • dyllove98
  • 2013年03月29日 13:30
  • 4571

Qt之启动外部程序

QProcess可以用来启动外部程序,并与它们交互。要启动一个进程,通过调用start()来进行,参数包含程序的名称和命令行参数,参数作为一个QStringList的单个字符串。另外,也可以使用set...
  • u011012932
  • u011012932
  • 2016年01月07日 20:41
  • 12483

C#程序只允许运行一个实例的解决方案

C#程序只允许运行一个实例的解决方案 Posted on 2010-03-15 16:29 Charles Chen 阅读(5068) 评论(13) 编辑 收藏      最近在做winform的...
  • lphbtm
  • lphbtm
  • 2016年08月10日 15:47
  • 1070

[分享]外部exe窗体嵌入winform

using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u...
  • config_man
  • config_man
  • 2015年03月12日 11:26
  • 3709
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#启动一个外部程序(2)
举报原因:
原因补充:

(最多只允许输入30个字)