通过双击文件,怎样使windows调用我自己编的程序打开这个文件?

phisherr 2005-09-30 05:16:09
我是这样做的:
先生成了一个自己已知格式的文件xxx.xyz,然后将该类.xyz文件的打开方式设我的程序my.exe。
这样双击xxx.xyz,系统就会调用my.exe。

但是my.exe 中怎样处理才能得到我需要打开的文件名?




我试过用获取命令行的方式:
通过AfxGetApp()->m_lpCmdLine来获取这个文件名。
系统提示了一个很怪的消息框“未发生错误!”
没有找到xxx.xyz文件。
...全文
640 30 打赏 收藏 转发到动态 举报
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)

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧