Win Registry

Question

One day, my boss want me to finish one function which let the users can double click project file(*.opr) to startup application easy and quickly. oh, This function is very common, Just like double clicked the Microsoft Word Document(*doc,*docx), then, we can startup Micrsoft Word Application to edit frich text. Ok, let's do it.

  1. Win And Mac OS use the different way to associated file type.
  2. Now the App only process one project at same time. if use the double click to open opr file. how to do when opend one project now?
  3. Current App mode is single-one mode.

How

When we get the new task about program, First to think about it. What's i will finish? Did i do it before? How i should to do ? If you think nothing, There is better way to get the answer from internet for you.

I think nothing. But, I know it is associate windows registry in Windows OS and List.Info file In Mac OS. So, I want to know how to finished it use the C++ or Qt. I also searched some documents about how to read/write registry with Qt. I was feel better that time. But when i tried all ways what them said, they are both failed. I spend half of the day, but not working. Their blogs not have the good introduction.

Now, I get the right answer from blogs of cnblogs.com. cnblogs.com is bester web site bout the programe than others.

Done

I used Qt frame to finished it. if you know QSettings classes, it will be very easy, if not, please to see thw Qt help manual about the QSettings class at first.

/** some include file */
#ifdef Q_OS_WIN
#include <QSettings>
#endif #ifdef Q_OS_WIN
void checkWinRegistry()
{
QString val;
QString exePath = qApp->applicationFilePath();
exePath.replace("/", "\\"); QSettings regType("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\.abc",
QSettings::NativeFormat);
QSettings regIcon("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\.abc\\DefaultIcon",
QSettings::NativeFormat);
QSettings regShell("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\.abc\\Shell\\Open\\Command",
QSettings::NativeFormat); /** . means default value, you can also use the "Default" string */
if("" != regType.value(".").toString()){
regType.setValue(".","");
} /** 0 使用当前程序内置图标 */
val = exePath + ",0";
if(val != regIcon.value(".").toString()){
regIcon.setValue(".",val);
} val = exePath + " \"%1\"";
if(val != regShell.value(".").toString()){
regShell.setValue(".",val);
}
}
#endif int main(int argc, char *argv[])
{
QApplication a(argc, argv); checkWinRegistry(); /** if you want to get the file path, please use argv[1], if argc >= 2 */
QString text;
text = QString::number(argc);
text += "\n";
for(int i=0; i<argc; i++){
text += QString(argv[i]);///< This way to get the QString may be is unreadable code. eg, include chinese language, we should use `QStringList ltArguments = a.arguments();`
text += "\n";
} Widget w(text);
w.show(); return a.exec();
}

Compared

if you don't clear about my way. Now, you could to see the following images about How to associate file type in QtCreater. we know that double *.pro file, we can startup QtCreater application to programing. How ?

  1. In Windows we can use Ctrl+R and input regedit, Enter to open the windows registry editer.
  2. Let we find HKEY_CURRENT_USER\SOFTWARE\Classes\.pro, you can see what keys and values under this item;

  3. Then let we find HKEY_CURRENT_USER\SOFTWARE\Classes\QtProject.QtCreator.pro, what keys and values under this item;

  4. There are other file type of qt.

Compared and to finished your work by try and try.

Associate Aile Aype An Aac As

personal Blogs

qt.io

stackoverflow

Qt Mac Release

stackoverflow

qt.io

Info.plist Mac

stackoverflow:overriding Mac app file associations via CFBundleDocumentTypes in info.plist

Reference

wikipedia Windows Registry

support windows registry

wikipedia Registry cleaner

知乎:为什么Win要有注册表,而Unix其他系统不需要

win注册表详解

c# cnblogs

vc cnblogs

Qt Win wiki.qt.io

Qt Mac stackoverflow

Qt Mac csdn

Mac And Win csdn


Associate File Type with Qt In Mac Os and Win的更多相关文章

  1. QT在Mac OS上编译运行初体验

    QT是一个跨平台的框架,支持PC端(Windows.Linux和Mac OS)以及移动端(Android和IOS),之前的开发大都在Windows或者Ubuntu上,考虑到项目多平台支持性,本文对Ma ...

  2. Qt在Mac OS X下的编程环境搭建

    尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...

  3. Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)

    尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...

  4. vmware 安装 Mac OS X 10.9 Mavericks

    This guide shows how to install fresh OS X 10.9 Mavericks on VMware workstation with Windows 7 or Wi ...

  5. Qt在windows与Mac OS中获取执行程序版本号

    1 windows中获取执行文件exe的版本号   QString GetFileVertion(QString aFullName) { QString vRetVersion; string vF ...

  6. A MacFUSE-Based Process File System for Mac OS X

    referer: http://osxbook.com/book/bonus/chapter11/procfs/ Processes as Files The process file system  ...

  7. Mac OS X 10.10 Yosemite PHP 5.5.14 free type support fix

    通过将php将至5.4来勉强支持freetype扩展,不推荐此方法 after upgrading to new Mac OS X Yosemite, i noticed that free type ...

  8. 在 Virtual Box 安装 Mac Os 并安装 Qt 开发应用

    导读 由于 Beslyric-for-X 项目开发需要,开始尝试在 Mac Os 下开发 Qt 应用.尝试成功后,记录于此,希望对有类似需求的人有所帮助. 本文以开发 Beslyric-for-X 为 ...

  9. Mac OS安装octave出现的问题-'error:terminal type set to 'unknown'的解决'

    学习Machine learning需要使用Octave语言,毕竟Andrew Ng (恩达.吴)力荐.本机系统Mac OS X EI Capitan, 其实什么系统都无所谓了,安装原理都是一样的. ...

随机推荐

  1. C#读写 AB PLC 直接通过节点来读写数据 读写 AllenBradley PLC

    本文将使用一个Github开源的组件库技术来读写AB PLC,使用的是基于以太网的实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 官网:http:/ ...

  2. 《DSP using MATLAB》示例 Example 9.10

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  3. opencrud graphql 数据操作指南

    opencrud 是社区团队提出,同时prisma框架就是按照这个标准设计的,里面包含了对于graphql 数据 操作的最佳实践,目前还在完善中,但是设计以及指南覆盖的功能还是比较全的,如果用过 pr ...

  4. 自定义linux命令

    ​ 方法一.修改/etc/bashrc文件 在文件底部加入 alias zone="cd /usr/local/webserver" 在命令行输入zone,则会直接进入到制定目录 ...

  5. 卸载 visual studio 2012时先把系统还原打开

    否则,会停留在创建还原点那儿很长时间 .

  6. debian7配置iptables

    vim /etc/iptables.rule 文件内容如下 *filter # Allows all loopback (lo0) traffic and drop all traffic to / ...

  7. Train-Alypay-Cloud:分布式微服务中间件sofa 开发培训(第二次)

    ylbtech-Train-Alypay-Cloud:分布式微服务中间件sofa 开发培训(第二次) 1.返回顶部 1. 这是本次培训的内容,望各位提前配好环境.工具.2.6-2.7 我们在环球金融8 ...

  8. 20190313_C#反转绘制字符串

    效果图: 代码: private void button7_Click(object sender, EventArgs e) { Point p = new Point(10,10); Graphi ...

  9. 20181205_C#窗体监听键盘事件

    1. 需要设置窗体的   KeyPreview = true; 2. 如果窗体上有获取的了焦点的button按钮, 则监听不到 Enter事件, 需要取消按钮的焦点

  10. js 获取下一秒 时间

    function getNextTime(start){ //var start = '09:30:00'; var _s = new Date(); var startDate = _s.getFu ...