1.如何判断电脑是否安装了OFFICE?如果装了,装了多少组件?装在那个目录下?2.如何清空IE的临时文件,历史纪录,Cookies?3.如何动态添加菜单,动态删除菜单,动态响应菜单?我想把IE的收藏夹在我的程序中做成菜单

解决方案 »

  1.   

    2void CDelHistoryDlg::OnDelHistory() 
    {
    // TODO: Add your control notification handler code here
    TCHAR szPath[MAX_PATH];
    if (SHGetSpecialFolderPath(NULL, szPath, CSIDL_RECENT, FALSE))
    {
    EmptyDirectory(szPath);
    }
    SHDeleteKey(HKEY_CURRENT_USER, 
    _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RecentDocs"));}
    BOOL CDelHistoryDlg::EmptyDirectory(LPCTSTR szPath, BOOL bDeleteDesktopIni, 
     BOOL bWipeIndexDat)
    {
    WIN32_FIND_DATA wfd;
    HANDLE hFind;
    CString sFullPath;
    CString sFindFilter;
    DWORD dwAttributes = 0; sFindFilter = szPath;
    sFindFilter += _T("\\*.*");
    if ((hFind = FindFirstFile(sFindFilter, &wfd)) == INVALID_HANDLE_VALUE)
    {
    return FALSE;
    } do
    {
    if (_tcscmp(wfd.cFileName, _T(".")) == 0 || 
    _tcscmp(wfd.cFileName, _T("..")) == 0 ||
    (bDeleteDesktopIni == FALSE && _tcsicmp(wfd.cFileName, _T("desktop.ini")) == 0))
    {
    continue;
    } sFullPath = szPath;
    sFullPath += _T('\\');
    sFullPath += wfd.cFileName; //去掉只读属性
    dwAttributes = GetFileAttributes(sFullPath);
    if (dwAttributes & FILE_ATTRIBUTE_READONLY)
    {
    dwAttributes &= ~FILE_ATTRIBUTE_READONLY;
    SetFileAttributes(sFullPath, dwAttributes);
    } if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
    EmptyDirectory(sFullPath, bDeleteDesktopIni, bWipeIndexDat);
    RemoveDirectory(sFullPath);
    }
    else
    {
    DeleteFile(sFullPath);
    }
    }
    while (FindNextFile(hFind, &wfd));
    FindClose(hFind); return TRUE;
    }
    BOOL CDelHistoryDlg::DeleteUrlCache(DEL_CACHE_TYPE type)
    {
        BOOL bRet = FALSE;
    HANDLE hEntry;
        LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;  
        DWORD dwEntrySize;  //delete the files
    dwEntrySize = 0;
        hEntry = FindFirstUrlCacheEntry(NULL, NULL, &dwEntrySize);
    lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
        hEntry = FindFirstUrlCacheEntry(NULL, lpCacheEntry, &dwEntrySize);
    if (!hEntry)
    {
    goto cleanup;
    } do
        {
    if (type == File &&
    !(lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY))
    {
    DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);
    }
    else if (type == Cookie &&
    (lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY))
    {
    DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);
    } dwEntrySize = 0;
    FindNextUrlCacheEntry(hEntry, NULL, &dwEntrySize);
    delete [] lpCacheEntry; 
    lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
    }
    while (FindNextUrlCacheEntry(hEntry, lpCacheEntry, &dwEntrySize)); bRet = TRUE;
    cleanup:
    if (lpCacheEntry)
    {
    delete [] lpCacheEntry; 
    }
        return bRet;
    }
    void CDelHistoryDlg::OnDelCookies() 
    {
    // TODO: Add your control notification handler code here
    TCHAR szPath[MAX_PATH];
    DeleteUrlCache(Cookie);
    if (SHGetSpecialFolderPath(NULL, szPath, CSIDL_COOKIES, FALSE))
    {//得到目录,并清空
    EmptyDirectory(szPath);
    }
    }void CDelHistoryDlg::OnDelInternetTempFile() 
    {
    // TODO: Add your control notification handler code here
        TCHAR szPath[MAX_PATH];
    DeleteUrlCache(File);
    if (SHGetSpecialFolderPath(NULL, szPath, CSIDL_INTERNET_CACHE, FALSE))
    {  //得到临时目录,并清空它.
    EmptyDirectory(szPath);
    }
    }void CDelHistoryDlg::OnDelHistoryAddress() 
    {
    // TODO: Add your control notification handler code here
    //浏览器地址栏历史地址的清除
    SHDeleteKey(HKEY_CURRENT_USER, 
    _T("Software\\Microsoft\\Internet Explorer\\TypedURLs"));
    }void CDelHistoryDlg::OnDelHistoryPassword() 
    {
    // 清除自动密码历史记录
    SHDeleteKey(HKEY_CURRENT_USER, 
    _T("Software\\Microsoft\\Internet Explorer\\IntelliForms"));}void CDelHistoryDlg::OnDelFavorite() 
    {
    //清收藏夹中的内容
    TCHAR szPath[MAX_PATH];
    if (SHGetSpecialFolderPath(NULL, szPath, CSIDL_FAVORITES, FALSE))
    { //得到目录,并清空 
    EmptyDirectory(szPath);
    }
    }
      

  2.   

    判断是否安装了word程序
    bool IsWordExist(BOOL bPrompt)
    {
    static bool bExist, bFirst=true;
    if (bFirst)
    {
    bFirst = false;
    CReg reg;
    bExist = (bool)reg.Open(HKEY_CLASSES_ROOT, "Word.Document", KEY_READ);
    }
    if (!bExist)
    {
    if (bPrompt) AfxMessageBox ("没有安装Microsft Word 95或更高版本,操作不能执行!", MB_ICONSTOP);
    return false;
    }
    return true;
    }
      

  3.   

    装没装OFFICE可以通过注册表来看。动态添加菜单 -- 删除 -- 响应 CMenu menu ;
    menu.CreatePopupMenu();
    menu.AppendMenu(MF_BYCOMMAND | MF_STRING, ID_FUNC_MENU , "……" );
             menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_BOTTOMALIGN|TPM_LEFTBUTTON,pt.x,pt.y,this);至于响应么,你就加个消息么, ON_BN_CLICKED( ID_FUNC_MENU  , OnFUN)

    ON_COMMAND_RANGE(ID_FUNC_MENU  ,ID_FUNC_MENU ,OnFunc)
      

  4.   

    scmsir(小小鸟),你的代码有问题
    Compiling...
    WinTools.cpp
    Automatically linking with SkinPlusPlusDLL.dll
    Linking...
    WinToolsDlg.obj : error LNK2001: unresolved external symbol __imp__DeleteUrlCacheEntry@4
    WinToolsDlg.obj : error LNK2001: unresolved external symbol __imp__FindNextUrlCacheEntryA@12
    WinToolsDlg.obj : error LNK2001: unresolved external symbol __imp__FindFirstUrlCacheEntryA@12
    Debug/WinTools.exe : fatal error LNK1120: 3 unresolved externals
    Error executing link.exe.WinTools.exe - 4 error(s), 0 warning(s)
      

  5.   

    www.vckbase.com上有例子,上去看看