关于CFileDialog中CComboBox的路径修改问题

chengjr 2004-12-21 03:12:20
总的目的是捕获所有调用CFileDialog的操作,返回一个非当前目录下的文件。如:现在CComboBox控件指向c:\目录,而点OK后,我想返回d:\test.txt文件。经过跟踪发现必须修改CComboBox让其进入d:\才能正确返回。单纯修改CFileDialog的m_ofn成员的值是不行的。
这个项目我是用Hook实现的,现在已经得到了CComboBox的句柄,并能进行一般的操作,如GetCBText,SetCurSel等操作,但一InsertString,调用CFileDialog的进程就整个当掉了。不知道why?
下面是我得到的一些相关信息:
CComboBox的style是 CBS_DROPDOWNLIST|CBS_HASSTRINGS|CBS_OWNERDRAWFIXED
spy++跟踪发现,切换目录时CComboBox在 CB_INSERTSTRING 后紧接着 CB_SETITEMDATA 消息,而且每次lParam的值都不一样,不知道它的data有什么具体意义,是否和CBS_HASSTRINGS style有关
...全文
62 点赞 收藏 4
写回复
4 条回复
chengjr 2004年12月23日
上面的问题没人遇到过吗
没人讨论晚上就结贴:)
回复 点赞
chengjr 2004年12月22日
OMG!!!It is really what i need!!!
I have puzzled at this damn problem for 2 days,and have tried every method i can bethink of.
I can hardly believe it can be resolved so easy in this way:(((
Basically, i can end my project this afternoon
thank u a lot :-)))))))))))))))))))

After all, i just want to know why the process injected the hookDll crashed after i called CComboBox::InsertString, what had happend???
回复 点赞
Kudeet 2004年12月21日
希望这个有帮助。:P
http://blog.csdn.net/laiyiling/archive/2004/11/21/189305.aspx
回复 点赞
chengjr 2004年12月21日
还有一点:CFileDialog默认风格是OFN_EXPLORER的,那我只要再设置一个OFN_ENABLEHOOK,然后直接m_ofn.lpfnHook = OFNHookProc;按MSDN上说的应该能捕获到CDN_FILEOK CDN_FOLDERCHANGE等消息了,但试了一下,回调函数OFNHookProc没有进入,连钩子也没捕到这些通知消息。。。
回复 点赞
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6376

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告