HOOK文档的另存为窗口 个人建议Hook API CreateFile 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个最开始有做,但是没办法确定是另存为动作啊,其他功能也经常调用这API,总不能都进行处理吧 Hook comdlg32.dll中的对应函数? Hook comdlg32.dll中的对应函数?我也试了这个DLL中的getsavefilename,可惜没反应,显示没调用到 用SetWindowLong接管记事本主窗口的消息循环,处理WM_COMMAND消息就行了, Hook comdlg32.dll中的对应函数?我也试了这个DLL中的getsavefilename,可惜没反应,显示没调用到先单步或设断点调试一下notepad.exe 我用FindWindow查找记事本的另存为窗口,用setwindowlong来设置窗口子类化,但没有监视到任何消息;另外,单纯处理WM_COMMAND消息,这条件会不会太广了?而且我是想判断用户另存为时的文件名(后缀),再决定是否作处理,COMMAND消息如何获取这个文件名啊?我是菜鸟,问题太多,见谅啊 Hook comdlg32.dll中的对应函数?我也试了这个DLL中的getsavefilename,可惜没反应,显示没调用到先单步或设断点调试一下notepad.exe这个HOOK API的方式,还真不会单步或断点调试,一般我是输出文字到控制台窗口 我用FindWindow查找记事本的另存为窗口,用setwindowlong来设置窗口子类化,但没有监视到任何消息;另外,单纯处理WM_COMMAND消息,这条件会不会太广了?而且我是想判断用户另存为时的文件名(后缀),再决定是否作处理,COMMAND消息如何获取这个文件名啊?我是菜鸟,问题太多,见谅啊我之前找到这个信息,是不是这个的缘故:如果由hWnd参数指定的窗口与调用线程不属于同一进程,将导致SetWindowLong函数失败! 你必须要写个DLL注入到记事本进程才可以,不同进程不可以子类化.然后用SPY++看下菜单ID.BOOL WINAPI DllMain( HINSTANCE hinstDLL, // handle to DLL module DWORD fdwReason, // reason for calling function LPVOID lpReserved ) // reserved{ // Perform actions based on the reason for calling. switch( fdwReason ) { case DLL_PROCESS_ATTACH: HWND hWnd = FindWindow(NULL, TEXT("新建文本文档.txt - 记事本")); SetWindowLong(hWnd, GWL_WNDPROC, ......) break; case DLL_THREAD_ATTACH: // Do thread-specific initialization. break; case DLL_THREAD_DETACH: // Do thread-specific cleanup. break; case DLL_PROCESS_DETACH: // Perform any necessary cleanup. break; } return TRUE; // Successful DLL_PROCESS_ATTACH.} 我再问下啊:notepad的菜单ID是不变的吗?要是可变的,不是就不行了?另外,这样应该就局限于notepad进程了,我若是有.doc或其他文件,不是也得一个个进程的找“另存为”菜单ID?谢谢啊 同样的程序菜单ID固定不变的,比如记事本,每个记事本进程的另存为菜单ID都是一样的.如果是其他进程,要先找到菜单ID,才可以HOOK 实在万分感谢,分不多,有的全给你了,发了几个贴,第一次有人这么耐心跟我讲解。最后一个不是问题的问题,只是确认下:按这么说,实际做法可以是先自己找出几个常用进程如notepad.winword之类的菜单ID,进行消息HOOK吧 实在万分感谢,分不多,有的全给你了,发了几个贴,第一次有人这么耐心跟我讲解。最后一个不是问题的问题,只是确认下:按这么说,实际做法可以是先自己找出几个常用进程如notepad.winword之类的菜单ID,进行消息HOOK吧是的,然后自己调用API GetSaveFileName()打开另存为对话框 ListCtrl的问题 对话框的显示问题 自动对比度算法 如何能让程序崩溃信息记录在Window日志里? 求一VC所开发的软件的压力测试软件,谢谢 有关CListCtrl 的代码 vc里面想连接liunx上的oracle 9i,如何实现 如何要程序自己选中编辑视中的特定的字符呢 如何获取当前路径 MFC界面编程 vs2008 mfc 对话框程序怎么通过控制变量控制picture control的可见与不可见? 怎么不通过MFC CLASSWIZARD向导直接用代码为一个编辑框EDIT1添加一个成员变量m_edit1
处理WM_COMMAND消息就行了,
先单步或设断点调试一下notepad.exe
我是菜鸟,问题太多,见谅啊
先单步或设断点调试一下notepad.exe
这个HOOK API的方式,还真不会单步或断点调试,一般我是输出文字到控制台窗口
我是菜鸟,问题太多,见谅啊
我之前找到这个信息,是不是这个的缘故:如果由hWnd参数指定的窗口与调用线程不属于同一进程,将导致SetWindowLong函数失败!
然后用SPY++看下菜单ID.BOOL WINAPI DllMain(
HINSTANCE hinstDLL, // handle to DLL module
DWORD fdwReason, // reason for calling function
LPVOID lpReserved ) // reserved
{
// Perform actions based on the reason for calling.
switch( fdwReason )
{
case DLL_PROCESS_ATTACH:
HWND hWnd = FindWindow(NULL, TEXT("新建文本文档.txt - 记事本"));
SetWindowLong(hWnd, GWL_WNDPROC, ......)
break; case DLL_THREAD_ATTACH:
// Do thread-specific initialization.
break; case DLL_THREAD_DETACH:
// Do thread-specific cleanup.
break; case DLL_PROCESS_DETACH:
// Perform any necessary cleanup.
break;
}
return TRUE; // Successful DLL_PROCESS_ATTACH.
}
如果是其他进程,要先找到菜单ID,才可以HOOK
实在万分感谢,分不多,有的全给你了,发了几个贴,第一次有人这么耐心跟我讲解。最后一个不是问题的问题,只是确认下:按这么说,实际做法可以是先自己找出几个常用进程如notepad.winword之类的菜单ID,进行消息HOOK吧
实在万分感谢,分不多,有的全给你了,发了几个贴,第一次有人这么耐心跟我讲解。最后一个不是问题的问题,只是确认下:按这么说,实际做法可以是先自己找出几个常用进程如notepad.winword之类的菜单ID,进行消息HOOK吧
是的,然后自己调用API GetSaveFileName()打开另存为对话框