WinForm 应用程序中开启新的进程及控制

C#使用Bat批处理修改当前运行程序的进程名 实现原理: 1、获取当前程序的进程名称 2、创建批处理bat文件,批处理bat文件一共实现四个功能: 杀死当前进程,命令:taskkill /f /im 当前进程名称 修改当前程序文件名,命令:ren 旧文件名新文件名 删除旧文件,命令:del /q /f 旧文件名程序全路径 启动新的程序,命令:start {3} 新文件名程序全路径 3、运行bat文件 先看一下效果图: 批处理工具类:BatUtils.cs /// <summary> /// 批处理工具类... 阅读详情

在 Winform 里有时会需要打开另一个应用程序或文件,比如打开浏览器、打开word文档、打开文件夹和打印文件等等。本文介绍用 C# 在 Winform 中打开一个新进程,完成上述功能。

using System.Diagnostics

该命名空间提供与系统进程、事件日志、性能计数器的交互。其中与进程相关的两个基本类是 System.Diagnostics.Process 和 System.Diagnostics.ProcessStartInfo

  1. System.Diagnostics.Procss:提供对本地和远程进程的访问,并使您能够启动和停止本地系统进程.
    (1)  Start ():启动进程,主要有如下参数设置
    Start( ProcessStartInfo )
    Start( string FileName )
    Start( string FileName, string Arguments )

    (2) 属性:
    Id:唯一进程标识号
    ProcessName:进程名称
    MachineName:进程运行所在的计算机名
    StartInfo:进程的 StartInfo
    StartTime:启动进程的时间
    ExitTime:退出进程的时间
    HasExited:进程是否已经终止

  2. System.Diagnostics.ProcessStartInfo:与 Process 一起使用,为 Process 设置启动参数
    (1)  构造方法:
    ProcessStartInfo ()
    ProcessStartInfo ( string FileName )
    ProcessStartInfo ( string FileName, string Arguments)

    (2)  一些属性:
    FileName:应用程序或文件名
    Arguments:参数
    WorkingDirectory:启动进程的初始目录
    CreateNoWindow:是否在新窗口启动进程
    WindowStyle:指定打开窗口时的状态(枚举值)
    Verb:打开进程时需要使用的谓词;每个文件扩展名都有它自己的一组谓词;可以使用 Verbs 属性获取这些谓词。例如,“print”谓词将打印使用 FileName 指定的文档。可使用空字符串 ("") 指定默认谓词。

 

下面用一个 WinForm 小程序来简单实现打开进程:
image

首先,引入命名空间: using System.Diagnostics;

 

(1) 打开文件


        private void btnOpenFile_Click(object sender, EventArgs e)
        {
            // 定义一个 ProcessStartInfo 实例
              ProcessStartInfo psi = new ProcessStartInfo();
            // 设置启动进程的初始目录
              psi.WorkingDirectory = Application.StartupPath;
            // 设置启动进程的应用程序或文档名
              psi.FileName = @"xwy20110619.txt";
            // 设置启动进程的参数
              psi.Arguments = "";
            //启动由包含进程启动信息的进程资源
              try
            {
                Process.Start(psi);
            }
            catch (System.ComponentModel.Win32Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }
复制代码

 

(2) 打开浏览器


        private void btnOpenIE_Click(object sender, EventArgs e)
        {
            // 启动IE进程
              Process.Start("IExplore.exe");
        }
复制代码

 

(2) 打开指定 URL


        private void btnOpenUrl_Click(object sender, EventArgs e)
        {
            // 方法一 
              // 启动带参数的IE进程
              Process.Start("IExplore.exe", "http://www.cnblogs.com/SkySoot/");

            // 方法二
              // 定义一个ProcessStartInfo实例
              ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
            // 设置进程参数
              startInfo.Arguments = "http://www.cnblogs.com/SkySoot/";
            // 并且使进程界面最小化
              startInfo.WindowStyle = ProcessWindowStyle.Minimized;
            // 启动进程
              Process.Start(startInfo);
        }
复制代码

 

(2) 打开文件夹


        private void btnOpenFolder_Click(object sender, EventArgs e)
        {
            // 获取“收藏夹”文件路径
              string myFavoritesPath = System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites);
            // 启动进程
              System.Diagnostics.Process.Start(myFavoritesPath);
        }
复制代码

 

(2) 打印文档


        private void btnPrintDoc_Click(object sender, EventArgs e)
        {
            // 定义一个进程实例
              Process myProcess = new Process();
            try
            {
                // 设置进程的参数
                  string myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
                myProcess.StartInfo.FileName = myDocumentsPath + "\\TxtForTest.txt";
                myProcess.StartInfo.Verb = "Print";

                // 显示txt文件的所有谓词: Open,Print,PrintTo
                foreach (string v in myProcess.StartInfo.Verbs)
                {
                    MessageBox.Show(v);
                }

                // 是否在新窗口中启动该进程的值
                  myProcess.StartInfo.CreateNoWindow = true;
                // 启动进程
                  myProcess.Start();
            }
            catch (Win32Exception ex)
            {
                if (ex.NativeErrorCode == 1)
                {
                    MessageBox.Show(ex.Message + " Check the path." + myProcess.StartInfo.FileName);
                }
                else if (ex.NativeErrorCode == 2)
                {
                    MessageBox.Show(ex.Message + " You do not have permission to print this file.");
                }
            }
复制代码
转自:http://www.cnblogs.com/SkySoot/archive/2011/11/25/2263605.html
winform 运行中使用控制台动态输出调试及运行信息 如何:在 Winform 动态启动、控制台命令行? 需求    winForm 程序输出类型为 windows 程序(不是命令行程序)    在运行时想输入一些信息编译开发调试,如何实现这一功能 解答:   AllocConsole、FreeConsole 这两个 阅读详情

相关推荐

C# WinForm实现定时开启关闭程序的实践指南

C#(发音为 "C Sharp")是一种由微软公司开发的现代、类型安全的面向对象编程语言。它由 Anders Hejlsberg 和 Scott Wiltamuth 于 2000 年首次发布,并成为了 .NET Framework 的一部分。由于其与 C 和 C++ 的相似性,C# 已经成为众多开发者首选的语言之一。

weixin_42323064的博客 1384

C#的学习笔记【五】进程操作

【实例 1】创建 Windows 应用程序,在 RichTextBox 控件中显示所有当前系统中正在运行的进程。 使用Button和richTextbox控件,并进行更改窗体名称 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Lin

BoomBiuBiu的博客 1773

脑电分析中的频谱特征提取 —— 从理论到实践

本文系统介绍了脑电信号(EEG)频谱特征提取方法及其应用。EEG信号通过频谱分析可分为Delta、Theta、Alpha、Beta和Gamma等具有明确生理意义的频段。文章详细讲解了功率谱密度、频带功率、相对功率、频谱熵等关键特征的计算方法,并提供了Python实现示例,包括模拟数据和真实CHB-MIT癫痫数据集的处理流程。这些频谱特征在脑机接口、情绪识别、疲劳监测和癫痫检测等领域具有重要应用价值。文章强调频谱特征结合时域和非线性特征可提升分析效果,为EEG研究提供了实用指导。

qq_32516809的博客 1441

c#winform程序的改名(修改名称)

c#winform程序的改名(修改名称) c#windows应用程序一般情况下,是一个文件夹外加一个*.sln文件,项目中的名称要改的话,可以按照如下方法进行: 1、项目右键选择“属性”,选择“应用程序”,修改“程序集名称、默认命名空间、程序集信息”; 2、解决方案、窗体名称可以直接在属性中改; 3、目录下的所有原文件WG_24(后缀名:sln、suo、user...)通过修改文件名称(重

brian0031的专栏 1万+

FPGA实战:手把手教你实现VESA DSC编码(附Verilog代码解析)

本文详细介绍了如何使用FPGA实现VESA DSC编码器,包括核心架构设计、Verilog代码实现与优化技巧。通过流水线设计、色彩空间转换和预测编码等关键技术,帮助开发者掌握工业级DSC编码器的开发流程,并提供实用的调试与性能优化方法。

weixin_29165725的博客 402

宇树机器人G1二次开发:导览、起始点、目的地与完整示例

通过宇树G1 SDK的导航接口,开发者可以高效地实现机器人的自主移动功能。连接 -> 设置目标点 -> 发送命令 -> 监控状态。本文提供的完整示例涵盖了从环境搭建到代码实现的全部步骤,并解释了起始点、目的地等关键概念。开发者可以在此基础上,结合多目标点巡逻、动态避障(需高级配置)等功能,构建更复杂的机器人应用。建议读者先在小范围、熟悉的平坦环境中测试,成功后再逐步扩展到更复杂的场景。

m0_52645558的博客 744

c#实现进程开启另一个进程时传递参数

例如主程序下可能会挂在其他程序,但是他们可能公用一个登陆账号或站点,这时就需要主程序开启其下的子程序时将站点消息,登录消息或者权限等相关信息传递到子进程中以作判断使用,本文就简单介绍了两个进程之间传递参数的基础内容。...

weixin_44451672的博客 2824

Python 实战:爬取高德地图交通数据(路况拥堵指数分析)

高德地图是由高德软件有限公司开发的一款地图导航产品,提供详细的地图浏览、路线规划、实时路况、公共交通查询等功能。高德地图拥有庞大的用户群体和海量的交通数据,这些数据对于交通管理、城市规划、出行服务等领域具有重要的价值。通过对高德地图交通数据的分析,我们可以了解城市交通的运行状况,识别拥堵路段,预测交通流量,为交通管理部门和出行者提供决策支持。

yansideyucsdn的博客 2684

WinForm+C#代码实现控制应用程序自启动功能

本文主要讲述WinForm开发应用程序需要设置自启动功能,这个也是在实际开发中经常涉及到的,非常实用,所讲到的是通过注册表来控制程序是否自行启动,具体功能实现上两张图,更直观。 如下图:程序设置保持界面实现代码using Microsoft.Win32; using System; using System.Collections.Generic; Author : 付义方

软件研发实战应用技术分享 8957

大数据领域数据服务的数据分析工具推荐

你有没有过这样的经历?——领导说“帮我分析一下上个月的销量”,你打开Excel却发现数据有100万行,电脑直接卡死;或者想实时知道“现在直播间的观众在买什么”,却不知道用什么工具处理每秒10万条的点击数据。本文的目的:帮你解决“选什么工具做什么事”的问题,覆盖大数据服务的全流程(采集→存储→处理→分析→可视化),推荐高频、实用、易上手的工具,并讲清楚它们的“适用场景”和“优缺点”。范围。

大数据洞察的博客 1931

【面试系列】数据工程师高频面试题及详细解答

本文针对数据工程师岗位,提供了详尽的面试题库和解答,分为初级、中级和高级三个层次。初级面试题主要涉及基本的数据处理和ETL工具的使用,如SQL查询、数据清洗和基本的数据建模。中级面试题重点考察数据管道设计、数据库优化和大数据平台的应用。高级面试题则深入探讨高级数据处理技术、分布式系统架构和数据湖的实现。通过这些问题和解答,候选人可以全面了解数据工程师岗位所需的技能,帮助其更好地准备面试。常考知识点总结部分则系统归纳了数据工程师岗位的关键技能领域。

在路上的专栏 2375

C#:如何用VS开启人生中第一个Windows窗体应用程序(Winform)?

适合于C#Winform程序初学者,安装好软件的下一步。需要VS2019中文版下载安装包的可以私我,安装便捷可靠。

lucgh的博客 8960

什么是信噪比?信噪比越大好还是越小好?

在进行声音增强的时候,往往需要考虑声音信号和噪声的信噪比,那么信噪比是什么呢?越大越好还是越小越好,此处引入百度百科的解读: 信噪比,英文名称叫做SNR或S/N(SIGNAL-NOISE RATIO),又称为讯噪比。是指一个电子设备或者电子系统中信号与噪声的比例。这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化。 同样是“原信号不存在”还有一种东西叫“失真”,失真和噪声实际上有一

码匀的博客 7万+

C#在WinForm中打开控制台显示

引用: namespace 测试使用 { public partial class Form1 : Form { [System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError = true)] [return: System.Ru...

weixin_30312659的博客 4230

vue接入海康4G版摄像头通过萤石云平台推送视频流教程

vue-video-player接入海康视频,videojs-contrib-hls,vue播放视频

renkai721的专栏 7276

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

winform html5桌面,开启新模式WinForm - Jokerpapapa

从今天开始咱们正式进入WinForm开发模式首先很官方的介绍下什么是winform:客户端应用程序:C/S这就是winform有什么特别特别重要的特点呢:可以操作用户电脑上的文件举个简单的例子:很多人都玩过LOL/CF/DOTA/CS/DNF这些游戏,也有很多人不玩游戏,但是使用过暴风影音、QQ音乐、酷狗、爱奇艺等等什么是客户端?就是你从网上下载的安装包,双击打开之后,傻瓜式安装(下一步、下一步、...

weixin_30954817的博客 393

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

开启新模式WinForm

从今天开始咱们正式进入WinForm开发模式 首先很官方的介绍下什么是winform:客户端应用程序:C/S 这就是winform 有什么特别特别重要的特点呢:可以操作用户电脑上的文件 举个简单的例子: 很多人都玩过LOL/CF/DOTA/CS/DNF这些游戏, 也有很多人不玩游戏,但是使用过暴风影音、QQ音乐、酷狗、爱奇艺等等 什么是客户端? 就是你从网上下载的安装包,...

ailing5137的博客 129

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C#_winform内嵌控制台

引用的函数: [System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError = true)] [return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)] static extern bool AllocConsole();//开启

qq_38069903的博客 2627

WinForm 进程,线程

一、进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。 Process 类,用来操作进程。 命名空间:using System.Diagnostics; Process.Start("calc");  //打开计算器Process.Start("mspaint");  //打开画图P...

dinghuangni7242的博客 153

工业控制上位机通用框架之用户注册登录Winform应用程序Demo:开启智能工业新篇章

工业控制上位机通用框架之用户注册登录Winform应用程序Demo:开启智能工业新篇章 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代工业控制系统中,用户注册和登录功能是确保系统安全、管理用户权限的基础。今天,我们就来介绍一款开源项目——工业控制上位机通用框架之「用户注册/登录」Winform应用程序Demo。它为开发者提供了一套高效、稳定且易于扩展的用户认证解...

gitblog_06791的博客 853
上一篇: c#.net使用正则表达式验证文本中是否包含手机号码或电话号码?
下一篇: WinForm 下实现一个自动关闭的MessageBox
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值