EXE dosyasının iconunu değiştirmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- hboraabaci
- Üye
- Mesajlar: 11
- Kayıt: 31 Ara 2004 01:27
EXE dosyasının iconunu değiştirmek
Derlenmiş her işi tastamam bitmiş bir programdan bahsediyorum
iconu nasıl değiştirilir..
iconu nasıl değiştirilir..
Geleceği Görmek Demek Ecelini Görmek Demektir Ölülerde Konuşur.
Merhaba,
exe dosyanın üzerine gelip sağ tuş a tıklarsınız. Özelliklerden simge değiştiri seçersiniz.
Ama derlemeden olursa Project /Options tan Application tabına geçip Load Icon butonuna basabilirsiniz.
İyi çalışmalar.
____________________
ofenX
exe dosyanın üzerine gelip sağ tuş a tıklarsınız. Özelliklerden simge değiştiri seçersiniz.
Ama derlemeden olursa Project /Options tan Application tabına geçip Load Icon butonuna basabilirsiniz.
İyi çalışmalar.
____________________
ofenX
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
- hboraabaci
- Üye
- Mesajlar: 11
- Kayıt: 31 Ara 2004 01:27
Kod ile ama
lütfen resource hacker lardan falan bahsetmeyin
Delphi yada C++ da örnek verebilcek varsa çok hoş olur...
Delphi yada C++ da örnek verebilcek varsa çok hoş olur...
Geleceği Görmek Demek Ecelini Görmek Demektir Ölülerde Konuşur.
- hboraabaci
- Üye
- Mesajlar: 11
- Kayıt: 31 Ara 2004 01:27
- hboraabaci
- Üye
- Mesajlar: 11
- Kayıt: 31 Ara 2004 01:27
selam kardeş derlenmiş ve her şey tastamam olan bir projeye delphi ile kodla nasıl müdahale edeceksin onu anlamadım.İşin gerçeği.Ama normal yoldan değişitiriliyo zaten.Artı icon bence de o ha değiştirilmiş ha değiştirilmemiş bence o kadar da elzem olmasa gerek.tabiiki yinede karar sizin.Kolay gelsin
Merhaba...
- Exe içindeki ICON'un offsetini bulduğun taktirde, aynı boyutttaki başka bir icon ile değiştime şansın var.
- Bunun için senin de onaylayacağın gibi EXE'nin çalışıyor olmaması gerekiyor...
- AssignFile, FileMode, Seek, BlockRead, BlockWrite, CloseFile komut dizisini barındıran direkt yazma olduğu gibi FileStream ile bu işlemi gerçekleştirebilirsin. Forumda binary erişim hakkında konular geçmişti. Yukardaki kelimeler senin için arama anahtarı olacaktır.
- Exe içindeki bir icon'u nasıl arayacağını merak ediyorsan; ShellApi unitini ekledikten sonra kullanabileceğin ExtractIcon ile bir EXE'den ionu çekebiliyor ve de fiziksel olarak dosya halinde kaydedebiliyorsun.
- Bu noktada çektiğin icon byte/byte birebir aynı olur mu olmaz mı emin değilim, deneyimim olmadı ama başlangıcından en azından belli bir kısmının aynı olacağını değerlendiriyorum. EXE dosya içindeki yerine dair Icon başlangıç offset numarası ve icon uzunluğu için bu noktadan çıkılabileceğini sanıyorum.
- Sonucu buradan bildirmen herkes için faydalı olacaktır.
- Exe içindeki ICON'un offsetini bulduğun taktirde, aynı boyutttaki başka bir icon ile değiştime şansın var.
- Bunun için senin de onaylayacağın gibi EXE'nin çalışıyor olmaması gerekiyor...
- AssignFile, FileMode, Seek, BlockRead, BlockWrite, CloseFile komut dizisini barındıran direkt yazma olduğu gibi FileStream ile bu işlemi gerçekleştirebilirsin. Forumda binary erişim hakkında konular geçmişti. Yukardaki kelimeler senin için arama anahtarı olacaktır.
- Exe içindeki bir icon'u nasıl arayacağını merak ediyorsan; ShellApi unitini ekledikten sonra kullanabileceğin ExtractIcon ile bir EXE'den ionu çekebiliyor ve de fiziksel olarak dosya halinde kaydedebiliyorsun.
- Bu noktada çektiğin icon byte/byte birebir aynı olur mu olmaz mı emin değilim, deneyimim olmadı ama başlangıcından en azından belli bir kısmının aynı olacağını değerlendiriyorum. EXE dosya içindeki yerine dair Icon başlangıç offset numarası ve icon uzunluğu için bu noktadan çıkılabileceğini sanıyorum.
- Sonucu buradan bildirmen herkes için faydalı olacaktır.

- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
BeginUpdateResourceW
UpdateResourceW
EndUpdateResourceW
http://www.experts-exchange.com/Program ... 98186.html
http://forums.about.com/ab-delphi/mesag ... msg=3405.1
http://help.madshi.net/madResUnit.htm
yok bunlar yetmez ben illa hazır bi program isterim dersen
http://www.planet-source-code.com/vb/sc ... 8&lngWId=7
UpdateResourceW
EndUpdateResourceW
http://www.experts-exchange.com/Program ... 98186.html
http://forums.about.com/ab-delphi/mesag ... msg=3405.1
http://help.madshi.net/madResUnit.htm
yok bunlar yetmez ben illa hazır bi program isterim dersen
http://www.planet-source-code.com/vb/sc ... 8&lngWId=7
- @sadettinpolat güzel bir ipucu vermiş. Teşekkürler.
- Sadece NT tabanlı sistemlerde çalıştığını okudum. Bunu hafızanızın bir kenarına not ediniz.
- Kod olarak da bir örnek buldum...
- Başarılar...
- Sadece NT tabanlı sistemlerde çalıştığını okudum. Bunu hafızanızın bir kenarına not ediniz.
- Kod olarak da bir örnek buldum...
Kod: Tümünü seç
type
PICONDIRENTRYCOMMON = ^ICONDIRENTRYCOMMON;
ICONDIRENTRYCOMMON = packed record
bWidth : Byte; // Width, in pixels, of the image
bHeight : Byte; // Height, in pixels, of the image
bColorCount : Byte; // Number of colors in image (0 if >=8bpp)
bReserved : Byte; // Reserved ( must be 0)
wPlanes : Word; // Color Planes
wBitCount : Word; // Bits per pixel
dwBytesInRes : DWord; // How many bytes in this resource?
end;
PICONDIRENTRY = ^ICONDIRENTRY;
ICONDIRENTRY = packed record
common : ICONDIRENTRYCOMMON;
dwImageOffset : DWord; // Where in the file is this image?
end;
PICONDIR = ^ICONDIR;
ICONDIR = packed record
idReserved : Word; // Reserved (must be 0)
idType : Word; // Resource Type (1 for icons)
idCount : Word; // How many images?
idEntries : ICONDIRENTRY; // An entry for each image (idCount of 'em)
end;
PGRPICONDIRENTRY = ^GRPICONDIRENTRY;
GRPICONDIRENTRY = packed record
common : ICONDIRENTRYCOMMON;
nID : Word; // the ID
end;
PGRPICONDIR = ^GRPICONDIR;
GRPICONDIR = packed record
idReserved : Word; // Reserved (must be 0)
idType : Word; // Resource type (1 for icons)
idCount : Word; // How many images?
idEntries : GRPICONDIRENTRY; // The entries for each image
end;
Kod: Tümünü seç
function UpdateApplicationIcon(srcicon : PChar; destexe : PChar) : Boolean;
var hFile : Integer;
id : ICONDIR;
pid : PICONDIR;
pgid : PGRPICONDIR;
uRead : DWord;
nSize : DWord;
pvFile : PByte;
hInst : LongInt;
begin
result := False;
hFile := CreateFile(srcicon, GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hFile > 0 then
begin
ReadFile(hFile, id, sizeof(id), uRead, nil);
SetFilePointer(hFile, 0, nil, FILE_BEGIN);
GetMem(pid, sizeof(ICONDIR) + sizeof(ICONDIRENTRY));
GetMem(pgid, sizeof(GRPICONDIR) + sizeof(GRPICONDIRENTRY));
ReadFile(hFile, pid^, sizeof(ICONDIR) + sizeof(ICONDIRENTRY), uRead, nil);
move(pid^, pgid^, sizeof(GRPICONDIR));
pgid^.idEntries.common := pid^.idEntries.common;
pgid^.idEntries.nID := 1;
nSize := pid^.idEntries.common.dwBytesInRes;
GetMem(pvFile, nSize);
SetFilePointer(hFile, pid^.idEntries.dwImageOffset, nil, FILE_BEGIN);
ReadFile(hFile, pvFile^, nSize, uRead, nil);
CloseHandle(hFile);
hInst:=BeginUpdateResource(destexe, False);
if hInst > 0 then
begin
UpdateResource(hInst, RT_ICON, MAKEINTRESOURCE(1), LANG_NEUTRAL, pvFile, nSize);
EndUpdateResource(hInst, False);
result := True;
end;
FreeMem(pvFile);
FreeMem(pgid);
FreeMem(pid);
end;
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
Var
IcoDosya,
ExeDosya : PChar;
begin
IcoDosya := 'c:\XLogo.ico';
ExeDosya := 'c:\deneme.exe';
UpdateApplicationIcon(IcoDosya, ExeDosya);
end;
- hboraabaci
- Üye
- Mesajlar: 11
- Kayıt: 31 Ara 2004 01:27
- MercilessTurk
- Üye
- Mesajlar: 94
- Kayıt: 28 Eki 2005 10:14