您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 辅导 >> 正文    
  从程序中生成Exe文件 【注册男护士专用博客】          

从程序中生成Exe文件

www.nanhushi.com     佚名   不详 

从程序中生成Exe文件
  这篇文章要讨论的是在一个VB程序中如何产生出另一个Exe文件。
  要实现这个目的,必须符合以下几个条件:
    第一、编写这样的程序时,具备欲生成的Exe文件
    第二、事先知道欲生成的Exe文件大小
  其实这两个条件可以说不是条件,但确实很重要。
  为了叙说方便,将发行的程序称作APP-1.Exe,要生成的文件叫APP-2.Exe,以下是具体步骤:

    第一步,准备好APP-2.Exe,这里我使用VB写了一个什么都不做程序,编译成APP-2.Exe。
    第二步,右键单击单击APP-2.Exe,选择属性,记下文件大小。注意,应记下以字节为单位的具体数字,而不是多少k。
    这样就具备了前边说的两个条件。
    第三步,新建工程APP1,新建资源文件加入工程,在资源文件编辑器中添加自定义资源(CUSTOM),资源号使用默认的101。值得注意的是,每个资源号对应的资源项对资源大小的要求是有限制的,我记得时64K,因此如果APP-2.Exe的大小如果大于这个数的话,就要麻烦一些。如果是这样,我们的写另一个程序,把APP-2.Exe一个字节一个字节的读出来,每64K生成一个文件,然后再把这些文件分别写道资源文件的101、102......资源项中,代码也要作相应的修改。

    第四步,为APP-1.Exe编写代码,使其读取资源文件的数据,生成APP-1.Exe。

  代码如下:

  Private Const FILESIZEOFAPP2 = 20480 ´我生成的APP-2.Exe大小是20480Byte
  Private Sub cmdOK_Click() ´单击按钮cmdOK运行代码
    Dim APP2() As Byte ´APP2是个Btye类型和数组
    Dim Counter As Long
    APP2 = LoadResData(101, "CUSTOM") ´将自定义资源中101号资源读入数组
    ´注意,微软的帮助中对加载定义资源的说明有误,硬是资源标识为"CUSTOM"而非数字
    If Dir(App.Path & "\APP-2.Exe") <> "" Then ´第一次按cmdOK有效
      MsgBox App.Path & "\APP-2.Exe 已经存在!"
      Exit Sub
    End If
    Open App.Path & "\APP-2.exe" For Binary As #1 ´以二进制方式写(生成)APP-2.Exe到APP-1.Exe所在的目录
      For Counter = 0 To FILESIZEOFAPP2 - 1 ´注意因为从0 Byte开始因此以文件大小 - 1Byte 为终
        Put #1, , APP2(Counter)
      Next Counter
    Close #1
    Shell App.Path & "\APP-2.Exe", vbNormalFocus ´运行刚生成的APP-2.Exe
    Unload Me
  End Sub

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。