如何取得一个快捷方式的“最后启动时间”?“最后启动时间”是指该快捷方式所指向的文档/程序最后被用户打开的时间。注意:可能有多个快捷方式指向一个相同的文档,而只有其中一个是今天使用的,是较新的,其他几个快捷方式“最后启动时间”不是最新的。
为什么是“最后启动时间”,而不是“最后访问时间”?因为如果把鼠标放在一个快捷方式的图标上的话,windows会弹出对此图标的tip。而这时此快捷方式的“最后访问时间”已经被系统更改为最新的系统当前时间。但是用户并没有双击图标启动程序,并没有使用过这个快捷方式.我看到 WinXP 中有个自动清理桌面功能,它列出了每个快捷方式的最后使用时间,那个时间并不等同于“最后访问时间”。因为最后使用(启动)时间有“从不”这一值。WinXP 能够知道某个快捷方式从来没有使用过。我想知道他是如何实现的?
谁搞定了,http://expert.csdn.net/Expert/topic/3014/3014111.xml?temp=.311947中的100分也是他的!高手们,请解答!

解决方案 »

  1.   


    注意:最后使用(启动)时间 <> 最后访问时间 
    期盼真正的解决方法!!
      

  2.   

    <<有 最后使用(启动)时间 吗? 好像属性里都没有呀。我也没有找到,请问楼主,2000下有没有呢?
      

  3.   

    function NtfsGetSparse(const FileName: string): Boolean;
    var
      Handle: THandle;
      Info: TByHandleFileInformation;
      dt: TSystemTime;
    begin
      Result := False;
      Handle := CreateFile(PChar(FileName), 0, FILE_SHARE_READ or FILE_SHARE_WRITE,
        nil, OPEN_EXISTING, 0, 0);
      if Handle <> INVALID_HANDLE_VALUE then
        try
          result := GetFileInformationByHandle(Handle, Info);
          FileTimeToSystemTime(info.ftLastAccessTime, dt);
          showmessage(IntToStr(dt.wSecond));
    //      Result := (Info.dwFileAttributes and FILE_ATTRIBUTE_SPARSE_FILE) <> 0;
        finally
          CloseHandle(Handle);
        end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     NtfsGetSparse('C:\Documents and Settings\All Users.WINDOWS\Desktop\Delphi2C#.lnk');
    end;
    不知是不是你要的, 其實, 只要你點了 *.lnk, 就會改變它的 AccessTime, 并不是改變對應的*.exe
      

  4.   

    測試中, 你點下lnk, 然後讀取, 再點下(不運行程序), 再讀取會有不同的值!
    比較下是不是你要的
      

  5.   

    to aiirii(ari-爱的眼睛) 
      请问,能不能以记事本的快捷方式,举个例子,说明一下什么是最后启动时间?
    到现在还不知道是什么东西.
      

  6.   

    aiirii(ari-爱的眼睛) 
    你好像什么样的资料都能找到!
    不如教教我吧!:)
      

  7.   

    >>请问,能不能以记事本的快捷方式,举个例子,说明一下什么是最后启动时间?
    看下 *.lnk 的  AccessTime 
    >>你好像什么样的资料都能找到!
    不要轻易觉得不可能,很多,可能是你不知道而已;
    不要轻易以为自己做的完美了;
    最后,查查Msdn
      

  8.   


    谢谢各位答复!我比较过三个快捷方式如下:                    Windows XP 的              文件属性中的
                       自动清理桌面功能中         Last Access Time 
                       的最后使用时间为                  为复件 Notepad.lnk       2004-4-27                  2004-4-27 复件 (8) notepad.lnk   2004-3-10                  2004-4-27Avreck.lnk              从不                      2004-4-27
    我感兴趣的是“Windows XP 的自动清理桌面功能中的最后使用时间”到底从那来的?
      

  9.   

    我使用的是2000Server,楼主所说的最后使用时间这几个字,我怎么也找不着,算了。
    另外,爱的眼睛大虾说的好像是访问时间,可能跟楼主要的不是一回事吧。
      

  10.   

    >>我感兴趣的是“Windows XP 的自动清理桌面功能中的最后使用时间”到底从那来的?
    从那里找到"自动清理桌面" ??? 我试验下
      

  11.   


    在桌面的属性里,有个自定义桌面Tab,其中有个清理桌面按钮。you can search "清理" or "清除" in Windows XP help.