如何修改EXE文件的标题??
比如DELPHI一个FORM的CAPTION,就是编译后的标题.
对于一个己经编译后的EXE文件,如何修改它的标题?
(不局限于DELPHI编译后的EXE文件).
请教各位高手.......
在线等待解答.........

解决方案 »

  1.   

    不知道这个适不适合:
    wnd:hwnd;
    wnd:=findwindow(nil,应用程序的标题);
    if wnd<>null then setwindowtext(你想重命名的标题);
      

  2.   

    TO:heixiu1980(迷茫ing):你没明白我的意思.
    TO:ahpei(老人家) :对于一个我不知道是何语言写成的软件,我如何反汇编?
    TO:pingshx() :wnd:=findwindow(nil,应用程序的标题);这里的应用程序的标题是什么意思呢?能不能再说详细一点??
    谢谢三位.....
      

  3.   

    楼上的可以,我用SetWindowText改过计算器的caption
      

  4.   

    不知道是何语言写的和反汇编有什么关系?当然可以反了!
    题外话了,SetWindowsText可以实现。
      

  5.   

    hwnd:=findwindow(类名,标题);
    setwindowtext(hwnd,新标题);
      

  6.   

    TO:yansea(思宏):直接改就可以了吗?
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      h:THandle;
    begin
      h:=findWindow('WordPadClass',nil);   //找到“写字板”窗口
      setWindowText(h,'goomoo');    //将其标题改为 goomooend;
      

  8.   

    用ultraedit,或者winhex打开,找到相关的字符,替换了即可实现永久更改,经常干这事,如果不行我给你改
      

  9.   

    setwindowtext  是个合适的办法!
     ffwin()  现在讨论的是用什么方法去实现改变标题,而不是只达到目的!
      

  10.   

    嗯,谢谢各位,用SETWINDOWTEXT可以改过来.
    如果用DELPHI有没有办法实现永久更改呢?TO:ffwin() :你用的这两个工具都可以改吗?怎么样找到相关的字符?
      

  11.   

    如果EXE文件的标题是在设计时直接指定的,那就好办用十六进制编辑器,直接改EXE文件,
    如果是在某处运行了象 Self.Caption := 'XXX' + Filename;之类的东西就需要跟踪程序了。
      

  12.   

    这两个工具都可以更改,你也可以先用Cpy C++搞到它的Caption,或者在16进制中查找相对应的16进制代码,主要是看它是ASCII还是BIG5码,然后改了就可以,这种方法常用来作汉化或者解密.
      

  13.   

    它是ASCII还是BIG5码还是unicode码
      

  14.   

    TO:kiboisme(还是铁棒.....针) 
    第一种情况:解决办法是不是也和ffwin() 的一样?
    第二种情况:该如何解决呢?TO:ffwin() 先使用SPY C++找到CAPTION,然后再用你说的那两个工具找到对应的16进制代码进行修改,是吗?
      

  15.   

    是的,跟踪可以用trw2000,很好用的,天底下没有解不了的密
      

  16.   

    TO:ffwin() :能教我吗?
    一,用SPY C++找到的哪一个才是CAPTION?
    二,ASCII和UNICODE有什么区别?我怎么区分呢?
    三,用WHEX修改,找到地址,然后修改内容吗?谢谢啦~~~~~~~
      

  17.   

    哈呵呵,你这是干嘛?
    装一个 resource wrokshop 在 bcb 6 的盘上有带打开这个 exe ,所以有窗体都是资源呵,找出来改了就永久了
      

  18.   

    你也可以不用那个Spy,可以直接找看到的字符,主要原因是有时候,Caption中有不显示的字符,如果找其中几个,然后用ultraedit中的查找16进制,先看有几处,确定是哪一处,ultraedit支持unicode,unicode是双字节码,比如'a'在ACSII中为  61(97),在unicode中为00 61,如果你可以在ultraedit的右边显示部分直接看到--比如左边为显示的16进制,在右边的字符显示栏中就对应有a,
    如果左边是汉字的16进制,右边就能直接看到汉字,那么在这种情况下,这些字符都是ASCII.
    一般来说,nt系统下的程序多为unicode码,VB的程序全是unicode.它们两个有一个转换关系,我手头暂时没有.
    二.用winhex 或者ultraedit找到相对应的字符,确定后就可以修改了.
      

  19.   

    比如说:计算器.
    我只要在ultraedit中输入"计算器"就可以吗?
      

  20.   

    //更换成功,以下是源代码:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      ss1,ss2:TSTringStream;
      fs:TFilestream;
      ms:TmemoryStream;
      i:integer;
    begin
      ms:=TmemoryStream.Create;
      ss1:=TstringStream.Create('http://www.goomoo.net'); //已知标题为'http://www.goomoo.net'
      ss2:=TStringStream.Create('');
      fs:=TFileStream.Create('project1.exe',fmopenread or fmsharedenynone);  //打开文件project1.exe
      fs.Seek(0,soFromBeginning);
      ss2.Position:=0;
      ss2.CopyFrom(fs,0);
      i:=pos(ss1.DataString,ss2.DataString);
      if i>0 then
      begin
        fs.Position:=0;
        ms.CopyFrom(fs,0);
        ms.Position:=i-1;
        ms.WriteBuffer(#65#65#65#65#65#65#65#65#65#65#65#65,12);  //将标题换为 'AAAAAAAAAAAA'
      end;
      ms.SaveToFile('c:\hello.exe');
    end;end.
    //时间仓促,没有优化。
      

  21.   

    更换后的文件存在 c:\hello.exe,源文件的标题为 http://www.goomoo.net可以用Delphi做一个试验文件,文件名为 project1.exe 当然也可自行更改。
      

  22.   

    可以是可以,但win98的计算器是unicode码需要查找16进制 a1 8b 97 7b 68 56 (计算器的unicode码)
      

  23.   

    TO:goomoo(古木):牛,真牛.我这就来试一下,虽然有些地方不明白,不过我可以自己看了.TO:ahpei(老人家):反汇编用的是什么工具??能具体点吗?
      

  24.   

    TO:ffwin():我明白了,我要先写一个UNICODE码的转换器,然后就可以了,是吗?
      

  25.   

    TO:goomoo(古木):我试了一下,
    一,无法更改文件标题(我新建了一个PROJECT.EXE,标题是FORM)
    二,更改后的文件无法使用.(用计算器试过后,提示"不是有效的WIN32程序").
      

  26.   

    TO:ffwin():哈,我知道了,这就来改一个试一下!!谢啦~~~~~~~~
      

  27.   

    你不能更改标题为 Form 的文件,因为可执行文件中 'Form' 字符串太多,请先将测试程序的标题改为非 关键词, 比如: 'Macromedia Flash' , 'Notepad',等,反正不是 'Form,Edit,ScrollBar' 等就行。以上程序我已调试通过!
      

  28.   

    你那个 exe 是不是 delphi 写的?
    看这个例子 demos\ResXplor 这个是读exe, res 的例子