主题 : [疑难]有关folder.htt
级别: 模拟之星
UID: 154
精华: 1
发帖: 480
威望: 1 星
金钱: 3578 浮游币
贡献值: 12 点
好评度: 307 点
人气: 1 点
在线时间: 80(时)
注册时间: 2004-03-25
最后登录: 2018-09-03
楼主  发表于: 2004-08-31 17:58

[疑难]有关folder.htt

这个是文件夹模板文件。。是用JavaScript编写的。
至于要编辑此文件的目的。无非是想去掉WMP在文件夹里的媒体预览。
我是通过编辑“标准”这一模板实现的。

找到了。其中有关的部分。去掉了。
其实就是把其中两个函数IsMovieFile()和IsSoundFile()稍杀Ρ改了一下。
然后的确媒体预览是没了。。但是又出现了新的问题。

标准模板在显视文件大小的时候。size变量>1000时都是以KB为单位显视。。。(这点出自HandleSize()函数)
实际效果看了十分不爽。
而且还加了显视最后访问时间,最后修改时间,和所有者(默认是Everyone)。
这几点我是怎么改也改不过来了。。。我本身没有学过Java。那两个函数是通过自己的一点编程基础修改的。。。Java里取整我都不会。。。反正不是int()

另外加入模板后文件夹下会出现desktop.ini和一个folder文件夹。模板就是通过这样工作的。如果看不见系统文件还好。。可是想想文件夹里有这些东西还是很不爽。。。

这想问一下当然文件夹下什么都没有(指desktop.ini系列)的那个模板在哪里可以改?
那个模板是怎么形成的?成哪里呀。。。

另外。FileList.Folder.GetDetailsOf() 这是什么东西?这个“什么东西”好像在folder.htt里左右很多东西。。。



function HandleSize(item) {
        var s = "";
        var size = item.Size;
        if (size && size < 1000)
          s = "<p>" + L_Size_Text + size + L_Bytes_Text;
        else {
          var data = FileList.Folder.GetDetailsOf(item, 1);
          if (data)
            s = "<p>" + FileList.Folder.GetDetailsOf(null, 1) + ": " + data;
          else if (size)
            s = "<p>" + L_Size_Text + FormatNumber(size.toString()) + L_Bytes_Text;
        }
        return s;
    }

这是HandleSize()函数。。。后几行就看不明白了。。。主要是else{}里的看不明白

谢谢



最后一点。就算应用了当前模板最后也还是只有本“自定义的文件夹”的文件夹有效。如果应用“与当前文件夹类似”的功能的话是不是每个文件夹下都会出现desktop.ini一系列?
枯れない花
级别: 论坛版主
UID: 11
精华: 0
发帖: 2266
威望: 8 星
金钱: 381185 浮游币
贡献值: 8813 点
好评度: 7896 点
人气: 1049 点
在线时间: 1384(时)
注册时间: 2004-03-24
最后登录: 2023-04-20
沙发  发表于: 2004-09-01 10:58

只找到E文的解释~~懒得翻译啦~~
反正呢~~格式是 sDetail = Folder.GetDetailsOf(vItem, iColumn)
vitem部分,就是你要提取detial的对象,icolumn呢,就是相应的元素~~
icolumn 有 ,
1,2,3,4和-1,分别对应 名称/容量/类型/最后修改时间/属性/infotip(这个是啥,我也不清楚)
,再有,返回值,当然就是你要求的值咯~~但是,是String类型~~~要注意~~
原文如下~~~
GetDetailsOf Method

Retrieves details about an item in a folder. For example, its size, type, or the time of its last modification.

Syntax

sDetail = Folder.GetDetailsOf(vItem, iColumn)

Parameters

vItem      Required. Specifies the item for which to retrieve the information. This must be a FolderItem object.      
iColumn      Required. An Integer value that specifies the information to be retrieved. The information available for an item depends on the folder in which it is displayed. This value corresponds to the zero-based column number that is displayed in a Shell view. For an item in the file system, this can be one of the following values:
0      Retrieves the name of the item.      
1      Retrieves the size of the item.      
2      Retrieves the type of the item.      
3      Retrieves the date and time that the item was last modified.      
4      Retrieves the attributes of the item.      
-1      Retrieves the info tip information for the item.      


Return Value

String containing the retrieved detail.

Remarks
Note Not all methods are implemented for all folders. For example, the ParseName method is not implemented for the Control Panel folder (CSIDL_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error is raised.

Examples
The following example uses GetDetailsOf to retrieve the type of the file named Clock.avi. Proper usage is shown for Microsoft JScript, Microsoft Visual Basic Scripting Edition (VBScript), and Visual Basic.

JScript:
代码

<script language="JScript">
   function fnGetDetailsOfJ()
   {
       var objShell = new ActiveXObject("Shell.Application");
       var objFolder = new Object;
       
       objFolder = objShell.NameSpace("C:\\WINDOWS");
       if (objFolder != null)
       {
           var objFolderItem = new Object;

           objFolderItem = objFolder.ParseName("clock.avi");
           if (objFolderItem != null)
           {
               var objInfo = new Object;

               objInfo = objFolder.GetDetailsOf(objFolderItem, 2);
           }
       }
   }
</script>

VBScript:
代码

<script language="VBScript">
   function fnGetDetailsOfVB()
       dim objShell
       dim objFolder
       
       set objShell = CreateObject("Shell.Application")
       set objFolder = objShell.NameSpace("C:\WINDOWS")

       if (not objFolder is nothing) then
           dim objFolderItem

           set objFolderItem = objFolder.ParseName("clock.avi")

           if (not objFolderItem Is Nothing) then
               dim objInfo
                       
               objInfo = objFolder.GetDetailsOf(objFolderItem, 2)
           end if
           
           set objFolderItem = nothing
       end if
       
       set objFolder = nothing
       set objShell = nothing
   end function
</script>

Visual Basic:
代码

Private Sub btnGetDetailsOf_Click()
   Dim objShell  As Shell
   Dim objFolder As Folder

   Set objShell = New Shell
   Set objFolder = objShell.NameSpace("C:\WINDOWS")
   
   If (Not objFolder Is Nothing) Then
       Dim objFolderItem As FolderItem
       Set objFolderItem = objFolder.ParseName("clock.avi")
 
       If (Not objFolderItem Is Nothing) Then
           Dim szItem As String
           szItem = objFolder.GetDetailsOf(objFolderItem, 2)
       End If
       
       Set objFolderItem = Nothing
   End If
   
   Set objFolder = Nothing
   Set objShell = Nothing
End Sub2
枯れない花
级别: 论坛版主
UID: 11
精华: 0
发帖: 2266
威望: 8 星
金钱: 381185 浮游币
贡献值: 8813 点
好评度: 7896 点
人气: 1049 点
在线时间: 1384(时)
注册时间: 2004-03-24
最后登录: 2023-04-20
板凳  发表于: 2004-09-01 11:00

另外,更多的信息,你可以参考MSDN的Library~~~
级别: 模拟之星
UID: 154
精华: 1
发帖: 480
威望: 1 星
金钱: 3578 浮游币
贡献值: 12 点
好评度: 307 点
人气: 1 点
在线时间: 80(时)
注册时间: 2004-03-25
最后登录: 2018-09-03
地板  发表于: 2004-09-01 14:06

嗯。。。大至明白了。。。十分感谢。。。帮了大忙了。