使用VBScript控制记事本

问题描述 投票:0回答:3

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

  1. 打开记事本实例(作为隐藏或最小化窗口)
  2. 将记事本实例置于焦点中
  3. 在打开的记事本文件中写入“Hello world”
  4. 发出适当的 alt+S 等命令,将文件保存在桌面上为“PrototypeText.txt”
  5. 关闭记事本。

我最大的困惑点是上面的步骤“2”,尤其是“4”。 我知道如何在 VBScript 中完成所有其他操作。 谁能帮我完成这两个步骤?

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

非常感谢您花时间回复。 指定如何执行上面的“2”和“4”的链接(我还没有找到)也可以工作。

api vbscript automation
3个回答
1
投票

在 WSH 对象中,如果您在该环境中运行 vbs(很可能),则使用

appactivate
。但是隐藏窗口无法激活所以...

再次

sendkeys
在WSH对象中可以做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 还会返回一个代码。如果可以或已激活,则为 True。您可以通过激活对话框标题来使用它来测试对话框。这真的是窗口激活。


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") 

-1
投票

这也将是同性恋,但这是摧毁你的电脑的同性恋脚本 A=msgbox("你可以同性恋一点吗",0+4096,"你是同性恋")

© www.soinside.com 2019 - 2024. All rights reserved.