干吗要编两个,一个不就可以了吗
自己改动自己的ini文件啊

解决方案 »

  1.   

    呵呵!!!这样当然是行的,,
    但我需要的是新的思路和方法,我想要真正建立新的EXE
      

  2.   

    我曾经用过一个类似电子贺卡,作者就是将EXE事先编好,然后将其改名(文件属性也改).用时在复制一个,我觉得这种方法挺好,如有新法请转告.
      

  3.   

    将修改的信息追加到EXE文件的后面,做成一个文件就可以了(如同病毒加载到EXE后面一样的方法)
    (注:在DOS下曾经这样做个,在windows中应该也可以)
      

  4.   

    1.你要对可执行文件的格式很熟悉,win32下是PE格式,具体的可以参考msdn
    2.要有对可执行文件进行直接修改的能力,我没用过vb,不知道它能不能做到yoursoft(梦郎):
    windows下也是这样做,但有很多额外的问题要处理。PE格式虽然没有NE格式那么复杂,但
    比dos下的MZ要繁多了
      

  5.   

    自己做一个文件头和生成器
    然后生成器产生各种媒体文件使用类似dos中的copy /b的方法把媒体文件添加到文件头后面去。
    文件头工作的时候就读取自身,把数据文件分离放到temp目录下面然后开始播放。
    用资源文件应该更为方便,但是我不懂得如何修改EXE文件中的资源。
      

  6.   

    思路:
    预先做好一个EXE(相当于播放器),把要更改的内容(如图片、音乐等)添加到EXE后。需要播放时,EXE以只读方式打开自己,读取EXE原来长度之后的内容,把这些内容写为另N个文件(可存放到Windows的临时文件夹),这N个文件即为需播放的图片、音乐等,此时EXE就可直接调用这些内容。
      

  7.   

    预先作一个贺卡exe文件(最好用VC,Delphi,应为VB运行库实在太大了,难道你会发一个2M的贺卡给朋友么?),贺卡至作程序只需修改其资源即可,这用API是可以做到的'**********************************
    '**  Function Declarations: #if WIN32 Then
    Private Declare Function BeginUpdateResource& Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long)
    Private Declare Function EndUpdateResource& Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long)
    Private Declare Function SizeofResource& Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long)
    Private Declare Function UpdateResource& Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long)
    #endif 'WIN32
      

  8.   

    你可以去看看这篇文章,可能会有所帮助。
    http://go1.163.com/~blademan/vb/file/other/vb_file_other_001.htm
      

  9.   

      这篇文章要讨论的是在一个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
    *********************************************8
    这是blademan(不累得慢)推荐的文章
    谢谢!!
    看过之后有几个问题,
    1、他所指的资源文件是.rc文件吗???(好象不是),还有如何添加呢??
    2、这个程序整体思路的原理是??
    3、程序中的一些地方不太明白******************************
    我总结一下大家说的方法
    1、将修改的信息追加到EXE文件的后面,做成一个文件就可以了????要更改一些界面的属性,一些相应的过程,由用户自定义程序,好象即使对可执行文件的格式很熟悉,也难!!!
    2、自己做一个文件头和生成器,然后生成器产生各种媒体文件使用类似dos中的copy /b的方法把媒体文件添加到文件头后面去。文件头工作的时候就读取自身,把数据文件分离放到temp目录下面然后开始播放。(((((可怎么做呢???
    3、用资源文件让我这个不懂的家伙看来,好象是最棒的。
    可上面的文件不是很清楚,还有jifeng(疾风)你能不能把那几个更改资源的函数详细说说
    *************************
    还有谢谢各位大侠的参与,真的,很感谢!!我在分数方面是忘不了大家的  
      

  10.   

    哦!!!!
    我上面所举的贺卡的仅仅是一个例子,,,
    我是想设计一个程序,让用户自行设计报表输入界面,并建立新的EXE文件
    我使用对INI文件的写入和读取,实现了一些,呵呵!!我将INI文件改名后,骗他们是生成的工程文件,然后由主程序解释执行,,,但我很想知道真正修改EXE文件的方法!!!
      

  11.   

    最根本的方法是了解exe文件的格式然后照样子写一个,可是太难了!如果要实现你说的功能,用ini文件作为控制文件准可以实现!
      

  12.   

    以下是iProgram在文档中心发的贴子,对你有帮助吗?
    从程序中生成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
      

  13.   

    public const picturefilename="filename.pic"
    public const musicfilename="filename.mus"然后其他如上,在写新文件时find这两个串,改成新文件名
      

  14.   

    先做个EXE文件,做为资源链入贺卡程序
      

  15.   

    要动态生成exe不容易呀! 如果你对pe有研究那还算另一回事,没有的话...还是算了吧。
      

  16.   

    那怎么把音乐文件编译到EXE文件中???