話說有個軟件的用家介面在顯示一些設定資料的版面上,沒有「匯出」功能,只讓人逐格地Copy & Paste。不想人手這麼耗時,就找方法來自動Copy&Paste抄寫到Excel中。
# 用家設定參數,
# $count: 這裡預執行次數=行數-1; # $
winTitle01: Copy的應用程式標題;
param( $count = 36, $winTitle01 = "This Platform x.xx [ USER - ENVIRONMENT ]", $winTitle02 = "Book1 - Excel" ) add-type -AssemblyName microsoft.VisualBasic #載入VB的部件。 add-type -AssemblyName System.Windows.Forms #載入System.Windows.Forms的部件。 start-sleep -Milliseconds 1000 #暫停1000微秒
# $
winTitle02: Paste的應用程式標題;
#For-Loop 執行
for ($i = 1; $i -lt $count; $i++) { Start-Sleep -Seconds 1 #暫停1秒 [Microsoft.VisualBasic.Interaction]::AppActivate($winTitle01) #啟動已在執行中的應用程式。 [System.Windows.Forms.SendKeys]::SendWait("{DOWN}^(c)") #傳送指定的按鍵至使用中的應用程式,然後等待訊息的處理。 Start-Sleep -Seconds 1 [Microsoft.VisualBasic.Interaction]::AppActive($winTitle02) [System.Windows.Forms.SendKeys]::SendWait("{DOWN}^(v)") }
Powershell - Add-Type
https://ss64.com/ps/add-type.html
MSDN - Interaction.AppActivate Method (String)
https://msdn.microsoft.com/en-us/library/x57y7863(v=vs.110).aspx
MSDN - SendKeys.SendWait Method (String)
https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.sendwait(v=vs.110).aspx
MSDN - SendKeys Class - KeyStoke的對應表
https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys(v=vs.110).aspx