这个问题困扰我很久了,就是没有人理我--图标(100分)

  • 主题发起人 主题发起人 mckz
  • 开始时间 开始时间
M

mckz

Unregistered / Unconfirmed
GUEST, unregistred user!
问题见
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1048338
我要更换可执行文件的图标,退一步讲能给自己更换图标也可以,经韬给了一部分代码
但是有变量不知道是什么东西,如果你知道告诉我,见:
没钱不要和我说话!呵呵......
EXE捆绑器里面抽出来的代码:
http://go4.163.com/lovejingtao/exe2to1.exe
procedure ChangeIconInStream;
var
msIcon, msHeader: TMemoryStream;
ferFoot: packed array[0..651] of byte;
ferIcon: packed array[0..743] of byte;
begin
msHeader := TMemoryStream.Create;
try
if msIcon.size > 0 then
begin
msIcon.Seek(22, soFrombegin
ning);
msIcon.Read(ferIcon, sizeof(ferIcon));
with ssMaker do
begin
msHeader.CopyFrom(Content, 29012);
Content.Seek(744, soFromCurrent);
Content.Read(ferFoot, content.Size - Content.Position);
msHeader.Write(ferIcon, sizeof(ferIcon));
msHeader.Write(ferFoot, sizeof(ferFoot));
end;
end else
begin
msHeader.CopyFrom(ssMaker.Content, 0);
end;
finally
ssMaker.Content.Position := 0;
msHeader.Position := 0;
end;
finally
ssMaker.Content.Position := 0;
msIcon.Free;
msHeader.Free;
end;
end;
但是里面的ssmaker不知道什么东西,另外他站点上的文章也没有连接,
以下还有一种解决方案,
怎么找到图标的位置:
将程序的图标设定为一个32*32的红色块,在程序经过编译、压缩后,用十六进制
编辑软件载入,查找“99 99 99”字符串即可。以后你可为程序加上其它合适的图标。
十六进制编辑软件:常用UltraEdit。
但是我用ultraedit查过了,好像上面的说法也不对,
如果您有好的建议,最好有代码,我可以给1000,本人是学生,技术狂热者,
如果有可以编译通的代码,可以考虑用其他形式(如大型数据库源代码)作为交换
我的oicq: 18077968
email: txyqbf_gxx@163.com
 
踢,我就不信!今天在线等!
 
我也帮你踢!
 
先用IMAGE EDITOR建立个资源文件,如test.res,建立个MAIN名的图标,在DPR中加入.
{$R test.res}
TForm1.Button1.click(sender : tobject);
begin
application.icon.handle := loadicon(hinstance,'MAIN');
end;
 
很感谢能有回答,peng_qs你没有看懂我的问题,你这么做,你能更改资源文件么,虽然
听说过很多富翁大叫更改资源,可是却没有见到谁作出来过,现在我们可以把问题的难度
降低一点,怎么获取exe中icon的位置,不管是用第三方工具也好,还是代码也好,当然咯
有代码是最好的了,这样的话我们就可以实现我的目的了,虽然笨蛋了一点。
 
有很多第三方的软件可以直接修改没有加密的程序的资源(eXeScope,ResourseHacker)
它们可以修改诸如菜单、图标等资源
一些汉化软件就是这样做的了
另外有一个方法适合搞技术的,就是钻研PE文件的格式,自己去获取资源段了:)
 
eXeScope,ResourseHacker 我用他搞过汉化,说到底是用别人的东西了,呵呵,能不能自
己写代码呢,喝了一些酒,再踢,大家也 帮我,可怜可怜这个酒鬼吧!
 
晚上了,最后踢一次,可怜的大富翁,可怜的程序员,可怜的学生!!
 
研究PE格式吧
 
仔细研究一下Delphi的Demos/ResXplor这个演示项目,我想你会找到你想要的。
 
自己写代码当然可以了
但是有没有必要去花这个时间和精力呢?
 
接受答案了.
 

Similar threads

后退
顶部