我现在使用createfile打开文件的时候有验证框,现在不想打开文件,不输入密码,关闭验证框。
例如DOC类型文件关闭的时候就弹出三次验证框,如何能够让DOC就弹出一次窗口?
如何进行窗口的检测,当关闭了验证框的时候,能够直接关闭,而不弹出其他窗口?
// 校验不过
if (!bValid)
{  //MessageBox(NULL, "44!", "呵呵", MB_OK);
WriteLog(_T("testNotOK"));
CCheckDlg checkDlg; 
checkDlg.m_strUserName = szUser; 
WriteTimeStampToReg(GetTickCount()); 
DWORD nCode = checkDlg.DoModal();
if (nCode == IDCANCEL)
{
 return NULL;
}
else 
{
// 记录下该次检测的时间戳
DWORD tickCurrent =  GetTickCount();
// 写入注册表
WriteTimeStampToReg(tickCurrent);
bValid = TRUE;
}
}
这里边应该如何去改?。

解决方案 »

  1.   

    当关闭验证框的时候,你获得这个返回,然后给对应的其他对话框发送WM_CLOSE消息等,让它们退出...
      

  2.   

    HANDLE WINAPI CMyHook::HookCreateFileWCallback(
    LPCWSTR lpFileName,
    DWORD dwDesiredAccess,
    DWORD dwShareMode,
    LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    DWORD dwCreationDisposition,
    DWORD dwFlagsAndAttributes,
    HANDLE hTemplateFile)

    {  
    BOOL bValid = TRUE;
    CString strName;  
    strName=lpFileName;
    strName.MakeUpper();
    strName.TrimRight(); if (strName.Find(_T("."))>0)
    {
    if ( (strName[0] == 'I' ||  strName[0] == 'J') && strName.GetLength()>5)

             if( strName.Find( _T("~$"), 0 ) == -1 )
    {
    CString strMsg;
    WriteLog(_T("CreateFile"));
    WriteLog(strName);
    strMsg.Format(_T("%d %d %d %d %d %d %d"), GetCurrentProcessId(), dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
    WriteLog(strMsg); //::AfxMessageBox(_T("1"));
    bValid=isValid();
    }
    }
    }
    if(bValid)
    //return OpenFileNext(lpFileName,lpReOpenBuff,uStyle);
    return CreateFileWNext(lpFileName,dwDesiredAccess,dwShareMode,lpSecurityAttributes,dwCreationDisposition,dwFlagsAndAttributes,hTemplateFile);
    else
    {
    SetLastError(ERROR_ACCESS_DENIED);
    return INVALID_HANDLE_VALUE;
    }
    }
      

  3.   

    我这个是对文件打开进行HOOK, 
    点击关闭按钮的时候怎么就调用createfile 去了!
      

  4.   

    if(bValid)
     设置bValid为FALSE;
      

  5.   

    直接就说打不开文件,不能弹出验证框!原先bValid就是FALSE
      

  6.   

    如果我关闭验证框,直接返回NULL呢?
    if (close("身份验证"))
    {

    return NULL; }
    这里头的close 应该怎么改?