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. .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换

    .NET/C# 程序从 Main 函数开始执行,基本上各种书籍资料都是这么写的.不过,我们可以写多个 Main 函数,然后在项目文件中设置应该选择哪一个 Main 函数. 你可能会觉得这样没有什么用, ...

  2. zoj 1828 Fibonacci Numbers

    A Fibonacci sequence is calculated by adding the previous two members of the sequence, with the firs ...

  3. Documentation/filesystems/sysfs.txt 文档翻译--sysfs

    sysfs - 用于导出内核对象的文件系统. 1.sysfs是一个基于ram的文件系统,最初基于ramfs. 它提供了一种方法,可以将内核数据结构,它们的属性以及它们之间的链接导出到用户空间.sysf ...

  4. Yocto使用小技巧

    1. 借助Yocto编译模块 SRC := mytest obj-m := $(SRC).o KDIR := /media/Yocto/build/tmp/work/poky-linux/linux- ...

  5. udev学习笔记汇总

    1.什么是udev udev--就是动态设备管理 udev 能够处理设备事件.管理设备文件的权限.在/dev目录中创建额外的符号链接.重命名网络接口,等等. 内核通常仅根据设备被发现的先后顺序给设备文 ...

  6. Android 查看Android版本的方法

    1.通过源码查看 Android 版本 路径:build/core/version_defaults.mk PLATFORM_VERSION := 2.通过编译时终端输出查看 ============ ...

  7. linux Posix 信号量 二

    一.Posix信号量 1.Posix信号量分为两种: 1.   有名信号量:使用Posix IPC名字标识(有名信号量总是既可用于线程间的同步,又可以用于进程间的同步) 2.   内存信号量:存放在共 ...

  8. yii2 memcache 跨平台交互 键和值不一样

    1 首先在配置文件中加载 web\basic\config\web.php ........ 'components' => [ 'request' => [ // !!! insert ...

  9. Python链表与反链表

    # -*- coding:utf8 -*- #/usr/bin/env python class Node(object): def __init__(self, data, pnext = None ...

  10. Hive常见问题汇总

    参考资料: Hive常见问题汇总 啟動hive出錯,提示沒有權限 2015年04月02日 09:58:49 阅读数:31769 这里小编汇集,使用Hive时遇到的常见问题. 1,执行#hive命令进入 ...