社区
进程/线程/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文件。
...全文
638
30
打赏
收藏
通过双击文件,怎样使windows调用我自己编的程序打开这个文件?
我是这样做的: 先生成了一个自己已知格式的文件xxx.xyz,然后将该类.xyz文件的打开方式设我的程序my.exe。 这样双击xxx.xyz,系统就会调用my.exe。 但是my.exe 中怎样处理才能得到我需要打开的文件名? 我试过用获取命令行的方式: 通过AfxGetApp()->m_lpCmdLine来获取这个文件名。 系统提示了一个很怪的消息框“未发生错误!” 没有找到xxx.xyz文件。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
用户可自定义
文件
扩展名与应用
程序
的关联,以控制
双击
文件
时的默认
打开
程序
。本文提供了通过
文件
属性、控制面板和设置应用等方法修改默认
程序
的详细步骤,并包括了如何解决特殊情况的指导,比如处理被锁定的默认
程序
和注册表中错误的配置。了解这些步骤可以帮助用户提升工作效率,确保
文件
安全,并适应软件环境和需求的变化。
java 启动对应的
windows
程序
来
打开
对应
文件
这里有两种方法: 1.利用java运行时环境和
windows
系统应用
程序
首先我们都知道,在
Windows
中浏览器可以用来
打开
很多不同的
文件
,比如网页,txt和pdf等等(前提是你的系统注册了相关软件)。 那么IE是通过什么方式来实现不同
文件
用不同软件来
打开
呢? 其实它有一个叫url.dll 的动态链接库,url.dll提供了IE
调用
各种应用来
打开
不同
文件
的实现。既然...
matlab2013
双击
m
文件
,matlab
双击
.m
文件
另外
打开
一个matlab
程序
的问题
在使用matlab 2010b以后的版本时,
双击
m
文件
再也不能像之前的版本那样:
打开
matlab主
程序
,同时以MEdito
打开
我们
双击
的m
文件
。这一现象开始也想到可能是
文件
关联的问题,m
文件
没有关联上matlab。于是会选择
文件
的
打开
方式,然后找到matlab主
程序
,关联上。可之后问题又来了,这一关联以后,
双击
m
文件
便
调用
了matlab主
程序
,而且把m
文件
运行了一遍,却没有
打开
MEditor
编
辑器...
程序
根据
文件
后缀
调用
电脑的默认
程序
打开
文件
背景 最近想实现类似于在软件中点击工具栏的Help,软件会自动根据
文件
的后缀来
打开
软件的手册或帮助文档的功能,比如:软件的手册是Manual.pdf,那么单击Help中对应的项,则Manual.pdf
文件
会被电脑上默认的pdf
文件
阅读器(e.g. Foxit Reader)
打开
以供User浏览。那么问题可以转化为: 如何
程序
实现根据
文件
后缀来判断
调用
电脑上的默认
程序
来
打开
文件
呢?其实也就是模拟了...
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章