正在编写一个VB编程的辅助软件,需要在运行后能够捕捉VB代码窗口的文本,查了一些资料,可以实现捕捉别的程序窗口的句柄、类名、标题,可以捕捉记事本窗口的文本内容,但无法捕捉 VB自己的 IDE 窗口的代码文本。请教大家,要怎样才能捕捉VB代码窗口的内容呢?用GetWindowText实现不了。
解决方案 »
- vb如何检测背景音乐的状态(stopped or palying)?用mciSendString检测与用户控件共用是否会产生冲突?
- 编写一个vbscript程序,实现两位十进制数的加法运算
- 请问各位哪里有“手指型”图标文件(*.ico)下载?类似于金山词霸中的那种
- 请问水晶报表9.2中文版下载
- 请问关于DBGRID的控制问题
- 菜菜问题,望哪位大侠指教(高分求教)
- listview空间问题 ? 谢谢大家!
- 这个怎么分组查询?
- 哪里有VB的编码规范文档?
- 如何使用API函数EnumWindows???搞不懂参数的用法??????
- VB6 RS485实时采集数据(轮询)问题.
- 用户提了一个让人头疼的需求,麻烦帮忙看看能不能实现,谢谢!
把IDE中的代码文本截屏载入一个OCR识别框中,识别
我现在想实现的是,捕捉当前VB窗口中的所有代码,加以分析,在鼠标暂停捕捉单词后,首先在这些代码中检索,看这个单词是不是窗体中、过程中或自定义函数中声明的变量,还是某个控件的名称,如果不是,再检索数据库给出结果进行提示。
用OCR不能捕捉当前窗口的所有代码,就算捕捉稍大的一块进行识别,效率也是一个问题。只有直接捕捉文本才能实现了,敬请高手解答。
创建一个外接程序,可以操作IDE的任何东西
学好了就可以把你自已的工程有多少函数都列出来,哪些函数要修改一下或加些字或行上去都可以了。VBProject:代码操作代码之常用语句
http://blog.sina.com.cn/s/blog_51f1e43301009716.html
http://www.accessoft.com/blog/article-show.asp?userid=3967&id=4927VBA代码编程方法详解(一)
摘 要:VBA代码编程方法详解(第一部分)
正 文:
一、前言
本文所说的VBA代码编程,即通过编程方法创建、删除或编辑VBA工程部件、模块或代码程序对象,还可以通过VBA代码创建新的代码,以此可以实现VBA的二次开发。VBA代码编程,也就是所谓的VBA可扩展性。要实现VBA扩展功能,或者说实现对VBA代码的编程,我们必须事先完成以下相关设置。1.1 引用VBA扩展类库(Microsoft Visual Basic For Applications Extensibility 5.3)在ACCESS 2003中扩展库文件为:VBE6EXT.OLB,你可以在VBE(Visual Basic Editor即VB编辑器)窗口,点菜单 [工具] — [引用],在 [引用对话框] 中钩,来手动引用该扩展类库,你也可以通过代码实现对其的引用。
Vb程序的调试(2010-05-01 20:47:08)转载标签: it 分类: 技术文章
要做一个程序,写代码只是其中的一部分,更重要的部分是调试程序,如果你写的是一种玩具程序,基本上不会出什么错,也就没有调试的必要。不过,更多的情况是,程序运行正常,但结果却跟我们预期的不一样。这时候就要调试了。 一般我们都会跟着程序一行一行的走,看问题到底出在什么地方,程序运行中,各个变量的值是我们比较关心的东西。那怎么查看变量的值呢。 先设上断点,让程序在想看的地方停下来。鼠标指向想看的变量,它的值就会显示出来。还可以看到值的方法有,监视窗口,本地窗口,而且还可以修改变量的值。还有一种方法是msgbox把变量的值弹出来,但是这样弹出来的值,只能看,不能改,也不能复制。不过我们可以在立即窗口把这个值输出来。Debug.print 变量 这样就可以把变量的值输到立即窗口,但程序也不会中断,输出来的值也可以复制。另外,在立即窗口可以直接写代码。 但是立即窗口的内容却不会自动清除。让程序清除立即窗口的内容 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPrivate Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Const WM_ACTIVATE As Long = &H6'调用这个函数就可以清除立即窗口的内容Dim ideHwnd&, debugFrmHwnd& ideHwnd = FindWindow("wndclass_desked_gsk", vbNullString) If ideHwnd > 0 Then debugFrmHwnd = FindWindowEx(ideHwnd, ByVal 0&, "VbaWindow", vbNullString) If debugFrmHwnd > 0 Then PostMessage debugFrmHwnd, WM_ACTIVATE, 1, 0& SendKeys "^{HOME}+^{END}^{BREAK}{ DEL}{F5}", False End If End If这个方法是用来删除,改一下可以
SendKeys "^{HOME}+^{END}^{BREAK}^{c}", False具体没实测过
新建项目,选择addin项目类型.然后就是debug.Print vbinstance.ActiveCodePane.CodeModule.Lines(1,10)
来显示ide里么的活动代码窗口的第一行开始的10行.至于LS各位的上面那些,都太复杂了.下面例子:
建立一个add-in工程,
系统自动添加了connect.dsr设计器和一个窗体frmaddin.frm
在窗体添加一个定时器,时间间隔随便,100ms吧.
添加一个textbox2,multline设置为true
在定时器里么写代码:
Private Sub Timer1_Timer()
With VBInstance
If Not (.ActiveCodePane Is Nothing) Then
'Text2.Text = .ActiveCodePane.Name
Text2.Text = .ActiveCodePane.CodeModule.Lines(1, .ActiveCodePane.CodeModule.CountOfLines)
End If
End With
End Sub设置工程属性:调试,启动程序,启动程序设置成vb6.exe
运行自己的add-in例程,默认的工程名字是myaddin运行,在新出现的vb6 ide里随便选择一个工程类型,
然后在外接程序管理器里么加载myaddin,出现frmaddin窗体
在新的ide里进入代码窗口..在frmaddin的text2里出现来新vb6 ide的代码窗口的内容.