VB 插件 - VB關閉的事件或消息

vansoft 2006-03-29 05:46:49
我在工程、窗體、控件刪除事件中有代碼。
結果以VB關閉,或工程關閉時,也會觸發。

如果獲得這二個事件或消息。
...全文
239 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
vansoft 2006-04-01
  • 打赏
  • 举报
回复
超级绿豆,谢谢你的回复。
你写的我已经做到了,
我现在需要区别删除工程的前面操作是什么?
是用菜单删除?还是移除工程?
还是由于关闭VB?

这些操作都是引发你写的这些事件,
我现在需要区别是哪些操作引发的。

比如ItemRemoved,你用菜单删除,用菜单移除,关闭VB,新建工程,
这些都会触发ItemRemoved,我现在需要分清是哪个触发的。
supergreenbean 2006-04-01
  • 打赏
  • 举报
回复
至于点关闭的话,我暂时还木有想到除了子类处理ide窗口外更好的办法
supergreenbean 2006-04-01
  • 打赏
  • 举报
回复
老实说偶木有发现怎么用菜单删除工程的,另外对于菜单操作的话我们可以给设个handler拦截这个操作
比如新建操作

Private WithEvents moHandlerOfNewProjectBtn As CommandBarEvents


Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
On Error GoTo Error_Handler

'save the vb instance
Set VBInstance = Application

If ConnectMode = ext_cm_External Then
'Used by the wizard toolbar to start this wizard
'
Else
Set moHandlerOfNewProjectBtn = VBInstance.Events.CommandBarEvents(VBInstance.CommandBars("菜单条").Controls("文件(&F)").Controls("新建工程(&N)"))

End If

Exit Sub

Error_Handler:

MsgBox Err.Description

End Sub
Private Sub moHandlerOfNewProjectBtn_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
MsgBox "新建工程"
End Sub
迈克揉索芙特 2006-04-01
  • 打赏
  • 举报
回复
超级绿豆,名不虚传。
proer9988 2006-04-01
  • 打赏
  • 举报
回复
mark
supergreenbean 2006-03-31
  • 打赏
  • 举报
回复
Private WithEvents m_oHandlerOfProjectEvent As VBProjectsEvents
Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
On Error GoTo Error_Handler

'save the vb instance
Set VBInstance = Application

If ConnectMode = ext_cm_External Then
'Used by the wizard toolbar to start this wizard
'
Else
Set m_oHandlerOfProjectEvent = VBInstance.Events.VBProjectsEvents()
End If

Exit Sub

Error_Handler:

MsgBox Err.Description

End Sub

Private Sub m_oHandlerOfProjectEvent_ItemActivated(ByVal VBProject As VBIDE.VBProject)
MsgBox VBProject.Name & "激活"
End Sub

Private Sub m_oHandlerOfProjectEvent_ItemAdded(ByVal VBProject As VBIDE.VBProject)
MsgBox VBProject.Name & "打开"
End Sub

Private Sub m_oHandlerOfProjectEvent_ItemRemoved(ByVal VBProject As VBIDE.VBProject)
MsgBox VBProject.Name & "关闭"
End Sub

Private Sub m_oHandlerOfProjectEvent_ItemRenamed(ByVal VBProject As VBIDE.VBProject, ByVal OldName As String)
MsgBox VBProject.Name & "重命名"
End Sub
vansoft 2006-03-31
  • 打赏
  • 举报
回复
感謝樓上的二位回復。
VB6的插件製作已經沒問題。

當用戶刪除控件、窗體、工程時,
我需要及時更新數據庫裏的資料,
這也能做到。

現在問題在於,當我關閉VB,或關閉工程時,
注意,不是刪除。
但VB本身會移除控件、窗體、工程,
這也會觸發事件。

也就是說,我現在無法判斷是刪除,還是由於關閉工程或VB時觸發這個事件的。
迈克揉索芙特 2006-03-30
  • 打赏
  • 举报
回复
AddInstance是工程中实现同VB接口的对象。在程序中对应AddInstance包含两个方法:OnConnection和OnDisconnection。在这里我们称它们为方法而不是事件,是因为它们是由VB调用而不是由某个消息引发而由系统调用的。

楼主可研究一下OnDisconnection。


另外看看这个:
http://www.cittm.net/Article/sheji/vb/200601/1661.html
vansoft 2006-03-30
  • 打赏
  • 举报
回复
暈,一看就是沒做過的。
jackcaixia 2006-03-30
  • 打赏
  • 举报
回复
Hook
xthand 2006-03-30
  • 打赏
  • 举报
回复
http://www.onlinedown.net/soft/46960.htm 写着玩的
supergreenbean 2006-03-29
  • 打赏
  • 举报
回复
建议用消息Hook
是是非非 2006-03-29
  • 打赏
  • 举报
回复
Hook能用吗?

7,765

社区成员

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

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