Icon in der Titelleiste ändern
Übersicht

![]() |
pileBetreff: Icon in der Titelleiste ändern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, weiß wer wie man das Icon in der Titelleiste ändern kann?
Wie man das Exe-Icon ändert weiß ich aber ich hab das in der Titelleiste noch nie hinbekommen. Danke. |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
Phlox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
https://www.blitzforum.de/foru...hp?t=14671
Leider fehlt die richtige Userlib. MfG QWERTZ P.S.: Mich würde es auch interessieren... |
||
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
da gibts ne dll für...
frag mich nich wie die heißt, aber hier im forum eingetragen ist sie -edit- ups da war jmd schneller ![]() |
||
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo danke soweit, aber weiß auch jemand wo ich die dll finden kann? Kann man die eventuell irgendwo im netz runterladen? | ||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die DLL ist von BatRat und lag auf meinem Space, der aber jetzt nicht mehr existiert. Ich sagte ihm mehrfach, er solle die DLL woanders hosten, aber er tat es wohl nicht.
Weiter unten im Thread steht ein Code von x-pressive, der eigentlich nichts anderes macht als die DLL machte. Ich würde diesen auf jeden Fall bevorzugen, da er das beilegen einer extra DLL unnötig macht. https://www.blitzforum.de/foru...191#160191 Bitte diesen Post von x-pressive gut durchlesen, damit ihr nichts vergesst ![]() |
||
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, danke habe ich übersehen bzw. als ich gesehen habe das die DLL fehlt hab ich gar nicht erst weitergelesen... ![]() Code: [AUSKLAPPEN] Und dazu noch diese .decls in den Userlib-Ordner, fertig: User32.decls .lib "user32.dll" User32_GetActiveWindow%():"GetActiveWindow" User32_SetClassLong%( hWnd, nIndex, dwNewLong ):"SetClassLongA" Shell32.decls .lib "Shell32.dll" Shell32_LoadIcon%(hWND%,File$,Index%) : "ExtractIconA" Was genau heißt das und wie mach ich das? Sorry kenn mich mit Dll´s und userlibs oder wie das heißt nicht aus. |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
in deinem blitz ordner unter userlibs erzeugst du eine neue datei mit der endung .decls. das was da steht, schreibst du darein ![]() Die datei dient dazu, den Blitz Befehlsraum zu erweitern und neue Befehle zu deklarieren. Das erste ist der neue Blitz Befehl, hinter dem : steht der name der entsprehcenden Funktion in der dll, die unter .lib weiter oben eingetragen wurde |
||
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc |
Michi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
du legst zwei einfache Textdateien (*.txt) im Ordner Blitz3D\Userlibs an und nennst die eine User32.decls und die andere Shell32.decls. Dann füllst du sie mit den jeweiligen Inhalten. Daraufhin werden die entsprechenden Befehle im BB-editor farbig makiert und du kannst sie benutzen wie ganz normale BB-Befehle.
EinizigerNachteil der Sache: Dieser Code ändert leider nicht das Icon in der Titelleiste des Fensters, sondern lediglich das symbol unten in der Taskleiste ![]() ![]() Edit: Mist, war wer schneller |
||
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968 Code: [AUSKLAPPEN] __ <_/__\_> <--- die Wayne-Zeichnung |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dankje für die Erklärungen!
Zitat: Das einzige was man damit sonst machen kann, ist wenn man die -14 bei Setclasslong durch eine -12 ersetzt wird das Symbol als Mauszeiger verwenden Very Happy Um das Symbol in der titelleiste zu ändern muss man Forgesofts Tipp unten verwenden, den ich bereits versucht habe umzusetzen aber nicht erfolgreich... Ich hab ihm ne PM geschrieben, vllt kann ich morgen oder so die lösung hier präsentieren.
Also kann ich das nun doch vergessen? Na dann wart ich mal auf deine Lösung.[/code] |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
bei B+ bei mir auf dem rechner hat die x-pressive methode gewirkt symbol in taskleiste und am fenster waren beide erstezt. | ||
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja also ich hab das jetzt mal probiert. Ob das jetzt nun das Symbol in der Tasktleiste ersezt oder nicht, aber irgendwie bekomm ich das trotzdem nicht hin:
Code: [AUSKLAPPEN] Function SetAppIcon(iconFile$) hwnd = User32_GetActiveWindow() icon = Shell32_LoadIcon(hwnd,iconFile$,0) User32_SetClassLong hwnd,-14,icon End Function Diese Function schreibe ich jetzt irgendwo, vor oder hinter der Hauptschleife. Und wo kommt dann der Befehl Code: [AUSKLAPPEN] SetAppIcon(iconFile$) hin mit dem ich die Funktion ausführe, vor oder in die Hauptschleife?
Und, wo in dieser Function gebe ich an wo sich meine .ico Datei befindet? |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da hast du aber einiges an Mist gebaut ^^
Icon.decls Code: [AUSKLAPPEN] .lib "user32.dll"
User32_SetClassLong%(hWnd%, nIndex%, dwNewLong%) : "SetClassLongA" .lib "Shell32.dll" Shell32_ExtractIcon%(hInst%, lpszExeFileName$, nIconIndex%) : "ExtractIconA" Code: [AUSKLAPPEN] Const GCL_HICON% = -14
If SetAppIcon("MyIcon.ico") Then Print "Success" Else Print "Failed" EndIf WaitKey() End Function SetAppIcon%(iconFile$, iconIndex%=0) Local hInstance%, hWindow%, hIcon% hInstance = Int(SystemProperty("AppHINSTANCE")) hWindow = Int(SystemProperty("AppHWND")) hIcon = Shell32_ExtractIcon(hInstance, iconFile, iconIndex) If Not hIcon Then Return False User32_SetClassLong(hWindow, GCL_HICON, hIcon) Return True End Function Erstens sollte man nicht API Funktionen wie ExtractIcon ganz einfach mal in LoadIcon umbennen(LoadIcon gibt es ja schon in User32), zweitens nie das Window Handle(hWnd) mit GetActiveWindow ermitteln(es gibt nicht umsonst SystemProperty von Blitz) und drittens hätte man auch anhand der *.decls Datei sehen können, dass das Handle der Aplikationsinstanz und nicht das Handle des Fensters gefragt war. Weiterhin müsste man das geladene Icon auch wieder zum Schluss freigeben. Das übernimmt Blitz selbstverständlich nicht. Siehe dazu DestroyIcon in User32. Ansonsten kann man den Spaß natürlich überall im Code aufrufen. Die Instanz oder das Fenster geht ja nicht verloren. mfg olli |
||
vertex.dreamfall.at | GitHub |
Michi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also ich muss mich mal ganz klar selbst lohnen: ich hab das ganze selbst rausgewurschtelt, ohne Kenntnisse von C++ oder anderem:
User32.decls: Code: [AUSKLAPPEN] .lib "user32.dll"
User32_SetClassLong%(hWnd%, nIndex%, dwNewLong%) : "SetClassLongA" User32_SendMessage%(Hwnd, wMsg, wParam, lParam) : "SendMessageA" Shell32.decls: Code: [AUSKLAPPEN] .lib "Shell32.dll"
Shell32_ExtractIcon%(hInst%, lpszExeFileName$, nIconIndex%) : "ExtractIconA" Code: [AUSKLAPPEN] SetAppIcon ("MyIcon.ico")
WaitKey() End Function SetAppIcon(iconFile$) hwnd = Int(SystemProperty("AppHWND")) icon = Shell32_ExtractIcon(hwnd,iconFile$,0) User32_SendMessage(hwnd, $80, 0, icon) End Function Das wars. ![]() (Geldspenden und anderweitige Zuwendungen sind immer willkommen ![]() |
||
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968 Code: [AUSKLAPPEN] __ <_/__\_> <--- die Wayne-Zeichnung |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und immernoch ist es hInst und nicht hWnd ![]() |
||
vertex.dreamfall.at | GitHub |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Vertex: Wieso habe ich Mist gebaut? Ich habe den Code von jemand anderen kopiert. Ich verstehe kein Wort davon was das alles bedeuten soll. Ich nehme einfach den Code und hoffe das es irgendwie funktioniert.
Außerdem: Nachdem ich es so gemacht habe wie du geschrieben hast (bzw. deinen Code kopiert ![]() @Michi: auch danke für deine Hilfe, aber dadurch wird bei mir trotzdem das Icon nicht ersezt ![]() |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
Michi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm, also du musst da was falsch machen, bei mir gehts wunderbar.
Beweis: http://scifi.pages.at/gece-emes/Beweis.jpg Also das icon (Datei mit "ico"-endung) kannst du irgendwo speichern - du musst dann halt nur den richtigen Pfad angeben. (als einziger Parameter bei SetAppIcon()). Vertex zuliebe kannst du auch noch die variable hWnd ind hInst umbenennen - der form halber ![]() *.decls Dateien in den Bltz3D\Userlibs ordner Der andere Code in den BB-Editor. Mehr ist eigentlich nicht dabei. |
||
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968 Code: [AUSKLAPPEN] __ <_/__\_> <--- die Wayne-Zeichnung |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich will ja nicht darauf herumhacken, aber nicht einfach nur umbennen sondern wirklich mit AppHINSTANCE auch arbeiten. Die Instanz des Programms ist nunmal was völlig anderes, als das Fensterhandle. Das sind dann solche Fehler, wo man sich wundert, warum es auf anderen Systemen nicht läuft, Memoryleaks entstehen usw.
mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es will einfach nicht klappen:
http://creatorx.cr.funpic.de/Bilder/screen.jpg An was kann es noch liegen? |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Spreche ich gegen Wände ![]() Code: [AUSKLAPPEN] Const GCL_HICON% = -14
Global Window%, Instance%, Icon% Instance = Int(SystemProperty("AppHINSTANCE")) Window = Int(SystemProperty("AppHWND")) Icon = Shell32_ExtractIcon(Instance, "icon.ico", 0) If Not Icon Then Print("Failed to load Icon") WaitKey() End EndIf User32_SetClassLong(Window, GCL_HICON, Icon) Print("Success") WaitKey() User32_DestroyIcon(Icon) End() Icon.decls Code: [AUSKLAPPEN] .lib "user32.dll"
User32_SetClassLong%(hWnd%, nIndex%, dwNewLong%) : "SetClassLongA" User32_DestroyIcon%(hIcon%) : "DestroyIcon" .lib "Shell32.dll" Shell32_ExtractIcon%(hInst%, lpszExeFileName$, nIconIndex%) : "ExtractIconA" So, und nur so, wird es gemacht. Alles andere steht auf wackeligen Beinen, dass es funktioniert. |
||
vertex.dreamfall.at | GitHub |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist ja schön das es so bei dir funktioniert, aber ich habe ja schon weiter oben geschrieben, dass wenn ich die Icon.decls im Userlibs-Ordner habe, Blitz3D nicht compiliert. Nur wenn ich User32.decls wieder aus dem userlibs-Ordner entferne compiliert Blitz. Also entweder Shell32.decls und User32.decls ODER Shell32.decls und Icon.decls. Und wenn ich nur Icon.decls und Shell32.decls drin habe und compiliere dann öfnet sich das Fenster und es steht auch "Success" da aber das Icon wurde immernoch nicht geändert, siehe hier:
http://creatorx.cr.funpic.de/Bilder/screen2.jpg Sorry wenn ich dich zur Weißglut treibe, aber wenn ihr schon den Code vorgebt und ich ihn einfach nur einkopiere und es dann trotzdem nicht funktioniert, kann wohl niemand etwas dafür. |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group