社区
进程/线程/DLL
帖子详情
通过双击文件,怎样使windows调用我自己编的程序打开这个文件?
phisherr
2005-09-30 05:16:09
我是这样做的:
先生成了一个自己已知格式的文件xxx.xyz,然后将该类.xyz文件的打开方式设我的程序my.exe。
这样双击xxx.xyz,系统就会调用my.exe。
但是my.exe 中怎样处理才能得到我需要打开的文件名?
我试过用获取命令行的方式:
通过AfxGetApp()->m_lpCmdLine来获取这个文件名。
系统提示了一个很怪的消息框“未发生错误!”
没有找到xxx.xyz文件。
...全文
688
30
打赏
收藏
通过双击文件,怎样使windows调用我自己编的程序打开这个文件?
我是这样做的: 先生成了一个自己已知格式的文件xxx.xyz,然后将该类.xyz文件的打开方式设我的程序my.exe。 这样双击xxx.xyz,系统就会调用my.exe。 但是my.exe 中怎样处理才能得到我需要打开的文件名? 我试过用获取命令行的方式: 通过AfxGetApp()->m_lpCmdLine来获取这个文件名。 系统提示了一个很怪的消息框“未发生错误!” 没有找到xxx.xyz文件。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
phisherr
2005-10-09
打赏
举报
回复
豁然开朗,茅塞顿开!
phisherr
2005-10-09
打赏
举报
回复
多谢,楼上这位仁兄,很有启发性啊!
phisherr
2005-10-08
打赏
举报
回复
up
phisherr
2005-10-08
打赏
举报
回复
up
phisherr
2005-10-08
打赏
举报
回复
奇怪的是:
我通过工程属性添加的命令行
和通过双击文件得到的命令行是完全相同的都是"C:\Documents and Settings\Administrator\桌面\测试包\xxx.xyz"
但是前者能打开文件,
后者却提示“未发现错误!”没有打开文件。
CString st = AfxGetApp()->m_lpCmdLine;
AfxMessageBox(st);
CFile file( st, CFile::modeRead );
Featured
2005-10-08
打赏
举报
回复
楼上这么多仁兄,竟然没几人好好看清楼主问题,
导致分数被我这个菜鸟抢到,惜之……
Featured
2005-10-08
打赏
举报
回复
因为传递命令行参数时,
有个小细节:
如果全路径中含有空格,那么传递的命令行参数将加上引号。
不信你试一下c:\a.txt这样的文件肯定不会出错
因此,你要做的就是去掉这个引号,
CString st = AfxGetApp()->m_lpCmdLine;
if(st.Left(1)=="\"")//如果第一个字符是引号,那么去掉之
{
st=st.Mid(1,st.GetLength()-2);
}
AfxMessageBox(st);
CFile file( st, CFile::modeRead );
Featured
2005-10-08
打赏
举报
回复
其实是引号在作怪
我在几年前搞VB的时候就遇到过这种问题
nf3
2005-10-08
打赏
举报
回复
ding
gohappy_1999
2005-10-07
打赏
举报
回复
mark
erzichang_
2005-10-07
打赏
举报
回复
用这个取得传递exe后传递的参数:AfxGetApp()->m_lpCmdLine
如果是双击,就是传递的被双击的文件名。
自己想怎么处理怎么处理。
rzjkl1980
2005-10-07
打赏
举报
回复
文件关联
qybao
2005-10-06
打赏
举报
回复
兄弟们啊!谢谢了,可是你们没有理解我的意思
我问题中已经说明了,系统已经调用了my.exe 只是my.exe不知到我双击的那个文件!
关键是在my.exe中怎么处理,才能将获得这个文件名(绝对不是用鼠标单击打开文件按钮弹出CFileDialg这样的手动操作).
我想知道,双击xxx.xyz文件后系统做了什么操作,向my.exe传了些什么参数,怎样才能利用这些参数自动的打开xxx.xyz文件?
-------------------------------------------------------------
首先,在编写my.exe时,要传入一个文件名作为参数给主程序,取到参数后判断,如果参数为空就不打开任何文件,如果非空,判断文件是否存在,不存在则提示文件无效,最后就是打开由参数传进来的文件名,然后编译生成你的exe
然后在做上述的文件关联,这样你双击关联文件就能调用你的exe打开了
蒋晟
2005-10-06
打赏
举报
回复
File-type associations is stored in registry.
see
http://www.codeproject.com/shell/cgfiletype.asp
蒋晟
2005-10-06
打赏
举报
回复
file-type associations
long_xing
2005-10-05
打赏
举报
回复
按2,3,4楼兄弟的方法去做,如果还是提示找不到文件,就应该是你程序中处理AfxGetApp()->m_lpCmdLine的问题了。
兄弟不妨贴出代码看看啊
phisherr
2005-10-01
打赏
举报
回复
up
phisherr
2005-10-01
打赏
举报
回复
不是文档视图结构,是基本对话框。
newegg2002
2005-10-01
打赏
举报
回复
向Windows注册你文件的扩展名就行了........
文档视图结构就是这样的.
phisherr
2005-10-01
打赏
举报
回复
up
加载更多回复(10)
chrome
调用
本地exe
1,chrome 浏览器本身不支持直接
调用
exe,但可以使用url protocol handler
调用
exe 2,直接
双击
exe_chrome.reg 安装注册表 3,test.html 要在运行在容器里(tomcat,resin XXXX),本地直接
打开
是执行不了的,我折腾了好久才弄懂这个问题的 注,chrome 通过注册表注册表 只能
调用
本地的 exe 或者bat
文件
,不能
调用
ppt word 这样的问题,所以我用VB 写了一个exe 可以接收
调用
参数,这样只许注册一次就可以通过传参
打开
所有课执行
文件
了 由于1.exe是后台直接
打开
windows
的exe 所以杀毒软件有可能会提示1,exe 是病毒
程序
。
Windows
系统默认
程序
设置指南:设置
双击
文件
默认
打开
程序
简介:
Windows
用户可自定义
文件
扩展名与应用
程序
的关联,以控制
双击
文件
时的默认
打开
程序
。本文提供了通过
文件
属性、控制面板和设置应用等方法修改默认
程序
的详细步骤,并包括了如何解决特殊情况的指导,比如处理被锁定的默认
程序
和注册表中错误的配置。了解这些步骤可以帮助用户提升工作效率,确保
文件
安全,并适应软件环境和需求的变化。
matlab2013
双击
m
文件
,matlab
双击
.m
文件
另外
打开
一个matlab
程序
的问题
在使用matlab 2010b以后的版本时,
双击
m
文件
再也不能像之前的版本那样:
打开
matlab主
程序
,同时以MEdito
打开
我们
双击
的m
文件
。这一现象开始也想到可能是
文件
关联的问题,m
文件
没有关联上matlab。于是会选择
文件
的
打开
方式,然后找到matlab主
程序
,关联上。可之后问题又来了,这一关联以后,
双击
m
文件
便
调用
了matlab主
程序
,而且把m
文件
运行了一遍,却没有
打开
MEditor
编
辑器...
java 启动对应的
windows
程序
来
打开
对应
文件
这里有两种方法: 1.利用java运行时环境和
windows
系统应用
程序
首先我们都知道,在
Windows
中浏览器可以用来
打开
很多不同的
文件
,比如网页,txt和pdf等等(前提是你的系统注册了相关软件)。 那么IE是通过什么方式来实现不同
文件
用不同软件来
打开
呢? 其实它有一个叫url.dll 的动态链接库,url.dll提供了IE
调用
各种应用来
打开
不同
文件
的实现。既然...
程序
根据
文件
后缀
调用
电脑的默认
程序
打开
文件
背景 最近想实现类似于在软件中点击工具栏的Help,软件会自动根据
文件
的后缀来
打开
软件的手册或帮助文档的功能,比如:软件的手册是Manual.pdf,那么单击Help中对应的项,则Manual.pdf
文件
会被电脑上默认的pdf
文件
阅读器(e.g. Foxit Reader)
打开
以供User浏览。那么问题可以转化为: 如何
程序
实现根据
文件
后缀来判断
调用
电脑上的默认
程序
来
打开
文件
呢?其实也就是模拟了...
进程/线程/DLL
15,467
社区成员
49,170
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章