C#:关联程序和文件

 一、关联代码

        /// <summary>
        /// 关联程序和类型
        /// </summary>
        private void RegFileExt()
        {
            try
            {
                string boardExe = @"BlackBoardTool\bin\Teacher.UCBook.BlackBord.exe";
                string boardExeFullName = Path.Combine(GlobalInfos.ExePath, boardExe);
                if (File.Exists(boardExeFullName))
                {
                    string MyExtName = ".dbb";
                    string MyType = "dbb_auto_file";
                    string MyContent = "application/dbb";
                    string command = "\"" + boardExeFullName + "\"" + " \"%1\"";
                    RegistryKey key = Registry.ClassesRoot.OpenSubKey(MyType);
                    if (key == null)
                    {
                        RegistryKey MyReg = Registry.ClassesRoot.CreateSubKey(MyExtName);
                        MyReg.SetValue("", MyType);
                        MyReg.SetValue("Content Type", MyContent);
                        MyReg = Registry.ClassesRoot.CreateSubKey(MyType);
                        MyReg.SetValue("", MyType);
                        MyReg = MyReg.CreateSubKey("Shell\\Open\\Command");
                        MyReg.SetValue("", command);
                        MyReg.Close();
                        _logger.Info("设置文件关联操作成功!");
                    }
                    else 
                    {
                        var myReg = key.OpenSubKey("Shell\\Open\\Command",true);
                        if (myReg!=null && (myReg.GetValue("")==null || myReg.GetValue("").ToString()!=command))
                        {
                            myReg.SetValue("", command);//解决因目录变化导致 注册表失效的问题
                            myReg.Close();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.ErrorFormat("设置文件关联失败!{0}",ex.Message);
            }
        }
        
View Code

 二、注释

  1、前面是路径,后面的 %1就是可变参数,代表任意用xxxx.exe来执行的程序  (可传至于exe程序)

  2、string command = Environment.CommandLine.Trim();//获取进程命令行参数 含:.exe 全路径、打开文件的全路径(直接通过运行环境获取命令行)

  3、static void Main(string[] args){} //args:仅含打开文件的全路径,不包含.exe 全路径 (程序运行时获取参数)

三、参考:

 1、

1.写注册表的时候,最后路径要加上参数,如:

[HKEY_CLASSES_ROOT\Simu\shell\open\command]
@="\"x:\\simu\\Simulink.exe\" \"%1\""

前面是路径,后面的 %1就是参数了

2.程序的主入口加入参数,以C#为例:

 static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                MessageBox.Show(args[0].ToString());
            }            
        }

3.在写链接的时候自定义参数,程序会把整个链接都获取到,自己在进行解析 :

比如:

<a href="MyOfficeCon://hello">123123</a>

会获取到

“MyOfficeCon://hello”
View Code


 2、线程开启程序时传参

新建板书一.dbb

E:\working\Client\Build\Teacher.Build\user\16\resource\mbook_de0df31a6fd14e3390a8d65c19342801\resource\4d4db1cc.dbb

_boardPath:  E:\working\Client\Build\Teacher.Build\bin\Teacher.UCBook.BlackBord.exe

_args:  16 -p "E:\working\Client\Build\Teacher.Build\user\16\resource\mbook_de0df31a6fd14e3390a8d65c19342801\resource\4d4db1cc.dbb" 新建板书一.dbb 

System.Diagnostics.Process.Start(_boardPath, _args);
View Code

 

转载于:https://www.cnblogs.com/shenchao/p/5492777.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C是一种常用的编程语言,它由美国贝尔实验室的Dennis Ritchie在20世纪70年代开发出来。C语言是一种结构化的、高级的、通用性强的编程语言,广泛应用于系统软件开发、驱动程序编写和嵌入式系统开发等领域。 C语言具有简洁、高效、可移植的特性。它的语法简单明了,采用自顶向下的编程思想,具有良好的可读性和易于维护性。C语言的代码编译生成机器码的速度很快,执行效率高,能够充分利用计算机的硬件资源。 C语言的语法规范包括基本数据类型、运算符、控制结构、函数等。它支持面向过程的编程范式,允许开发者根据具体需求定义自己的函数和数据类型,同时也支持面向对象的编程思想,可以使用结构体和指针来模拟类和对象。 C语言有丰富的标准库和第三方库,包括输入输出、字符串处理、内存管理、文件操作等功能,开发者可以利用这些库来快速地实现复杂的功能。同时,C语言还支持与汇编语言的混合编程,可以直接调用汇编语言的函数,提高程序的性能。 C语言的应用广泛,几乎所有的操作系统都使用C语言编写,包括Windows、Unix、Linux等。许多著名的软件,如操作系统、数据库、编译器等,都是使用C语言开发的。同时,C语言也是学习其他高级编程语言的基础,如C++、Java、Python等,这些语言都有一定程度上的C语言的语法和特性。 总而言之,C语言是一门重要的编程语言,具有简洁高效、可移植性强的特点,广泛应用于系统软件开发和嵌入式系统开发等领域,是学习其他高级语言的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值