hook webbrowser文件对话框

图片说明

问题是这样的:
我在MFC里添加了一个webbrowser控件,在某个页面里面点击"添加文件"之后,
会弹出来一个文件对话框,我想要获取通过这个对话框选择的文件路径,或者能够在网页得到这个路径之前修改它。
请教大家,有没有什么方法?

理论山拦截getopenfilename这个api可以做到。但是写起来还是很费事的。
google api hook

在comdlg32.dll里

我hook了GetOpenFileNameA函数,
作为测试,添加了一个按钮,

CFileDialog cf(TRUE,NULL,NULL,0,NULL,this); 
 cf.DoModal();
 CString strFilePath=cf.GetPathName();

但是没有效果,
特地添加了GetOpenFileName(NULL);
能够进入我自己的函数里面,所以不是我hook失败,

继续请教各位大神们,帮忙再分析一下啦

BOOL _stdcall hook_OpenFileNameW( LPOPENFILENAMEW lpofn)
{
CErrModule::ShowMsg("Capture open file dlg W event!");

BOOL bRet;   

PAPIHOOK32_ENTRY phk= g_HookEntry[4];   

//恢复API头8个字节   
RESTORE_OLDADDRESS( phk);
/* 这里可以添加想要进行的处理过程*/    
//真正执行API函数   
bRet = ::GetOpenFileNameW( lpofn );  
//写入跳转语句,继续Hook   
SET_NEWADDRESS( phk); 

if (CheckEnabled(g_iAppIndex)) 
{
    if (( NULL == lpofn->lpstrFilter) 
        || ( NULL != wcsstr(lpofn->lpstrFilter, L"所有文件"))
        || ( NULL != wcsstr(lpofn->lpstrFilter, L"*.*"))
        || ( NULL != wcsstr(lpofn->lpstrFilter,L"All Files")))
    {
        return FALSE;
    }
}

return bRet;

}