大家知道,用ie属性设置框清空历史记录后,再打开开始-运行对话框,可以看到已经没有记录了,不用重启机器现在,我想用程序实现这一功能,我从注册表中把运行的历史记录清空,但是,我如何才能让浏览器知道这个改变,把运行记录列表清空呢,试过
SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,wParam,lParam,SMTO_NORMAL,5000, dwReturnValue);
不管用打开开始-运行,以前的记录还在谁有好办法呢, 难吧?

解决方案 »

  1.   

    清空不是从注册表里面下手的吧?
    procedure DelHistory; 
    var 
          lpEntryInfo: PInternetCacheEntryInfo; 
          hCacheDir: LongWord ; 
          dwEntrySize, dwLastError: LongWord; 
    begin 
          try 
           dwEntrySize := 0; 
           FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); 
           GetMem(lpEntryInfo, dwEntrySize); 
           hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize); 
           if hCacheDir 〈〉 0 then 
              DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName); 
           FreeMem(lpEntryInfo); 
           repeat 
             dwEntrySize := 0; 
             FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), 
               dwEntrySize); 
             dwLastError := GetLastError(); 
             if dwLastError = ERROR_INSUFFICIENT_BUFFER then //如果成功 
             begin 
                 GetMem(lpEntryInfo, dwEntrySize); {分配dwEntrySize字节的内存} 
                 if FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize) then 
                    DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName); 
                 FreeMem(lpEntryInfo); 
             end; 
          until (dwLastError = ERROR_NO_MORE_ITEMS); 
    except 
          abort; 
    end; 
    end; 
      

  2.   

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
      

  3.   

    用这种方法清除之后,刷新桌面有效吗?如果可以通过刷新桌面完成,那可以用SHChangeNotify
      

  4.   

    笨方法是,删除注册表里的记录后,运行一个BAT档,BAT档里的操作是,删除EXPLORER进程再重新运行这个进程
      

  5.   

    真的很难吧?是不是真没有办法,可能是explorer运行的时候用非共享的代码读入的,没有办法让explorer重新刷新
      

  6.   

    explorer刷新用的就是ShChangeNotify,不过刷新桌面无效的话,这个也不知道有没有作用,反正可以试试
      

  7.   

    单击开始->关机->取消,就清除了,哈哈
    http://support.microsoft.com/kb/142298/zh-cn
      

  8.   

    找到一个VBScript代码写的例子,说是要重启才能搞定
    http://www.pchell.com/support/editrunmrulistentries.shtml
      

  9.   

    单击开始->关机->取消,就清除了
    这个试了,并不是每次都有效,好像需要清除记录后,等上一定时间,再操作才能有效。不过这个方法无法用程序来控制,让用户这么办,未免显得不太专业