如何在程序中判断EXCEL是否运行,如运行就关闭它?(旧问重提)

icy_csdn 2001-12-27 09:50:05
前几天看了一个相关的贴子,好像是“dbcontrols(泰山)”回答过,我按照他的方法写了如下代码,不知为何总是不行。
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Const WM_CLOSE = &H10
Dim hWnd As Long
hWnd = FindWindow("XLMAIN", 0)
If hWnd <> 0 Then SendMessage hWnd, WM_CLOSE, 0, 0

不管Excel程序是不是在运行,hWnd总的返回值总是0,Why???
另外,当关闭它时,如何保存当前的工作表???
谢谢!!!
...全文
183 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
icy_csdn 2001-12-29
  • 打赏
  • 举报
回复
没有查到,也不知道怎么解决,先不管它了。
现在开始散分!!!
uguess 2001-12-28
  • 打赏
  • 举报
回复

不知道,没用过XP。查查MSDN对FindWindow的解释吧,看看他在XP中是否有变化!


icy_csdn 2001-12-28
  • 打赏
  • 举报
回复
icysnow@cmmail.com
icy_csdn 2001-12-28
  • 打赏
  • 举报
回复
我的系统是WindowsXp
Excel是2000!
请问uguess(uguess),dbcontrols(泰山)
我如何解决!
dbcontrols 2001-12-28
  • 打赏
  • 举报
回复
icy_csdn
我的代码在VB6+WIN98+OFFICE97下运行正常,你需要知道EXCEL确切版本的类名,我这里有个代码不需要类名的,来信要吧:
duyunqing@163.net
uguess 2001-12-28
  • 打赏
  • 举报
回复

我试了Jneu(沧海桑田) 的代码,OK!
VB6+Win2000+Office2000
不知你的呢?

icy_csdn 2001-12-28
  • 打赏
  • 举报
回复
问题如旧!!!
Jneu 2001-12-28
  • 打赏
  • 举报
回复
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Long) As Long
Private Sub Command1_Click()
Dim hWnd As Long
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then
MsgBox "ERR"
End If
End Sub
icy_csdn 2001-12-27
  • 打赏
  • 举报
回复
Jneu(版主请回答)
谢谢!
wyzegg 2001-12-27
  • 打赏
  • 举报
回复
m_pWnd=CWnd::FindWindow("XLMAIN",NULL);
if(m_pWnd==NULL)
{
}
Jneu 2001-12-27
  • 打赏
  • 举报
回复
请转到VBA专栏~

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧