怎样判断excel是否正打开?

解决方案 »

  1.   

    用findwindow
    Dim winHwnd As Long   
        winHwnd = FindWindow(vbNullString, "excel的title")
        If winHwnd <> 0 Then
            '操作    
        End If
      

  2.   

    findwindow没有定义,怎么定义??
      

  3.   

    api 浏览器。
    查找声明-FindWindow
    将其复制到你的程序中。
    有问题可以再问。
    在线等:)
      

  4.   

    api 浏览器。
    查找声明-FindWindow具体如何操作呢?
      

  5.   

    晕。
    工具-api查看器-打开win32api.txt-选择声明-输入findwindow。
    好像是这样,手头没有vb。
    或直接把下面代码插入到你的程序中去:private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
      

  6.   

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Sub Command1_Click()
        Dim winHwnd As Long
        winHwnd = FindWindow(vbNullString, "excel的title")
        MsgBox winHwnd
    *********************
    3q    锦衣夜行!!! 可是,不管我带开excel还是关上excel,都输出0,why????
      

  7.   

    Option Explicit
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Sub Command1_Click()
    Dim Handle As Long    ' 窗口句柄
    Handle = FindWindow("XLMAIN", vbNullString)   ' 获得窗口句柄
    If Handle = 0 Then MsgBox "Excel没启动" Else MsgBox "Excel已经启动!"
    End Sub
      

  8.   

    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
        这个函数有两个参数,第一个是要找的窗口的类,第二个是要找的窗口的标题。在搜索的时候不一定两者都知道,但至少要知道其中的一个。有的窗口的标题是比较容易得到的,如"计算器",所以搜索时应使用标题进行搜索。但有的软件的标题不是固定的,如"记事本",如果打开的文件不同,窗口标题也不同,这时使用窗口类搜索就比较方便。如果找到了满足条件的窗口,这个函数返回该窗口的句柄,否则返回0。 
        前面提到的VB的FindWindow()函数的声明将两个参数都定义为String类型,而在实际使用过程中,如果我们忽略某个参数就将该参数的定义又As String改为As Any。这里的As Any相当于C语言中的强制类型转换。例如,如果我们忽略窗口的类,就将定义修改如下: 
        Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As String) As Long 
        然后,在调用时使用如下语句: 
         hwndCalc = FindWindow(0&, "计算器") 
        这里的0&就表示忽略类名。需要注意的是FindWindow(0&, "计算器")和FindWindow("", "计算器")有两种完全不同的含义,前者表示忽略窗口的类,而后者表示窗口的类是个空串。类似的,我们也可以忽略标题而搜索指定的类。 
        从上面的讨论中可以看出,如果要搜索的外部程序的窗口标题比较容易得到,问题是比较简单的。可如果窗口的标题不固定或者根本就没有标题,怎么得到窗口的类呢?如果你安装了Visual C++,你可以使用其中的Spy++(如果没有VC++,在VB的盘上也可以找到Spy),在Spy++中有一个FindWindow工具,它允许你使用鼠标选择窗口,然后Spy++会显示这个窗口的类。 
        在Win32 API中还有一个FindWindowEx,它非常适合寻找子窗口。 可能你的exceltitle写错了。卢的好,更有针对性。
      

  9.   

    是我错了,
    excel的标题根据你打开的文档的不同而改变,
    还是用goodname008(卢培培,想学好VB) 的方法吧。vb和msdn不在手头,真是不方便。
    明天又要上班了。