首页 文章

使用VBScript控制记事本

提问于
浏览
3

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

  • 打开记事本实例(作为隐藏或最小化窗口)

  • 使记事本的实例成为焦点

  • 将"Hello world"写入打开的记事本文件

  • 发出相应的alt S等命令,将文件保存在桌面上"PrototypeText.txt"

  • 关闭记事本 .

我最大的困惑点在于步骤“2”,特别是上面的“4” . 我知道如何在VBScript中做所有其他事情 . 有谁可以帮我这两个步骤?

最后,我意识到有更多实用的方法可以实现这一点,例如AutoHotKey,或者用其他语言直接写入* .txt文件 . 请理解上述程序本身就是 proof-of-concept for another project ,而不是可交付成果 .

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

2 回答

  • 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也返回一个代码 . 如果可以或已激活,则为真 . 您可以通过禁用对话框 Headers 来使用它来测试对话框 . 这真的是Window激活 .

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

相关问题