2015-12-22 42 views
3

在另一個方面,非常不同的項目,我試圖寫一個VBScript,將在執行時,執行以下操作:使用VBScript來控制記事本

  1. 打開記事本的一個實例(作爲隱藏或最小化窗口)
  2. 把記事本的情況下成爲焦點
  3. 寫的「Hello world」到打開的記事本文件
  4. 發出相應的ALT + S等命令將文件保存在桌面上爲「PrototypeText.txt 「
  5. 關閉記事本。

我最大的困惑之處在於步驟「2」,特別是上面的「4」。我知道如何在VBScript中做所有其他的事情。任何人都可以幫我完成這兩個步驟?

最後,我意識到有很多更實用的方法可以完成此操作,例如AutoHotKey,或者直接寫入* .txt文件,也可能使用其他語言。請理解,上述計劃是另一個項目的概念驗證,本身不是可交付成果。

您的時間花費在響應非常讚賞。一個指定如何做「2」和「4」的鏈接(我還沒有找到)也可以工作。

+0

@Lankymart - 我當然同意。然而,我正在開發的真正項目是通過alt + s和其他鍵盤命令(關於在文件中寫入「hello world」的部分在旁邊)來自動執行另一個程序(稱爲formscanner)。 formscanner程序是一個簡單的開源程序,沒有爲它開發任何類型的API。但它可以通過鍵盤快捷鍵完全從鍵盤控制。這樣做不使用AutoHotKey是我的主要目標。記事本部分僅僅是一個概念驗證 –

+0

教我閱讀整個問題 – Lankymart

回答

0

在WSH對象中,如果您在該環境中運行vbs(可能),則使用appactivate。但隱藏窗口不能被激活,所以...

再次sendkeys在WSH對象可以做4(但不是在一個隱藏的窗口)。

下面是vbscript幫助(https://msdn.microsoft.com/en-us/library/8c6yea83(v=vs.84).aspx)使用這兩個命令和note使用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返回一個代碼。如果可以或已激活,則爲真。您可以使用此功能通過激活對話標題來測試對話框。這真的是窗口激活。

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