如何得到整个工程/工程组的全部源代码?--在addin中
如何得到整个工程/工程组的全部源代码?--在addin中
现在我在做一个vb ide的add-ins
遇到了一个问题,如何得到目前这个工程/工程组的全部源代码(每个文件里面的,不过,不是通过读取文件得到,而是取得编辑器中的文件,这些东西和硬盘上的可能不同,是修改中的文件,通过得到工程/工程组的原地址文件来获取代码我会做,请不要重复了。)
或者有什么相关的文档资料,我手头什么东西都没有
谢谢了,请回帖或者mail:shawfile@163.net
qq:9181729
问题点数:40、回复次数:7Top
1 楼heng_s(渣渣)回复于 2003-01-14 11:57:23 得分 0
用记事本打开源文件就可以看到.Top
2 楼shawls(VB Fan)(QQ:9181729)回复于 2003-01-14 12:07:18 得分 0
晕倒~~这个谁不会啊,
我是说,目前我打开的这个工程,我点击我写的addins所添加的按钮/菜单可以将当前打开的工程/工程组里面的所有form/class/usercontrol/model/other里面的全部源代码得到Top
3 楼lxcc()回复于 2003-01-14 13:07:45 得分 0
for each in forms
'open source code
next
其他就不知道了Top
4 楼shawls(VB Fan)(QQ:9181729)回复于 2003-01-14 15:36:34 得分 0
算了,我自己找到了 答案,贴上来,放2天,就接帖子
For I = 1 To VBInstance.VBProjects.Count
strName = strName & VBInstance.VBProjects.Item(I).Name
strPath = strPath & VBInstance.VBProjects.Item(I).FileName
strTmp = strTmp & VBInstance.VBProjects.Item(I).Name & vbCrLf & VBInstance.VBProjects.Item(I).FileName & vbCrLf
For x = 1 To VBInstance.VBProjects.Item(I).VBComponents.Count
DoEvents
strTmp = strTmp & VBFileSplit & vbCrLf & "窗体名:" & VBA.Space(7) & VBInstance.VBProjects.Item(I).VBComponents.Item(x).Name & vbCrLf & "文件列表:" & VBA.Space(5) & vbCrLf
For y = 1 To VBInstance.VBProjects.Item(I).VBComponents.Item(x).FileCount
DoEvents
strTmp = strTmp & VBInstance.VBProjects.Item(I).VBComponents.Item(x).FileNames(y)
Next y
strTmp = strTmp & VBCodeSplit & "代码内容:" & VBA.Space(5) & vbCrLf & VBInstance.VBProjects.Item(I).VBComponents.Item(x).CodeModule.Lines(1, VBInstance.VBProjects.Item(I).VBComponents.Item(x).CodeModule.CountOfLines)
Next x
Next ITop
5 楼shawls(VB Fan)(QQ:9181729)回复于 2003-01-14 16:14:01 得分 0
还有一个问题:
代码:
I = VBInstance.CommandBars.Item(2).Controls.Count
Set CmdCommandBar = VBInstance.CommandBars.Item(2).Controls.Add(MsoControlType.msoControlButton, , I - 1, I)
Set ButtonHandler = VBInstance.Events.CommandBarEvents(CmdCommandBar)
CmdCommandBar.Caption = In_Caption
这里添加了一个按钮到toolbar上面,如何设置这个按钮的图标?现在这个按钮是没有图标的Top
6 楼shawls(VB Fan)(QQ:9181729)回复于 2003-01-14 19:31:08 得分 0
用外接程序操作 IDE
扩展性对象模型中的几个对象允许操作和扩展 Visual Basic IDE。该主题里的代码举了几个例子。
命令栏集合和命令栏对象
通过它们可以操作命令栏,命令栏是工具栏和菜单栏的组合。几乎可以对 CommandBar 对象做任何事,包括创建新的对象、删除已有的对象和改变它们的尺寸、位置和图标。
这是一个如何操作命令行的示例:
Dim mcbMenuCommandBar As Office.CommandBarControl
'确定标准的工具栏是可见的。
gVBInstance.CommandBars("Standard").Visible = True
'当作按钮添加到标准工具栏中。
'在工具箱的右边添加该按钮。
Set mcbMenuCommandBar = _
gVBInstance.CommandBars("Standard").Controls.Add _
(1, , , gVBInstance.CommandBars("Standard") _
.Controls.Count)
'设置按钮的标题。
mcbMenuCommandBar.Caption = "My Test"
'把图标复制到剪贴板上。
Clipboard.SetData LoadPicture("c:\windows\circles.bmp")
'把图标粘贴在按钮上。
mcbMenuCommandBar.PasteFace
'处理 CommandBarEvents 对象。
Set Me.MenuHandler = _
gVBInstance.Events.CommandBarEvents _
(mcbMenucommandBar)
详细信息 关于使用命令条的附加信息,请参阅第四章“创建激活外接程序的工具栏按钮”。
Windows 集合和 Window 对象
该集合和该对象允许创建和删除窗口,移动在 IDE 中打开的窗口,和改变它的尺寸。所有的窗口都包含在 Windows 集合中。这意味着这些窗口不曾真正被关闭,只是通过 Visible 属性改变了它们的可视性。
注意,虽能使用 Window 对象来操作窗口框架本身,但不能用它来操作窗口所包含的对象(例如控件)。若要操作窗口包含的对象,必须引用适当的对象。
随后的代码片断演示如何引用 Window 对象和 Windows 集合:
'触发窗口的可视性。假设列表中的窗口顺序和集合中的窗口顺序相匹配。
'一个更好的方法是根据 caption 和 type 来查询窗口。
Private Sub cmdToggle_Click()
Dim w As Window
Dim sw As String
sw = Combo1.Text
If sw <> "" Then
If sw = "MainWindow" Then
Set w = vbi.MainWindow
Else
Set w = vbi.Windows(Combo1.ListIndex)
End If
w.Visible = Not w.Visible
RefreshWindows
End If
End Sub
LinkedWindows 集合
该集合包含了给定 LinkedWindowFrame 中的所有窗格。“链接的窗口”定义成两个或更多窗口,这些窗口连接在单一的联合窗口中,被称之为“LinkedWindowFrame”的框架所包围。LinkedWindowFrame 中的每一个子窗口被称为“窗格”。LinkedWindowFrame 存在于所有能链接或连接在一起的窗口四周,(除了代码窗口、设计器窗口、对象浏览器窗口以及搜索和替换窗口外)。
如果从 LinkedWindowFrame 中删除了所有的区,该 LinkedWindowFrame 也被删除。(唯一的例外是主窗口)
只有类型为 LinkedWindowFrame 的窗口有 ContainedWindows 集合。对于其它窗口类型,该集合是 Nothing。
下面的代码片断演示了如何引用 LinkedWindows 集合:
'如果窗口被链接或连接,则解除链接或连接。
Private Sub cmdUnlinkWindow_Click()
Dim w As Window
Dim sw As String
sw = Combo1.Text
If sw = "" Then Exit Sub
If sw = "MainWindow" Then
Set w = vbi.Windows.MainWindow
Else
Set w = vbi.Windows(Combo1.ListIndex)
End If
If Not w.LinkedWindowFrame Is Nothing Then
w.LinkedWindowFrame.LinkedWindows.Remove w
End If
RefreshWindows
End Sub
Code Pane 对象
这是一个显示对象代码的对象提供的窗口。不能创建或破坏 IDE 中的 CodePane 对象,但可以操纵它们的高度、宽度和位置。也可以插入或删除代码行(使用 InsertLines 和 DeleteLine 方法),选择某些行并使其突出显示或不突出显示。可以使用 GetSelectedText 方法把选好的代码复制到 Windows 的剪贴板上。
虽然 CodePane 对象允许可视地检查或选择存在的代码,但是不允许更改它。为此,必须使用 CodeModule 对象,如本章“用外接程序操作代码”部分所描述的那样。
下面的代码片断演示了如何引用 CodePane 集合:
'用滚动条滚动代码窗格。
Private Sub sclCodePane_Change()
Dim p As VBProject
Dim c As VBComponent
Dim cp As CodePane
Dim sc As String
Dim sp As String
sp = cmbProj.Text
sc = cmbComp.Text
If sp <> "" And sc <> "" Then
Set c = _
vbi.VBProjects.Item(sp). _
VBComponents.Item(sc)
Set cp = c.CodeModule.CodePane
cp.TopLine = sclCodePane.Value + 1
End If
End Sub
Top
7 楼dapha(www.5ivb.net)回复于 2003-01-14 22:10:01 得分 40
goodTop



