pdp320921 发表于 2011-3-5 17:43:01

[已解决]判断语句为何执行相反结果?

本帖最后由 pdp320921 于 2011-3-9 21:39 编辑

If FileExists(@ProgramFilesDir & "\TOSHIBA\CTest\CTest.exe") Then
mode()       
Else
install()
Sleep(1000)
mode()
EndIf

Func install()
...
...
EndFunc

Func mode()
$var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion", "ProductName")
If        $var ='Windows 7 Starter' Then
    autorun1()
Else
        autorun2()
EndIf
EndFunc       

Func autorun1()
Run(@ProgramFilesDir & "\TOSHIBA\CTest\CTest.exe")
WinWaitActive("CTest v2.4.0201","")
ControlClick("CTest v2.4.0201","",7)
WinWaitActive("Browse for Folder","Select the Remote Test Path")
Send("{Down}")
Send("{ENTER}")
WinWaitActive("CTest v2.4.0201","Test Mode")
ControlClick("CTest v2.4.0201","",14)
Send("{Down 3}")
Send("{ENTER}")
Send("{TAB 6}")
Sleep(500)
Send("500")
WinWaitActive("CTest v2.4.0201","")
ControlClick("CTest v2.4.0201","",26)
EndFunc

Func autorun2()
Run(@ProgramFilesDir & "\TOSHIBA\CTest\CTest.exe")
WinWaitActive("CTest v2.4.0201","")
ControlClick("CTest v2.4.0201","",7)
WinWaitActive("Browse for Folder","Select the Remote Test Path")
Send("{Down}")
Send("{ENTER}")
WinWaitActive("CTest v2.4.0201","")
Send("{TAB 9}")
Send("500")
WinWaitActive("CTest v2.4.0201","")
ControlClick("CTest v2.4.0201","",26)
EndFunc我原想是判断系统如果是Win7 Starter版本执行autorun1(),其他版本执行autorun2(),
可程序编译好后在Win7 Starter系统版本的电脑上执行的结果却是autorun2(),在其他版本系统的机器上执行的也是autorun2()
注明:注册表里的键值没问题~

真不知错在哪?恳请大虾们帮忙~不

boyhong 发表于 2011-3-5 21:07:56

然后结果都是:autorun2()

那问题肯定是出在了:
If      $var ='Windows 7 Starter' Then

虽然你说这肯定没有问题,不过,个人建议:
你先:
msgbox(0,"",RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion", "ProductName"))

看一下。

然后为了避免空格等不可见的因素:你这样改一下试试呢?

IfStringRegExp ( $var, "Starter" ) then

。。。。。

netegg 发表于 2011-3-5 22:15:23

回复 2# boyhong
和空格没关系,直接stringinstr(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion", "ProductName"), 'Starter') then
应该就行了(如果依楼主所说注册表没问题的话)

这疼那疼 发表于 2011-3-5 22:57:49

从你的情况,同意2楼的建议,调试一下啊

pdp320921 发表于 2011-3-9 21:39:02

回复 3# netegg

我知道错在哪了,
$var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion", "ProductName")

WindowsNT应该是Windows NT,中间是有空格的~~

改完了就OK了

谢各位大侠们~·
页: [1]
查看完整版本: [已解决]判断语句为何执行相反结果?