razc 发表于 2012-5-13 16:40:38

非数组变量使用下标 错误在哪?

#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_Outfile=111111111.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****

$hSearch = FileFindFirstFile(@DesktopDir & "\*.lnk")

While 1
    $sFile = FileFindNextFile($hSearch)
    $FilePath = FileGetShortcut(@DesktopDir & '\' & $sFile)

If $FilePath = 'C:\1.exe' Then
      IF Not StringInStr(FileGetAttrib(@DesktopDir & '\' & $sFile), 'H') Then
                FileSetAttrib(@DesktopDir & '\' & $sFile, '+H')
                              
      EndIf
      EndIf
      
sleep(100)
Wend






出错。。

razc 发表于 2012-5-13 17:49:33

有一个程序一运行 就会不断的在桌面建立随机名快捷方式!

veket_linux 发表于 2012-5-13 19:12:53

$hSearch = FileFindFirstFile(@DesktopDir & "\*.lnk")
While 1
    $sFile = FileFindNextFile($hSearch)
        If @error Then ExitLoop;;;;;;;
    $FilePath = FileGetShortcut(@DesktopDir & '\' & $sFile)
        If Not StringCompare($FilePath, "C:\Program Files\Tencent\QQ2011beta\Bin\QQ.exe") Then
      IF Not StringInStr(FileGetAttrib(@DesktopDir & '\' & $sFile), "H") Then
                        FileSetAttrib(@DesktopDir & '\' & $sFile, "+H")
                EndIf
        EndIf
        sleep(100)
Wend

veket_linux 发表于 2012-5-13 19:20:25

$hSearch = FileFindFirstFile(@DesktopDir & "\*.lnk")
While 1
    $sFile = FileFindNextFile($hSearch)
        If @error Then ExitLoop;;;;;;;
    $FilePath = FileGetShortcut(@DesktopDir & '\' & $sFile)
        ;If Not StringCompare($FilePath, "C:\Program Files\Tencent\QQ2011beta\Bin\QQ.exe") Then
        If $FilePath = "C:\Program Files\Tencent\QQ2011beta\Bin\QQ.exe" Then
      IF Not StringInStr(FileGetAttrib(@DesktopDir & '\' & $sFile), "H") Then
                        FileSetAttrib(@DesktopDir & '\' & $sFile, "+H")
                EndIf
        EndIf
        sleep(100)
Wend

;;;$FilePath = "C:\Program Files\Tencent\QQ2011beta\Bin\QQ.exe"
;;;这样也是可以的
;;;问题应该是由于 FileFindNextFile出错时 $sFile 不是文件名 而是空字符串
;;;进一步导致FileGetShortcut出错,返回值 不是数组

whitehead 发表于 2012-5-13 20:45:53

由于某种未知原因,$FilePath 不是数组

netegg 发表于 2012-5-14 03:08:22

lz先查查桌面目录里有没有lnk文件吧,看看是@DesktopDir还是@DesktopCommonDir
或者在中间加一句if isarray($filepath) then msgbox来确定下数组到底返回的对不对,在考虑后续步骤
页: [1]
查看完整版本: 非数组变量使用下标 错误在哪?