M
mumuwoyou
Unregistered / Unconfirmed
GUEST, unregistred user!
在windows中文件与程序的关联,当我们在某一类型的文件(一个或多个)上点击右键,会弹出于这一文件类型关联的
程序,我们选择一种程序,程序启动,调用打开命令打开被选择的文件.关于程序在注册表中的关联表示我知道,我要
问的是,我们在程序的编制时,如何处理这一系统调用,启动程序,打开相应的文件(我们如何知道文件名
并打开)。我在Tale的电子小说阅览器的初始化代码中发现了paramstr,paramstr(0)为程序的文件名,paramstr(1~ ?)为
他的其他参数。请较为详细告诉我原理,给出例程和注释。
1.CSDN上有一个同样的问题(解释一下):
我最近作了一个简单的察看某种格式文件的浏览器,假设文件后缀为*.xxx,我怎样才能使以这样
后缀结尾的文件以我的浏览器为默认浏览器,另外,怎样在双击文件时得到他的全名,因为我显示文件内容的前提是先知道它的文件名。
--回复得分 0 --
补充:文件名是系统通过DDE调用你的OpenDocumentFile(LPCTSTR lpfilename)时传递给你的;当然前提是你使用MFC缺省的处理方式;实际上也可以处理命令行参数象Un1提到的;
--回复得分 0 --
请问各位,怎样在双击文件时得到他的全名并将文件名传给我的程序知道?
--回复得分 0 --
如shines所言,然后当你的程序被启动时,在命令行上就有完整的文件名.
--回复得分 0 --
双击文件名时,文件所在目录即被设置位当前目录,在程序里可以用API函数
DWORD GetCurrentDirectory(
DWORD nBufferLength, // size, in characters, of directory buffer
LPTSTR lpBuffer // address of buffer for current directory
)
获取当前目录,加上文件名即可得到他的全名
--回复得分 0 --
怎么!没有看明白我的上一个帖子?
你只要重载CWinApp::OpenDocumentFile()函数,就不用管文件名从双击来的还是命令行来得到的,而且是全路径!
--回复得分 0 --
正如大家所言,我已经取得了文件名,但无法用WriteProfileString在注册表的HKEY_CLASSES_ROOT内写入shines告诉的内容,好像WriteProfileString只能写在HKEY_CURRENT_USER/SOFTWARE/,有谁指点一下。
--回复得分 10 --
因为WriteProfileString是MFC包装在CWinApp的应用程序注册函数之一,其只能根据应用程序中保存的主键在其子键中增改信息。
你需要自己打开注册表建立HKEY与要写的地方对应,简单的方法是用MFC的CRegKey类,高兴的话也可以用API来写,也没有很麻烦查找RegOpenKeyEx及其相关的函数就可。
****问题是????*********
如果你只是支持一种文件扩展名的话是不需要编程或手工修改注册表的,只需在资源文件中将文档的字符串信息填写完整即可!!
************************
--回复得分 0 --
谢谢各位,可惜分太少了,可能分赃不均。
程序,我们选择一种程序,程序启动,调用打开命令打开被选择的文件.关于程序在注册表中的关联表示我知道,我要
问的是,我们在程序的编制时,如何处理这一系统调用,启动程序,打开相应的文件(我们如何知道文件名
并打开)。我在Tale的电子小说阅览器的初始化代码中发现了paramstr,paramstr(0)为程序的文件名,paramstr(1~ ?)为
他的其他参数。请较为详细告诉我原理,给出例程和注释。
1.CSDN上有一个同样的问题(解释一下):
我最近作了一个简单的察看某种格式文件的浏览器,假设文件后缀为*.xxx,我怎样才能使以这样
后缀结尾的文件以我的浏览器为默认浏览器,另外,怎样在双击文件时得到他的全名,因为我显示文件内容的前提是先知道它的文件名。
--回复得分 0 --
补充:文件名是系统通过DDE调用你的OpenDocumentFile(LPCTSTR lpfilename)时传递给你的;当然前提是你使用MFC缺省的处理方式;实际上也可以处理命令行参数象Un1提到的;
--回复得分 0 --
请问各位,怎样在双击文件时得到他的全名并将文件名传给我的程序知道?
--回复得分 0 --
如shines所言,然后当你的程序被启动时,在命令行上就有完整的文件名.
--回复得分 0 --
双击文件名时,文件所在目录即被设置位当前目录,在程序里可以用API函数
DWORD GetCurrentDirectory(
DWORD nBufferLength, // size, in characters, of directory buffer
LPTSTR lpBuffer // address of buffer for current directory
)
获取当前目录,加上文件名即可得到他的全名
--回复得分 0 --
怎么!没有看明白我的上一个帖子?
你只要重载CWinApp::OpenDocumentFile()函数,就不用管文件名从双击来的还是命令行来得到的,而且是全路径!
--回复得分 0 --
正如大家所言,我已经取得了文件名,但无法用WriteProfileString在注册表的HKEY_CLASSES_ROOT内写入shines告诉的内容,好像WriteProfileString只能写在HKEY_CURRENT_USER/SOFTWARE/,有谁指点一下。
--回复得分 10 --
因为WriteProfileString是MFC包装在CWinApp的应用程序注册函数之一,其只能根据应用程序中保存的主键在其子键中增改信息。
你需要自己打开注册表建立HKEY与要写的地方对应,简单的方法是用MFC的CRegKey类,高兴的话也可以用API来写,也没有很麻烦查找RegOpenKeyEx及其相关的函数就可。
****问题是????*********
如果你只是支持一种文件扩展名的话是不需要编程或手工修改注册表的,只需在资源文件中将文档的字符串信息填写完整即可!!
************************
--回复得分 0 --
谢谢各位,可惜分太少了,可能分赃不均。