摘要:Visual Basic 2005 - 如何與其他軟體互動
讀者 wayne 詢問,能否開啟某個軟體(可能是非微軟的軟體),並於程式中去操作或是控制這軟體嗎?比如按下警視窗的 yes 按鈕或是關掉該軟體的子視窗呢。
其實我們曾經在「Visual Basic 2005檔案IO與資料存取秘訣」一書討論過「如何傳送按鍵給其他應用程式」,wayne 的需求可能與其有點類似。於此,我再舉一個例子來說明。以下的程式碼會啟動Ulead PhotoImpact 11,開啟 PhotoImpact 11 之後,接著會從「檔案」功能表中選取「開啟」指令、然後於「開啟」對話方塊中選取並開啟 C:\Program Files\Ulead Systems\Ulead PhotoImpact 11\Samples\Golf.ufo檔案、最後再從「檔案」功能表中選取「另存新檔」指令並以 C:MyGolf.ufo 作為新檔案名稱來將其存檔:
' 啟動PhotoImpact 11
Dim myProcess As Process = System.Diagnostics.Process.Start( _
"C:\Program Files\Ulead Systems\Ulead PhotoImpact 11\Iedit.exe")
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
' 先等待直到目標程式已經準備好輸入...
myProcess.WaitForInputIdle(1000)
' 以下的程式碼會依序完成開檔與另存新檔的作業
If myProcess.Responding Then
My.Computer.Keyboard.SendKeys("%FO", True)
My.Computer.Keyboard.SendKeys( _
"C:Program Files\Ulead Systems\Ulead PhotoImpact 11\Samples\Golf.ufo", _
True)
My.Computer.Keyboard.SendKeys("{ENTER}", True)
My.Computer.Keyboard.SendKeys("%F", True)
My.Computer.Keyboard.SendKeys("%F", True)
My.Computer.Keyboard.SendKeys("{DOWN}", True)
My.Computer.Keyboard.SendKeys("A", True)
My.Computer.Keyboard.SendKeys("C:MyGolf.ufo", True)
My.Computer.Keyboard.SendKeys("%S", True)
End If