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