博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#:关联程序和文件
阅读量:6294 次
发布时间:2019-06-22

本文共 2950 字,大约阅读时间需要 9 分钟。

 一、关联代码

///         /// 关联程序和类型        ///         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.在写链接的时候自定义参数,程序会把整个链接都获取到,自己在进行解析 :比如:123123会获取到“MyOfficeCon://hello”
View Code

 2、线程开启程序时传参

新建板书一.dbbE:\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

 

转载地址:http://vxpta.baihongyu.com/

你可能感兴趣的文章
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>