none
如何在EXCEL里用VB激活另一个程序并向其输出 RRS feed

  • 问题

  • 目的:
    激活另一个程序,控制键盘向其做输出。在以下的代码示例中,用记事本来做例子。

    代码:
     Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Sub test()
    Dim k As Integer
    For k = 1 To 6
     AppActivate "无标题 - 记事本"
     Sleep 1000
     SendKeys Chr(64 + k)
     SendKeys "{Enter}"
     Next
     
    End Sub

    以下代码的问题:
    在WIN7(VISTA) + Office 2007中,如果记事本窗口是最小化的,则循环体中的第一个字母输不进去,其它可以进去。如果记事本窗口不是最小化的,则所有的字母都可以正常进去。
    在XP Professional + Office 2003中,所有的字母都会输在VB编辑器里,而不是记事本里。

    请问如何能让代码把所有的字符都输进记事本呢?实际使用中,会通过这种方式操作一个比较复杂的专业软件。
    另:我尝试过调用操作系统API,获取记事本窗口的句柄,将其最大化(事实上,记事本窗口并没有被最大化),将其设为当前窗口,再进行输入,效果和上面的方法是一样的。
    wp.showCmd = 3  '3是最大化状态
    window = FindWindow(vbNullString, "无标题 - 记事本")
    status = SetWindowPlacement(window, wp)
    window = SetForegroundWindow(window)
    谢谢!

    2009年6月30日 6:32

全部回复