使用VBScript控制记事本

时间:2015-12-22 17:16:34

标签: api vbscript automation

关于另一个非常不同的项目,我正在尝试编写一个VBScript,在执行时将执行以下操作:

  1. 打开记事本实例(作为隐藏或最小化窗口)
  2. 将记事本实例置于焦点
  3. 写下#34; Hello world"进入打开的记事本文件
  4. 发出适当的alt + S等命令,将文件保存在桌面上作为" PrototypeText.txt"
  5. 关闭记事本。
  6. 我最大的困惑在于步骤" 2"特别是" 4"以上。我知道如何在VBScript中做所有其他事情。有谁能帮助我完成这两个步骤?

    最后,我意识到有更多实用的方法来实现这一点,例如AutoHotKey,或者直接用* .txt文件写一些其他语言。请理解上述程序是另一个项目的概念证明,而不是可交付成果。

    非常感谢您的回复时间。一个链接(我还没有找到)指定如何做" 2"和" 4"上面也可以。

2 个答案:

答案 0 :(得分:0)

在WSH对象中,如果您在该环境中运行vbs(很可能),请使用appactivate。但隐藏的窗口无法激活......

WSH对象中的sendkeys再次可以执行4(但不在隐藏窗口中)。

以下是使用两个命令的vbscript帮助(https://msdn.microsoft.com/en-us/library/8c6yea83(v=vs.84).aspx)的示例,并使用sleep注释,以便为应用程序提供处理命令的机会。

     set WshShell = WScript.CreateObject("WScript.Shell")
     WshShell.Run "calc"
     WScript.Sleep 100
     WshShell.AppActivate "Calculator"
     WScript.Sleep 100
     WshShell.SendKeys "1{+}"
     WScript.Sleep 500
     WshShell.SendKeys "2"
     WScript.Sleep 500
     WshShell.SendKeys "~"
     WScript.Sleep 500
     WshShell.SendKeys "*3"
     WScript.Sleep 500
     WshShell.SendKeys "~"
     WScript.Sleep 2500

最小化的窗口可以获得焦点。

使用这样的字符串来获取桌面。包含引号。"%userprofile%\desktop\yourfilename.txt"。报价以防万一有空格。

AppActivate也返回一个代码。如果可以或已激活,则为真。您可以通过禁用对话框标题来使用它来测试对话框。这真的是窗口激活。

答案 1 :(得分:0)

假设您不想通过脚本更改/继续添加到此文本文件,而打开以下内容应该可以正常工作。

Dim objFSO, objFileToWrite, WShell
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WShell = CreateObject("WScript.Shell")

'Create Text File and write to it then close it    
Set objFileToWrite = objFSO.CreateTextFile("C:\Users\***YOUR USER ID HERE***\Desktop\PrototypeText.txt", 1)
objFileToWrite.Write "Hello World"
objFileToWrite.Close

'Open newly created and saved text file
WShell.Run("Notepad.exe C:\Users\***YOUR USER ID HERE***\Desktop\PrototypeText.txt")