新接手一个项目,C/S结构的,可以在客户端导出EXCEL文件,但是导出前会检查是否有EXCEL进程存在(原因不太清楚,可能是必须的?),现在要改成大家通过直接通过远程桌面连到服务器上运行该程序,这样就造成一个人在导出EXCEL的时候,另一个人就无法导出,必须等这个人导完才可以。我想请问大家有没有碰到过类似的情况,如果多人在一台机器上执行同一个应用程序同时要导出EXCEL文件是不是可行的?如果可以的话,大概是怎么实现的,有参考资料没有,谢谢!!!!
调试欢乐多
Hwnd = FindWindow("XLMAIN", 0)
If Hwnd <> 0 Then
MsgBox XXXXXXXX
Exit Sub
End If
这一段其实还是有用的 程序非正常中断后 系统里会留存多个Excel进程
我猜想作者想避免这种情况发生 大概会在导出结束后kill所有的excel进程
在错误处理中结束excel
1)维护一个列表,成员自需要两个属性 {hWnd, 创建时间}
2)定时对列表中的每个 hWnd 用 IsWindow() 进行检查,如果窗口已经关闭,则从列表中删除该成员
3)定时查找所有类名为 XLMAIN 的窗口
a)如果该 hWnd 在列表中不存在,认为是新建实例,在列表中添加 {hWnd, 当前时间}
b)如果已存在,并且 当前时间-创建时间 > 1小时,认为是异常的实例,关闭该 hWnd 或杀掉该进程。可以根据你实际的导出用时调整 1小时 这个 有效存活时间。唯一的影响是服务端手工打开的 Excel 也会超时后被关闭。