您的位置:软件 > 开发者网络 > 微软开发专栏 > Visual Studio.net专栏 > VB.net > 正文
VB.NET启动并监测外部程序
[文章信息]
作者:wayne
时间:2003-07-21
出处:yesky
责任编辑:方舟
[文章导读]
使用.NET框架中的Process类来启动并监视外部程序可以进一步简化代码.....
advertisement
热点推荐
· 天极网软件频道改版调查
· 在ASP.NET程序中创建唯一序号
· 用JVM工具接口创建调试和分析代理
· Win 2000如何安装配置防火墙
· 防范Windows消息钩子的侵入
[正文]

1 2 3 4  下一页



  你再也不需要使用Win32应用编程接口或者VB的Shell函数来启动外部应用程序了。因为你可以使用.NET框架中的System.Diagnostics.Process类来进行这个操作,从而进一步简化代码。

  虽然.NET使很多事情变得更加复杂,但是启动外部应用程序不在此列。在传统VB程序中,你可以使用Shell函数启动一个应用程序。当你传送一个数据文件名的时候,VB在相应应用程序中打开这个数据文件。你可以使用一个任选的windowstyle参数控制所启动的应用程序的窗口方式。例如,在VB6中,下面这行代码将启动默认的文本编辑器(通常是记事本)并打开文件"c:\somepath\somefile.txt":

returnID = Shell("c:\somepath\somefile.txt", vbNormalFocus)

  通过Microsoft.VisualBasic.Comaptibility域名空间,在VB.NET中仍然能够使用Shell功能,并且它已经被做了一些改动,但在.NET框架中它并不是启动应用程序的最好的方法,因为Shell函数有一些严格的限制条件,其中之一就是只能异步地启动程序;在启动应用程序之后,你自己的程序才继续运行。所以你不能直接使用它来启动一个程序,并且只能等到这个程序退出,你才能返回到你自己的程序中。为了在传统VB中做到这点,你必须求助于Windows API,而这需要对窗口句柄、过程识别号、枚举最高级窗口等有所了解。

  使用.NET,就能使这个操作变得很简单。你可以使用System.Diagnostics域名空间中的Process类来启动外部程序。你可以简单的使用共享的Process.Start方法启动一个新的过程,把一个可执行文件名或者可执行应用程序的扩展关联文件名作为参数传输给它。例如,下面的代码启动"c:\somepath\somefile.txt"文件。

System.Diagnostics.Process.Start ("c:\somepath\somefile.txt")

  Start方法有一个超载的版本,能返回一个Process对象,所以你可以获得对启动的过程的引用,并可用于多种用途:

Dim myProcess As Process = System.Diagnostics.Process.Start
("c:\somepath\somefile.txt")
MessageBox.Show(myProcess.ProcessName)

  初看起来,你看上去好象丧失了控制窗口风格的能力(还记得Shell函数的第二个参数吗?),但是事实情况并非如此。在很多情况下,你不需要明确地设置窗口风格,因为默认情况是在一个带有焦点的正常窗口(ProcessWindowStyle.Normal)中启动过程。但是如果你想使用一个不同的窗口风格时,可以使用超载的Process.Start方法接收一个ProcessStartInfo对象参数而不是一个简单的字符串。为了使用它,首先要创建一个ProcessStartInfo对象,然后设置进程初置值。两个超载方法让你设置一个文件名或者一个文件名和一组命令行参数。并且ProcessStartInfo对象还有一个WindowStyle属性,由System.Diagnostics.Process.WindowStyle枚举的值组成。所以你可以调用Process.Start方法并传送一个ProcessStartInfo对象来控制启动的窗口的风格。

Dim psInfo As New _
System.Diagnostics.ProcessStartInfo _
("c:\somepath\somefile.txt")
psInfo.WindowStyle = _
System.Diagnostics.ProcessWindowStyle.Normal
Dim myProcess As Process = _
System.Diagnostics.Process.Start(psInfo)

  由于Process类有一个StartInfo属性,它是一个ProcessStartInfo对象,所以另一种产生相同结果的方法是创建一个Process对象并设置它的StartInfo属性。在预创建的Process对象的时候,你可以仅仅调用它的Start方法,而不需使用Process类的共享Start方法。

Dim myProcess As System.Diagnostics.Process = _
new System.Diagnostics.Process()
myProcess.StartInfo.FileName = _
"c:\somepath\somefile.txt"
myProcess.StartInfo.WindowStyle = _
System.Diagnostics.ProcessWindowStyle.Normal
myProcess.Start


1 2 3 4  下一页

·"WAP天极之IT新闻资讯,50万元等你拿"    ·天极WAP之游戏狂图,50万元等你下载


发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容阅读排行榜
  • 主板超频特色技术GIGA技嘉篇
  • Win 2000如何安装配置防火墙
  • 防范Windows消息钩子的侵入
  • 性价比之选 AGP显卡的告别秀
  • 大学校园生活之聊天也疯狂
  • Fireworks制作GIF动画Banner
  • 金山打击外挂 遭网络游戏玩家起诉
  • 完全公测《开天》掀起滔滔巨浪
  • Advertisement

    天极无线
    待机彩图    >>更多
    多彩动画    >>更多
    美妙和弦    >>更多
    天使在唱歌
    壁虎漫步
    PrettyBoy
    LoveLoveLove
    我是你的小小狗
    单身情歌
    十面埋伏
    祝酒歌
    回心转意
    波斯猫
    太委屈
    S.H.E
    潘玮柏
    M2M
    蔡依林
    阿牛
    林志炫
    陈弈迅
    刀郎
    黑龙
    S.H.E
    陶晶莹
    情人玫瑰坊
    音乐风云
    新片速递
    神秘测试
    都市约会
    ·天极彩信天天精彩
    ·图铃梦工厂下载无限!
    ·找寻童真,卡通专题
    ·夏日激情交友社区!
    ·星座运程,预测人生

    CSEEK搜索