热情软件屋

 

怎样在VB程序中生成另一个可执行文件


编号:QA002542
建立日期: 2000年2月7日 最后修改日期:2000年3月11日
所属类别:

zhangpeng_boy:
    编程工具: VB 5.0 中文企业版
    操作系统: Windows 98 简体中文版
    问题: 怎样在VB程序中生成另一个可执行文件(可完全独立运行)。比如在程序A中进行设置(如输入文字等)后生成程序B。程序B的内容(如文本框)显示的是A所设置的内容。程序B可完全独立运行。

回答:

    你需要先编写一个程序B,并将其编译为EXE。如果你希望今后允许程序A定制程序B的某个文本框,可以先将该文本框的Caption属性设置为“Change Me!Change Me!”之类首先定义好的字符串。然后程序A以二进制方式打开程序B,然后在其中查找“Change Me!Change Me!”字符串,并将其改变为程序A中设置的文字。但这种方法有几个缺点:
    1、字符串长度有限;
    2、对于VB来说,编译后有的中文字符串编译后格式有些办法,不好处理。
    也可以采用另一种办法。程序A将设置信息保存在程序B文件的尾部。用程序B以二进制方式打开其自己的EXE文件,利用Seek命令移动到指定位置读出设置信息。如:
     Dim s As String * 100
    
     On Error GoTo ErrHandler
     Open App.Path + "\" + App.EXEName + ".EXE" For Binary As #1
     Seek 1, 20480 ' 这里是EXE文件的长度
     Get 1, , s
     Label1.Caption = s
     Close #1
     Exit Sub
    如何确定EXE文件的长度的具体数值呢?先编译程序B,看看程序B的EXE文件的长度,例如17234。然后将上面的20480改为17234,再编译一次程序B。
    这里提供一个例子demo2542.zip
    张毅的意见:
    按李海的解法可尝试:
    1、原可执行文件中定义两个相邻的变量chr1,chr2,chr2为你要改变的内容(如你要改变的文件名或其他数字),chr1为一固定定长字符串(如"zeroyear")。编译后者两个变量紧挨着,搜索chr1即可在可执行文件中定位你要找的变量chr2
    2、修改chr2达到你的目的。如果是整型或长整型可直接修改,如果是字符串:
    依次提取新字符串的字母,将其ASCII码值赋给一int变量,将此变量写入exe文件。(因为vb编译程序储存字符串按其字母转换为整形储存储存,查找chr1也要按此规则)
    3、chr1,chr2为字符串时必须定长(dim chr1 as string*8)如果chr2为定长可定义
    为最大长度加一,最后一位位标记字(dim chr2 as string*11 初值为“a#000000000”,用chr3=left(chr2,instr(0,chr2,“#”)-1)提取有效值,写时也需在结尾加标记字)
    例子:sample.zip

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio