Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的自定义文件扩展名+; 如何在C++中创建自定义扩展名?我知道它在C语言中是相当容易实现的,但是我还没有看到C++中的类似的事情。_C++_Windows_File Extension - Fatal编程技术网

C+中的自定义文件扩展名+; 如何在C++中创建自定义扩展名?我知道它在C语言中是相当容易实现的,但是我还没有看到C++中的类似的事情。

C+中的自定义文件扩展名+; 如何在C++中创建自定义扩展名?我知道它在C语言中是相当容易实现的,但是我还没有看到C++中的类似的事情。,c++,windows,file-extension,C++,Windows,File Extension,我的意思是,如果我有一个.xyz文件和一个读取.xyz文件的程序,Windows会自动打开这些文件,那么我该如何编写一些东西呢?简单的回答是,一般来说,你无法这样做。第一个问题是,这取决于操作系统如何处理。甚至在那里,决定谁打开哪个文件的主要不是程序,而是操作系统。你的操作系统根本不需要知道你是否有一个特定的程序。您所能做的就是在某种安装程序中建议操作系统使用您的程序打开特定文件。我不使用windows,但这可能意味着添加一些注册表项。简单的回答是,一般情况下您无法这样做。第一个问题是,这取决于

我的意思是,如果我有一个.xyz文件和一个读取.xyz文件的程序,Windows会自动打开这些文件,那么我该如何编写一些东西呢?

简单的回答是,一般来说,你无法这样做。第一个问题是,这取决于操作系统如何处理。甚至在那里,决定谁打开哪个文件的主要不是程序,而是操作系统。你的操作系统根本不需要知道你是否有一个特定的程序。您所能做的就是在某种安装程序中建议操作系统使用您的程序打开特定文件。我不使用windows,但这可能意味着添加一些注册表项。

简单的回答是,一般情况下您无法这样做。第一个问题是,这取决于操作系统如何处理。甚至在那里,决定谁打开哪个文件的主要不是程序,而是操作系统。你的操作系统根本不需要知道你是否有一个特定的程序。您所能做的就是在某种安装程序中建议操作系统使用您的程序打开特定文件。我不使用windows,但这可能意味着要添加一些注册表项。

看一看。很明显,你想了解Windows,所以每个操作系统都不一样这一事实并不重要

这有几个部分。首先,您需要编写实现某些特定COM接口的代码。然后,将条目放入注册表,告诉Windows在哪里可以找到您编写的代码。根据您的需要,这可能只是启动应用程序并打开文件,但也可能包括Windows资源管理器在平铺视图中显示的缩略图(word文档和.txt文件看起来都一样,但jpgs有一个缩略图,即迷你图像)、Windows资源管理器可以在侧面显示的预览、自定义属性等等。所有这些都涉及到shell和应用程序之间的交互,通过您实现的COM接口,并且shell调用,因为它在注册表中看到了您编写的应用程序。很明显,你想了解Windows,所以每个操作系统都不一样这一事实并不重要


这有几个部分。首先,您需要编写实现某些特定COM接口的代码。然后,将条目放入注册表,告诉Windows在哪里可以找到您编写的代码。根据您的需要,这可能只是启动应用程序并打开文件,但也可能包括Windows资源管理器在平铺视图中显示的缩略图(word文档和.txt文件看起来都一样,但jpgs有一个缩略图,即迷你图像)、Windows资源管理器可以在侧面显示的预览、自定义属性等等。所有这些都涉及到shell和您的应用程序之间的交互,通过您实现的COM接口,以及shell调用,因为它在注册表中看到您编写了它们。

在Windows上,您可以通过
assoc
命令行实用程序(请参阅)或直接在注册表中执行操作(参见示例)

在Linux系统上,对于每种文件类型,您都必须注册它的MIME类型,然后为该MIME类型注册一个处理程序。有关全面概述,请参阅

我必须承认,我对苹果操作系统的了解还不够,无法在这方面有所帮助


编辑:我刚刚记得它在Mac OS上是如何工作的:在你的应用程序包(
*.app/
目录)中,创建一个名为
Contents/Info.plist
的文件,内容跟在后面,并为元素创建条目。

在Windows上,你可以通过
assoc
命令行实用程序(请参阅)或者直接在注册表中执行操作(参见示例)

在Linux系统上,对于每种文件类型,您都必须注册它的MIME类型,然后为该MIME类型注册一个处理程序。有关全面概述,请参阅

我必须承认,我对苹果操作系统的了解还不够,无法在这方面有所帮助


编辑:我刚刚记得它在Mac OS上是如何工作的:在您的应用程序包(
*.app/
目录)中,创建一个名为
Contents/Info.plist
的文件,其中的内容跟在后面,并为元素创建条目。

uuuh,您的意思是将某物命名为name.xyz,然后将其表示为您自己的格式:)有几件事我能想到你的意思,但答案都是:和C#一样。那么,你能再详细说明一下吗?嗯,你的意思是给某物命名为name.xyz,然后将其表示为你自己的格式:)?有几件事我可以想到,你的意思可能是,但所有这些问题的答案都是:与C#中的方法相同。那么你能再详细说明一下吗?