1

我正在编写 AutoIT 脚本以从文件中读取用户名和密码,以减少部署的痛苦,否则我必须为每个部署提供用户名和密码。我是 AutoIT 的新手,我只是 RTFM,以下是我得到的,因为我是新手,我敢肯定你可以找到我做错的事情,但以下是为我做的工作以比这个问题之前回答的更好的方式:

Local $sLauncherPath = "C:\Program Files (x86)\Google\google_appengine\launcher\GoogleAppEngineLauncher.exe"

Local $iPid = Run($sLauncherPath)

Local $hWin
While ProcessExists($iPid)
    $hWin = WinWait("Deploy Application to Google", "", 1)
    Local $file = FileOpen("C:\Program Files (x86)\Google\google_appengine\launcher\settings.dat", 0)

    Local $line = FileReadLine($file, 1)
    Local $line2 = FileReadLine($file, 2)

    If $hWin And WinGetProcess($hWin) = $iPid Then
        ControlSetText($hWin, "", "Edit1", $line)
        ControlSetText($hWin, "", "Edit2", $line2)

        ControlClick($hWin, "", "Button2")

        WinWaitClose($hWin)
    EndIf
WEnd

它似乎对我有用,由于这只是我的第二个 AutoIT 项目,您能否提出可能的改进建议?

4

1 回答 1

2

这不是一个真正的问题,但这是您正在寻找的答案:

  • 文件打开和读取不必在循环内,所以应该在循环外......
  • ...特别是因为您没有关闭文件(请参阅FileClose函数)...
  • 在我没有的基础上,我settings.dat猜测它是您创建的文件。应该有一些错误检查它是否存在。
  • 作为一般规则,用户配置文件属于用户目录,而不是 Program Files。如果您想将程序存储在 Program Files 中,请考虑使用 %AppData% 甚至注册表。
  • 对于配置文件,.ini已内置 AutoIt 支持,当您有大量设置时,更易于人工编辑。
  • 当您实际按顺序读取它们时,使用FileReadLine和给出行号效率非常低(它将打开文件,转到开头并计算换行符)。在这么小的代码上并不是一个真正的问题,但是没有最后一个参数你会更好。

最后用小写“t”拼写 AutoIt:P

于 2013-07-08T19:44:14.033 回答