当前位置:编程学习 > VB >>

有没有什么插件可以把编译错误对话框的内容拷下来

有没有什么IDE的插件可以把编译错误对话框的内容拷下来,方便搜索和发帖请教? --------------------编程问答-------------------- 楼主做个吧,SendMessage获取一下 --------------------编程问答-------------------- 可以自己写一个。

原理:把编译器改名,编写一个同名的可执行文件,接受传来的参数,再调用原来的编译器,然后拦截编译器的返回内容,并且显示。

相当于包装了一次。 --------------------编程问答-------------------- 汗 要是我自己写 估计得折腾小半年 --------------------编程问答-------------------- http://yiyidu.com/files/1008/YiYiduScraper.rar

用这个看看. --------------------编程问答-------------------- 这个题目好,顶一下! --------------------编程问答-------------------- Compile error:

Private object modules cannot be used in public object modules as parameters or return types for public procedures, as public data members, or as fields of public user defined types  --------------------编程问答--------------------
引用 4 楼 myjian 的回复:
http://yiyidu.com/files/1008/YiYiduScraper.rar

用这个看看.


恩,不错。要是能集成到IDE里就更完美了。 --------------------编程问答-------------------- 直接用 winspy++ 或者取文本框密码之类的工具,都可以取得对话框上的文本。 --------------------编程问答-------------------- 命令行编译,输出重定向 --------------------编程问答-------------------- 中午花了点时间做了个。
下载地址:http://download.csdn.net/source/1590960

说明

插件功能:
获得vb在debug时的信息,源码在src目录中。

安装方法:
1.点击菜单“工程”-“引用”,选择此dll
2.点击菜单“插件”-“插件管理器”,找到“DebugMessage”,勾选上右下角的三个复选框
3.这时“插件”菜单中就会多出个菜单项“DebugMessage”

当有debug信息时它会自动获得,你需要此信息时只需要点击上述菜单项即可。

预览:
--------------------编程问答-------------------- 谢谢,你太NICE了。

不过的话,能改进一点点么?现在貌似不能捕捉Complie Error啊。

--------------------编程问答-------------------- 上传好的资源没法再改啊,刚刚看了下是那个枚举函数有点问题。
你在EnumChildProc这个函数的最后一行加句"EnumChildProc = 1"就好了,然后再重新编译一下

Public Function EnumChildProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
    lpClassName = Space(256)
    retval = GetClassName(hWnd, lpClassName, 256)
    i = InStr(1, lpClassName, Chr(0))
    mname = Left(lpClassName, i - 1)
    If mname = "Static" Then
        SendMessage hWnd, &HD, 64000, Txt(0)
        strDebugMsg = StrConv(Txt, vbUnicode)
        frmAddIn.Text1.Text = strDebugMsg
        EnumChildProc = 0
    End If
    EnumChildProc = 1
End Function
--------------------编程问答-------------------- 哈哈,这回OK了。谢谢! --------------------编程问答-------------------- 还是有问题,隐藏的bug,原因不说了,代码修改如下:
Public Function EnumChildProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
    EnumChildProc = 1
    lpClassName = Space(256)
    retval = GetClassName(hWnd, lpClassName, 256)
    i = InStr(1, lpClassName, Chr(0))
    mname = Left(lpClassName, i - 1)
    If mname = "Static" Then
        SendMessage hWnd, &HD, 64000, Txt(0)
        strDebugMsg = StrConv(Txt, vbUnicode)
        strDebugMsg = Left(strDebugMsg, InStr(strDebugMsg, Chr(0)) - 1)
        If strDebugMsg <> "" Then
            frmAddIn.Text1.Text = strDebugMsg
            EnumChildProc = 0
        End If
    End If
End Function
--------------------编程问答-------------------- 代码收藏了 --------------------编程问答-------------------- lpClassName是什么东东?为啥含“Static”的就是我们要的窗体? --------------------编程问答-------------------- lpClassName是类名存放的变量,“static”就像Label是一个控件的类名,上面的信息就是你要的 --------------------编程问答-------------------- 谢谢。

另,这个帖子缓几天再结哈。这样用的过程中如果有什么问题好有个地方请教你。 --------------------编程问答--------------------
引用 14 楼 sysdzw 的回复:
还是有问题,隐藏的bug,原因不说了,代码修改如下:
VB codePublicFunction EnumChildProc(ByVal hWndAsLong, ByVal lParamAsLong)AsLong
    EnumChildProc=1
    lpClassName=Space(256)
    retval= GetClassName(hWnd, lpClassName,256)
    i=InStr(1, lpClassName, Chr(0))
    mname=Left(lpClassName, i-1)If mname="Static"Then
        SendMessage hWnd,&HD,64000, Txt(0)
        strDebugMsg= StrConv(Txt, vbUnicode)
        strDebugMsg=Left(strDebugMsg,InStr(strDebugMsg, Chr(0))-1)If strDebugMsg<>""Then
            frmAddIn.Text1.Text= strDebugMsg
            EnumChildProc=0EndIfEndIfEnd Function


 顶~~~~~~
补充:VB ,  非技术类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,