美文网首页.NETC++程序员
Step by step:一起来学C# (6)

Step by step:一起来学C# (6)

作者: 长肉肉呱 | 来源:发表于2018-10-04 17:11 被阅读141次

前言:我目前在写的一个上位机演示程序,有一个功能还没完全实现好,然后又找到了可以使用的替代程序,所以就需要先调用这个外部程序,等到我们自己的实现好了再换上去。为了方便用户的操作我想过两个方案:一个是安装外部程序之后,通过访问注册表获取程序安装路径,然后再调用。二是将程序安装后的可执行文件和依赖的包一并拷贝到我们的程序的bin/debug文件夹下,就可以直接调用了。优缺点我在文章末尾给出,下面我将给出两种方案的实现方法~

嘎嘎嘎

提纲:c#如何注册表获取程序安装路径以及通过c#的Process类调用外部程序。

一、实验效果

由于注册表访问的方式只能运行注册表项中列出来的可执行程序,但并不是所有安装的程序都有在注册表中列出来,因此测试时得要先知道哪些程序在注册表中可以访问到~首先就给大家介绍一下打开注册表的方法:按下win+“r”键->输入“regedit”->点击"确定",即可查看注册表。

访问注册表

注册表中记录程序安装路径信息的位置是:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

注册表访问

(1)获取程序路径

通过Visual studio启动或者在工程文件夹的bin/debug文件夹下找到.exe文件运行改程序,即可得到如下界面。

在程序名处,输入注册表中有的程序名,若不知道哪些程序在注册表中登记过,就参照上面给出的方法查看一下吧。本人安装了谷歌浏览器,我们便以chrome为例:在程序名称处输入“chrome”->点击“获取路径”->成功查询到时,下面便会显示查到的程序安装路径。

程序功能展示1

(2)调用程序方式一

成功通过注册表查询,获取到路径之后,单击“调用程序”按钮,即可打开外部程序啦~

程序功能展示2

(3)调用程序方式二

单击“打开FlashPrint”,即可调用FlashPrint程序。这个FlashPrint程序的可执行文件等,被我事先放置到工程的bin/Debug文件夹下,该按钮的功能就是简单的调用。改写时,就是将要调用的可执行程序一并拷贝到本工程文件夹下,然后更改为自己要调用的程序的路径即可。

程序功能展示3

二、实现方法

先使用拖控件,简单修改控件属性(主要是更改外观,外观不影响功能,不重要),搭出界面:

界面搭建

1.方案一

(1)通过注册表获取路径

双击获取路径添加按钮响应函数的代码:

通过注册表获取路径的代码

需要注意的是我们安装的程序路径信息主要在注册表中的如下位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths。

本段函数的功能就是:检索HKEY_LOCAL_MACHINE下的SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\+“程序名称.exe”项,获取程序路径。若成功获取到,则将程序路径显示出来;若检索失败,则给出用户提示信息(通过显示路径的那个label和界面最下方的textbox显示用户提示信息)。

(2)通过获取到的路径调用程序

先在窗体类下面添加之后需要使用的process实例对象。

声明Process对象

PS:这里有一个关于Process(进程)、thread(线程)、以及两者差别的知识点,有兴趣可以自行学习一下~

双击“调用程序”添加按钮响应函数代码:

通过获取到的路径调用程序的代码

这一段函数的功能就是创建一个进程,设置进程启动路径为我们查询到的注册表中的位置,并开启进程,若出现异常则给出提示信息。

2.方案二

方案二:安装程序之后找到安装路径,再将整个程序文件夹拷贝到工程位置(此处我们拷贝到了bin/debug文件夹下),然后再使用相对路径进行调用。

这么做的原因是:我们当时需要调用3个外部程序,但是其中有1个没有办法在注册表中成功找到,无法通过方案一查询到之后再调用。使用这个方法之后我们还发现一个好处,就是用户不再需要自己安装另外外部程序了。

(1)复制外部程序文件夹到本工程

用户的确不需要安装外部程序啦,但是我们还是要先装一下,然后找到程序文件夹。以FlashPrint为例进行试验。软件下载地址:链接:https://pan.baidu.com/s/1q0OGW-XSHP7fVUFaIHM1PQ提取码:bs8t。

下载得到的安装文件

我的电脑是64位的,直接双击下面一个,选择语言、点击我接受协议然后一路“下一步”到安装结束即可。注意:需要记录一下程序安装位置,待会儿要去该位置下把程序文件夹拷贝过来。

程序安装位置

此处我是将FlashForge文件夹直接拷贝到本工程文件夹的bin/Debug文件夹下

拷贝安装得到的文件夹到工程文件下

(2)添加按钮响应函数

双击“打开FlashPrint”添加按钮响应功能函数:

打开FlashPrint”按钮响应功能函数

该函数的功能是当未创建进程时创建进程并启动,若进程已经创建过则运行进程。

三、优缺点分析

关于优缺点上文也提到了一些,下面我们更具体第说明一下:

方案一的优点:

(1)编写程序是比较方便,不需要做程序文件夹拷贝等工作,直接安装查询注册表即可。

(2)不会导致我们自己的程序文件特别大

方案二的优点:

(1)无法从注册表中查询到程序路径时,本程序依然能够工作

(2)用户不需要考虑安装外部程序的过程,可以直接使用

本文程序的下载链接待会儿在评论中给出(突然想起来01-DOC下的readme还没写(`・ω・´))~

相关文章

  • Step by step:一起来学C# (6)

    前言:我目前在写的一个上位机演示程序,有一个功能还没完全实现好,然后又找到了可以使用的替代程序,所以就需要先调用这...

  • Step by step:一起来学C# (1)

    前言:大二开始接触C#,除了做出来的界面丑点(也可能是我自个儿的审美问题?),功能很强大,上手超快。不用抱着一本类...

  • Step by step:一起来学C# (2)

    提纲: (1)C#的编程环境介绍 (2)C#的几个语言要素 (3)第一个C#的窗体程序 一、编程环境 C#的编程使...

  • Step by step:一起来学C# (4)

    前言: 通过前面的学习,我们知道了 (1)如何在界面上添加一个控件,并且双击控件,进入响应函数代码的编写 (2)如...

  • Step by step:一起来学C# (3)

    前言:前两天肥老家啦,本来想着要休息几天,啥事儿不干混吃混喝等开学,奈何家里有个贤内助,鼓励我写文章,说指着我的文...

  • Step by step:一起来学C# (5)

    前言:盼呀盼,实验室终于放暑假啦,虽然只有10天假,感觉还是很美滋滋哒。在家啥事儿没干,吃饭睡觉玩手机,渡过了两三...

  • win10开启linux

    step1 step2 step3 step4 step5 step6

  • 使用Android studio 七步生成aar格式文件及引用过

    看图说话 step1: step2: step3: step4: step5: step6: step7: 现在就...

  • IDEA 2019.2安装、激活图文教程

    下载IDEA安装包 安装步骤 step1 step2 step3 step4 step5 step6 step7 ...

  • step by step

    忙毕业的事,一直没有时间和心情去研究彩铅画,难的这几天有空闲时间,就找了画纸,买了彩铅(超市里买的儿童24色彩铅笔...

网友评论

本文标题:Step by step:一起来学C# (6)

本文链接:https://www.haomeiwen.com/subject/cdrwtftx.html