精华内容
下载资源
问答
  • 怎么通过windbg来分析消息堆栈的基地址,已知目标程序vb6.0编译的,没有经过任何加密,如何获得串口上的数据?
  • 我们用W32DASM打开一个中型的VB程序来反汇编,我们发现程序中用到的MSGBOX÷FileCopy等理应对应API函数居然一个都没有出现在编译后程序的IMPORT TABLE里,一般VC和DEPHI都是直接出现在编译后程序的IMPORT TABLE里的...
  • VB编写的一个文件下载类,并没有使用winsock,而是通过代理服务器和HTTP验证来实现,为了更好的演示这个类的使用,编写了一个测试程序,请参见演示截图所示的运行界面,具备下载过程中适时显示下载进度、文件总大小...
  • 易语言 && Visual Basic 6.0 (VB6)

    千次阅读 2018-06-13 17:18:51
    有朋友曾猜测易语言是在VB6基础上二次开发或二次封装的产品。 ...易语言支持通过置入代码向目标编译程序输出x86机器码,而VB6没有类似的功能。 易语言支持静态编译EXE和DLL(非普通的打包然后...

    有朋友曾猜测易语言是在VB6基础上二次开发或二次封装的产品。

    我在这里提几个思路可用于协助否定该猜测。

    • VB6编译的程序在Windows 95系统内运行需要VB6运行库(MSVBVM60.dll直到Win98才被操作系统内置),而易语言编译的程序在Windows 95系统内运行并不需要该运行库。
    • 易语言支持通过置入代码向目标编译程序输出x86机器码,而VB6没有类似的功能。
    • 易语言支持静态编译EXE和DLL(非普通的打包然后在运行时释放DLL),而VB6没有类似的功能。
    • 易语言支持直接使用C/C++的静态库(.lib/.obj),而VB6没有类似的功能。

    总结:

    • 从表面上看,易语言和VB6的IDE比较相似,架构设计思路也是相通的;
    • 但深入去看,二者编译/链接/运行机制差别巨大,VB6不足以承载易语言在其之上的二次开发或二次封装。
    展开全文
  • 编译工具

    2018-08-22 17:31:09
    可反编译没有加密的dll库,高级语言源程序经过编译变成可执行文件,反编译就是逆过程。即通过技术手段将可执行文件还原成源代码。此文讲解如何将.net(c#、F#、vb.net)编写的可执行文件还原成c#代码。
  • 本书通过大量实例,介绍了如何在Visual Basic程序设计中使用 Win32 API函数,内容包括:API函数的声明和参数传送、资源文件、窗口、Windows消息控制、设备环境(DC)、GDI对象、光标、位图与光栅运算、字体与文本、...
  • VB写的文本编辑器,其最初的原型是仿Editplus编辑器,不过现在看来,功能上当然没有editPlus多,只是一个学习VB处理文本字符的例子程序,和Windows记事本差不多的程序VB RichTextBox记事本文本编辑器源码, ...
  • glade 编译

    2009-05-22 16:59:00
    可惜以前一直没有用她编译通过程序的经历。 直到昨天我成功的编译了。现在第一时间写出这个过程和大家分享。 步骤如下: 一、启动glade-2 (当然是用最新版的了。这个没个说,有中文界面的) 画出图形界面。设好...

     glade 编译
      glade 我总想把她说成是Linux 下的"VB",真得是个不错的程序。可惜以前一直没有用她编译通过程序的经历。
      直到昨天我成功的编译了。现在第一时间写出这个过程和大家分享。
      步骤如下:
       一、启动glade-2 (当然是用最新版的了。这个没个说,有中文界面的)
      画出图形界面。设好适当控件的事件之后保存吧,假设我们的保存路径是:project/project1 。
      单击按钮“Build"。这样就生成了我们需要编译的文件了。退出glade-2 吧。
       二、编译。用终端进入 project/project1 目录。
      运行 ./autogen.sh
      这样能生成configure 文件,运行 ./configure 生成 makefile
      接下来 make check 检查一下吧。
      make install 这样如果没有出现 error 错误强行中止。就算成功了。
      进入 src 目录,看到一个绿色文件了吧。就是我们生成的 elf 文件了。
      ./program_name 就可以了。
      当然现在的程序没有一点功能,只有个界面。因为没有在回调函数中加入任何东西。
      就是 src/callbacks.c 文件。在src 目录中,你可以修改两个文件。
      callbacks.c 和main.c 这两个,其它的就不要动了,这样会影响 glade 的运行的。有时glade 会覆盖你修改的文件的。
      最后,祝你好运。

    展开全文
  • SDK 开发个抓图工具,因为要求要 VS2013 ,就搞了一个来装上,发现 SDK 里面只有 java 和 C# 的 Demo ,没有 VB.net 的,起初还有点担心,因为我只熟悉 VB6 ,害怕要从头学 C# (因为担心 Java 的程序不支持批处理...

        这几天用海康威视的 SDK 开发个抓图工具,因为要求要 VS2013 ,就搞了一个来装上,发现 SDK 里面只有 java 和 C# 的 Demo ,没有 VB.net 的,起初还有点担心,因为我只熟悉 VB6 ,害怕要从头学 C# (因为担心 Java 的程序不支持批处理参数输入,所以暂时选择 C#)才能搞定。怀着忐忑的心,打开 C# 的 Demo ,第一次没敢动代码编译通过了。看了一下程序结构,好不容易找到窗口编辑界面,试用了以下,才发现和 VB6 区别不大(想起来当初第一次用 VS2003 写 VB.net 程序时那个恐怖加无奈,就是我放弃 VB.net 继续用 VB6 的原因),之后看了一点点 C# 的入门教程,对照这个 Demo 一看,才发现果然语法及其类似 JS 。

        用了零零星星的10几个小时,改了一些 Demo 里面的流程参数,终于实现了我需要的功能,回过头再来看看,感觉 C# 的易用性和 VB6 相差无几,特别是窗口 UI 编辑和事件响应处理,易用性完全不是 VB.net 能比的,VB.net 那个难用简直不堪回首,4年前我用 VB.net 也是做类似的相机抓图工具,花了好几天事件才勉强整了个残次品,想想就火大。

        最后,感慨下,以其从头学用难用的 VB.net 的 难看的 class 还不如我直接就用 C# 更易上手!再也不用 VB.net 了。

        以上为本人孤陋寡闻的偏见,不喜勿喷。

        此记!

    展开全文
  • VB利用网卡MAC地址远程开机实例

    热门讨论 2013-07-19 02:31:15
    VB获得远程电脑的网卡MAC地址,并通过此唤醒远程电脑,因条件不具备没有测试到底能不能关机和唤醒,但程序VB6下顺利编译,真...
  • .Net编译原理

    2021-03-01 15:30:03
    .Net是微软搭建的一个平台,C#语言可以通过.Net平台来编写、部署、运行.Net应用程序,当然,不仅仅是C#语言,其他.Net语言也可以运行在此平台之上,如VB.Net,但在这着重于C#的讲解;则.Net平台式一个跨语言的平台; ...

    .Net平台简介:

    .Net是微软搭建的一个平台,C#语言可以通过.Net平台来编写、部署、运行.Net应用程序,当然,不仅仅是C#语言,其他.Net语言也可以运行在此平台之上,如VB.Net,但在这着重于C#的讲解;则.Net平台式一个跨语言的平台;

    .Net平台中内部有多种机制和类库,但更为重要的有两大组成:

    1. FCL-框架类库,这是微软事先定义好的类的集合,里面包含了常用的类,以至于方便程序员调用;

    2.CLR-公共语言运行时,这是创建、部署、运行.Net程序的必备环境,若没有此环境,程序集将无法运行;
     

    一般的高级编程语言会把代码编译成机器码,也就是我们说的非托管代码,执行在编译它的电脑上。而.NET编译代码的时候会把高级编程语言编译成中间语言 运行在CLR(公共语言运行库)上,也就是把代码集成一个exe文件中,

    NET的程序是由多种语言编译的,如C#、VB、C++、J#等,但是最后都会由各自的编译器编译为一致的中间语言(IL)。最后由【CLR提供运行环境】,将中间语言编译为【机器码】,供CPU执行。.NET 在编译过程中 没有直接编译成CPU认识的代码,而是编译成了CLR所认识的代码,这为跨平台奠定了基础。

    比如我们在C语言中编写的代码要移植到C#中 C#中只要有相应的编译器(JIT) 这时候就能直接编译从另一种语言编译过来的CLR也就是exe文件。

    为了尽量减少中间代码编译为机器代码的性能损失,中间语言采用【即使编译】,也被称为【JIT编译】。这种编译方式只编译调用的代码部分,而并非全部编译程序中的所有代码,编译过的部分会存储在内存中,下次执行时不需要重复编译,当退出程序时,已编译的部分代码才会被清除。这种策略极大的降低了中间代码的性能损失,使程序灵活性和性能相权衡的较佳方案。

    编译大致过程

    大家都应该知道,计算机中的CPU只认识二进制码,所以,最后CPU执行的是一串一串的二进制码;对于C#而言,它的编译到执行如下所示:

    C#源代码--(csc编译器)-->程序集(exe/dll)---(MSIL或IL)---->CLR------(JIT)----->CPU;

    说明:1. C#通过C#编译器(CSC)生成程序集(exe/dll),而这个程序集内部就是由微软中间语言(MSIL)组成,在这过程中,csc会检查错误,是否符合C#语言规范;

               2. 当运行程序集时,公共语言运行时(CLR)中的JIT会将程序集中的微软中间语言(MSIL)转换成本地平台的CPU指令,并将指令传给CPU执行;

             3.CPU运行该指令,程序就开始运行;
     

    总的来说,编译过程就是把用户看得懂的语言比如 Console.WriteLine("hello,world");编程成CLR认识的代码也就是集成exe文件。

    然后由CLR编译成CPU所认识的0和1.

    .NET Framework的核心是CLR【公共语言运行库】,CLR是.NET程序的运行库。中间语言需要在CLR中运行并转码为机器码,所以.NET程序必须依赖.NET Framework。

    .NET Framework由【公共语言】运行时(CLR)和基类库(BCL)组成,前者提供运行库环境,而后者提供丰富的类库,适合全部.NET编程语言调用。基类库不仅封装了各种类型,而且还支持很多服务

    .NET程序的中间语言(IL)也被称为托管代码,优点:

    1. 平台无关性。

    2. JIT性能优化。

    3. 语言互操作性。支持多种语言编写程序,并编译为中间语言。

     

    与C++编译的一些区别

    上学的时候我们学过的编译原理或者编译技术实际上是在讲如何将高级程序语言如C++编译为计算机可以理解的汇编语言,这里说的编译原理只是想说明在.NET的世界里编译这件事儿和传统的C++有什么区别和联系。先来简单的说一下传统的做法,在C++里,但你编译一个应用程序比如一个EXE文件或者是DLL(注意这里的DLL叫做动态链接库,只是到了.NET中才才被叫做程序集)时,实际上编译器做的事情就是直接将你写的C++代码编译为汇编语言,然后以二进制的形式存放在EXE或者DLL文件中,当被执行的时候,CPU就可以直接读到汇编代码开始运行了。当然说起来简单,里面还是有非常多的细节问题,我们需要关注的重点是,C++编译器做到的事情是将高级语言直接编译为汇编语言。

    接下来,我们来看一看在.NET中我们如何处理。在说明之前,我们来回顾一下一个非常经典的说法,你看任何一本介绍.NET的书都会在开篇宣称.NET是跨平台跨语言的高级运行时,但是.NET是如何做到的呢?我们引入一个非常关键的概念叫做Intermediate Language简称IL,中文叫做中间语言。

     

    当你写了一段程序(假设是一个Console Application EXE的项目),在Visual Studio中点击F5编译并运行这个按钮的时候,实际上都发生了些什么呢?

    1. 首先是编译,与C++类似,.NET编译器也是将高级语言编译,但是输出并不是汇编语言,而是IL中间语言。这个所谓的IL是个什么东西呢?你可以理解为,这是和C#类似的一种语言,程序员可以很容易的看懂甚至直接用Visual Studio就可以写。然后这些中间语言会以二进制的形式存放在EXE文件中。
    2. 接下来是运行。运行的时候.NET Runtime会加载EXE中的必要信息以及IL,这时你可能会问,C++运行的时候,CPU可以直接运行汇编,但是CPU能认识IL么?答案是否定的,CPU会IL一无所知。.NET运行时会进行二次编译,将IL编译为真正的汇编语言,然后CPU执行。

    注意,.NET的程序要运行,实际上是需要两次编译的,一次是在开发的时候,另外一次则是在运行的时候。那么这样做实际上解决了.NET跨语言跨平台这个问题。.

    NET上会很多种语言,比如C#,VB.NET, C++.NET, F#,这些语言开发出来的程序,只要机器上装了.NET Framework就都可以运行,这是因为不同的语言在第一次(开发过程)编译的时候都会被编译为IL,也就是说,同样的一个功能,用C#写出来和F#写出来编译出来的IL是一样的(当然编译器可能根据不同的高级语言特点有所优化,但是基本一致)。这样做的好处是什么呢?很简单,比如你用C#写了一个feature,我用F#加载你的DLL就可以使用你的程序集了。这看起来没什么,但是你能想想一下如果C++可以非常简单的调用Java的类库,这个世界是不是就该疯狂了?再来是跨平台,当你的.NET程序运行的时候,.NET运行时负责将IL编译为汇编语言,在运行编译时,.NET可以根据当前运行的操作系统以及CPU构架的不同生成完全不一样的汇编语言。但是C++就做不到,你用一种编译器编译出来的东西只能运行在某个特定的平台上,比如VC编译器编译出来的只能跑在windows上,在linux上就完蛋了。这是.NET非常重要的一个框架技术核心,虽然现在被应用的并不广泛,因为除了C#和Windows平台意外,.NET是很少被使用的。但是如果未来微软将.NET技术推广到更多领域,这种跨平台跨语言的框架核心就能显示出价值了。看一下下面这个图。

     

    [.NET <wbr>Framework] <wbr>编译原理

    接下来我们来看几个非常重要的相关的面试问题

    首先,二次编译带来的性能损失。这很容易理解,与C++相比,运行.NET程序在运行的时候多了一次编译,这肯定是要慢的。.NET runtime做了一些性能的优化,即由IL编译过的汇编语言会被缓存起来,当第二次再遇到同样的IL的时候,会直接从内存中加载,而不再被编译。这也就是.NET程序会被指责第一次运行极慢无比的一个重要原因。比如我们来看看下面这段code...

    Console.WriteLine("Hello world"); // first time, compile this function
    
    Console.WriteLine("Hello world again"); // second time, load from cache

    当然为了提高性能,.NET编译器允许将高级语言如C#直接编译为汇编语言,但是并不推荐这样做,这样的会,所有跨平台,跨语言的特性就将消失,这种做法适用于对性能要求极高的应用程序。

    第二,反编译的故事。所有.NET的DLL都是中间语言组成的,所以,你可以用反编译器加载DLL,由中间语言反编译为C#以此看到其他程序集的源代码。当然.NET提供了加密保护机制,当你编译为DLL的时候可以加入扰码,使反编译器无法理解IL。

    第三,这是反射的基础。你肯定知道反射的故事,在运行时可以动态的加载某个类型中所有的property, field等等,.NET就是通过分析中间语言做到这一点的。在运行时,.NET runtime会加载IL并理解所有的类型定义。

     

     好了,这就是所有.NET编译的基本故事了,虽然说和你写code没什么太大关系吧,作为.NET的核心技术框架,这个还是要了解一下的

     

     

    展开全文
  • [转] vb.net option

    2008-11-03 11:20:00
    作为程序员总是想在程序编译期时候发现程序的错误,而不愿在运行期来发现。当一个程序成功编译以后,你可能会认为该程序已经通过所有编译期的错误检查,不会再有其它错误使你吓一跳。然而事实上,程序运行一次没有...
  • 软件绝对可以在VB6通过编译,不过请先建立好数据库表,我没有提供数据库的建库脚本,不过大家可以根究程序建立出来。毕竟学习是有过程的嘛。
  • VB语言开发的Java Eclipse代码编辑工个源码,不知道功能是否可用,要是可用就太牛叉了,源代码在VB6.0 IDE下编译通过。Eclipse是一套大型的Java软件开发工具,提供可视化的编辑界面以及语法文档支持,本软件是用VB...
  • glade 编译过程

    千次阅读 2003-11-29 23:10:00
    可惜以前一直没有用她编译通过程序的经历。直到昨天我成功的编译了。现在第一时间写出这个过程和大家分享。步骤如下: 一、启动glade-2 (当然是用最新版的了。这个没个说,有中文界面的)画出图形界面。设好适当控件...
  • glade 编译过程 (转)

    2007-11-28 12:45:21
    glade 编译过程 (转)[@more@]glade 编译 glade 我总想把她说成是Linux 下的"VB",真得是个不错的程序。可惜以前一直没有用她编译通过程序的经历。直到昨天我成功的编译了。现在第一时间写出这个过程...
  • VB6.0(第十二课时)

    2019-11-04 09:55:34
    (二)运行错误:在程序编译通过后运行代码时发生的,一般是由于程序执行过程中出现了非法操作引起的。如,除法中除数为0、类型不匹配、访问的文件不存在。 (三)逻辑错误:程序没有按预期的方式执行。如:函数...
  • VB.NET中的Option Explicit和Option Strict

    千次阅读 2003-05-08 14:19:00
    作为程序员总是想在程序编译期时候发现程序的错误,而不愿在运行期来发现。当一个程序成功编译以后,你可能会认为该程序已经通过所有编译期的错误检查,不会再有其它错误使你吓一跳。然而事实上,程序运行一次没有...
  • zint编译为dll后,只有两个DLL文件(libpng16.dll和zint.dll),可以在网上...本程序没有实现自定义变量的情况下, 通过修改内存值,来达到生成不同条码目的。 Private Declare Function ZBarcode_Create Lib "zi...
  • VB课程设计俄罗斯方块

    热门讨论 2011-02-25 10:46:55
    Vb是microsoft公司于1991年退出的windows应用程序开发工具visual意思是“可视化的”。在它刚推出来时,自身还存在一些缺陷,功能也相对少一些。但是经过多年的开发研究。最近microsoft公司又推出了VB6.0版本 VB6.0...
  • VB6.0动态加载ActiveX控件漫谈 深圳 罗汉军 罗德昌 熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控件极大地方便了编程, 但唯一的缺陷是不能动态加载控件,...---- 本代码在Win98、VB6.0(英文版)上编译、运行。
  • 我用vb写了一个客户端,在一台机器安装了mysql,vb编译客户端以后,布置到5台相同的机器上去,机器都是相同的配置都是win7 32位系统,通过安装mysql odbc driver与服务器连接。其中四台完全正常,只有一台每次通过...
  •  如今,在Visual Studio.NET中编译源代码(无论是VB还是C#)时,编译器都会将高级源代码翻译成MSIL,即“微软中间语言”,而不是特定的机器指令。具有更多安全性、版本控制、共享能力与其它相关元数据的中间语言(IL)...
  • vb Script参考文档

    2009-07-28 22:13:02
    ScriptEngineBuildVersion 函数 返回使用中的脚本引擎的编译版本号。 ScriptEngineMajorVersion 函数 返回使用中的脚本引擎的主版本号。 ScriptEngineMinorVersion 函数 返回使用中的脚本引擎的次版本号。 Second...
  • 用传统程序设计语言设计程序时,都是通过编写程序代码来设计用户界面,在设计过程中看不到界面的实际显示效果,必须编译后运行程序才能观察。如果对界面的效果不满意,还要回到程序中修改。有时候,这种编程-编译-...
  • 使用存储过程的原因:创建—个过程并把它存储在数据库中,因为事先知道有这个过程,所以可以提前编译它,以便在应用程序中使用。 在代码中使用存储过程的另一个好处是一般比较安全。使用没有存储过程的SQL时,总是...
  •  如今,在Visual Studio.NET中编译源代码(无论是VB还是C#)时,编译器都会将高级源代码翻译成MSIL,即“微软中间语言”,而不是特定的机器指令。具有更多安全性、版本控制、共享能力与其它相关元数据的中间语言(IL)...
  •  如今,在Visual Studio.NET中编译源代码(无论是VB还是C#)时,编译器都会将高级源代码翻译成MSIL,即“微软中间语言”,而不是特定的机器指令。具有更多安全性、版本控制、共享能力与其它相关元数据的中间语言(IL)...
  • 修改编译器,可以为编译出的EXE、DLL添加版本信息(通过程序配置”设定)。 5. 修改集成开发环境,自动记忆非独立编译时是否写出依赖文件的选项。 6. 大幅提高编译速度。 对其它支持库的更新: 1. 修改高级...
  • Option Explicit On 和Option Strict Off

    千次阅读 2013-10-03 15:00:16
    作为程序员总是想在程序编译期时候发现程序的错误,而不愿在运行期来发现。当一个程序成功编译以后,你可能会认为该程序已经通过所有编译期的错误检查,不会再有其它错误使你吓一跳。然而事实上,程序运行一次没有...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

vb程序编译没有通过