Deutsch
Forum

XProfans interne Icons

 

H.Brill
Hallo,
Ab XProfan X2 wurden ja manche der internen, eingebauten Icons (21 Stück) geändert. Da gefielen mir die Icons von Profan-Version 11.2a eigentlich besser.
Der Drucker sieht z.b. besser aus, der Sand ist gelber, das Gesicht ist anders
u.v.m
Nun möchte ich nicht jedes einzelne Icon rauspicken. Die gibt es ja in der
Icon Group und als RT_Icon. Mit dem ResHacker gelingt es mir nicht, diese
Gruppen als Gesamtes zu extrahieren und zu speichern.

XProfan in der Version X4 bietet ja einige Ressourcen-Funktionen an. Wäre es
damit möglich, die Icons von der Version X4 gegen die Icons der Version 11.2a
in einem Rutsch zu tauschen ? Oder zweimal : einmal mit ResType 3 und
dann mit ResType 14 ?
Declare String INamen, update
Declare Long restype, result
update = "C:\Sprachen\XProfanX4\Change\Leer32.dll"
restype = 3' Icon-Group = 14
Window 600, 400
Inamen = "A,MUELL,BAUM,MUENZE,COMPUTER,PROFAN,DOS,SAND,DRUCKER,STEIN,EDITOR,TEXT,EIMER,WASSER,EIS,WEG,FILEICON,WINDOWS,GESICHT,KNOPF1,KNOPF2"

WhileLoop 1, 21

    result = Res("Load", update, restype, SubStr$(INamen, &LOOP, ","), "C:\Sprachen\XProfan11\Profan.exe")
    Print "Ergebnis : ", &LOOP, ":", If(result = 1, "OK !", "Fail !")

EndWhile

Print "Fertig..."
WaitEnd

So geht es mal jedenfalls nicht. Die Gruppen sind zwar vorhanden, aber die Icons werden nicht im ResHacker angezeigt. Hat da jemand eine Idee, das zu verwirklichen ?
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
23.03.2026  
 




Georg
Teles
Guten Morgen,

H.Brill (23.03.2026)
XProfan in der Version X4 bietet ja einige Ressourcen-Funktionen an. Wäre es damit möglich, die Icons von der Version X4 gegen die Icons der Version 11.2a in einem Rutsch zu tauschen ? Oder zweimal : einmal mit ResType 3 und dann mit ResType 14 ?


das ginge, wie du erkannt hast, müsstest du die Icons (ResType 3) und Icon Group (ResType 14) als eigene Ressourcen behandeln - der Tipp hier kam auch von dir ;)  [...] 

Aber mit ResHacker dürfte es sehr wohl am einfachsten gehen. Habe es gerade getestet (beim Export von Icon Group allein bekomme ich allerdings eine Fehlermeldung hmm)

Wenn du alle Ressourcen aus der EXE exportierst, wo die bevorzugten Icons sind und dann in die neue EXE importierst (nur die Icon Group auswählst), dürfte es klappen - habs bei EXE und DLL ausprobiert:

EXE mit bevorzugten Icons laden und alle Ressources als RES exportieren:



Deine EXE öffnen und die RES Datei einlesen (hier habe ich leer32.dll genommen, mit EXE klappts aber auch, habe es auch getestet):



Beim Einlesen nur Icon Group auswählen:



Voila:



Deine EXE, in die du die Icons einfügen willst, dürfte eventuell keine Icons haben, zumindest nicht, die gleich heißen weil Kollision.

Im Vorfeld die Icon Group aus der EXE mal löschen und die EXE zwischenspeichern/neu öffnen und danach die RES einlesen/Icons importieren.

Grüße
Georg
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

23.03.2026  
 




H.Brill

Deine EXE, in die du die Icons einfügen willst, dürfte eventuell keine Icons haben, zumindest nicht, die gleich heißen weil Kollision.

Im Vorfeld die Icon Group aus der EXE mal löschen und die EXE zwischenspeichern/neu öffnen und danach die RES einlesen/Icons importieren.

Grüße
Georg


Ja, genau darum ging es ja auch. Ich will ja die Profan.exe und Prfrun32.exe
(X4) und die älteren Icons aus Version 11.2a haben. Also muß ich dann halt
die Icon Group vorher löschen, .exe speichern und neu impotieren.

Danke für den Vorschlag.

Ich dachte halt, mit
res("Load", D1, T, S, D2)
hätte ich es leichter.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
23.03.2026  
 




H.Brill
Erfolg. Ich hatte den ResHacker Version 3.6. Der konnte kein .res Dateien
speichern. Mit der Version 5.2 geht es jetzt aber. Vorgehensweise ist, wie
du oben schon erwähnt hast. Vor dem Importieren muß man tatsächlich
die Icon Group erst löschen und dann speichern. Dann kann man sie
importieren.

Der Interpreter funktioniert schon mal. Bei der Runtime wird es wohl ähnlich sein.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
23.03.2026  
 




Georg
Teles
Irgendwie struggle ich ziemlich mit dem Load Befehl - er scheint nicht ausgereift zu sein oder wir benutzen diesen falsch hehehe, habe nicht fuktionierende Variante mit LOAD beigefügt ...

Der Change Befehl für Icons und Icon Group funktioniert übringens wunderbar, wenn diese ersetzt werden.

Aber auch wenn man Zieldatei ohne Icons und Icon Group angibt, fügt CHANGE Befehl diese einfach hinzu (Sprache beachten!) so ist es auch in der Hilfe beschrieben, wenn die Sprache beachtet werden soll

Grüße
Georg

251 kB
Hochgeladen:23.03.2026
Ladeanzahl4
Herunterladen
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

23.03.2026  
 




H.Brill
Was Res("Load",...) anbetrifft, ist das eher im Zusammenhang mit Res("Save",...)
zu sehen. So, wie ich es aus der Hilfe ersehen kann, kann man zuerst mit
Res("save",...) binäre Abbilder einzelner Ressourcen als Dateien speichern und
diese später mit Res("Load",...) wieder einlesen und als Ressource in der .exe
oder .dll speichern.
Also müßte man in meinem Falle erst alle Icons von Profan.exe (Version 11.2a)
mit Res("save",...) als binäres Abbild in einen Ordner speichern und dann mit Res("Load",...) in die andere Profan.exe bzw.Prfrun32.exe(X4) wieder einfügen.

Was die Sprache (1031) betrifft : Vielleicht kann da der Befehl AdRes H1, T
nützlich sein. In der Listboxliste (3.Spalte) steht sie ja. Da bräuchtest du nicht
mehr die genaue Position zu kennen, sondern könntest mit InStr() und SubStr$(zeile, 3, "|") diese abfragen. Außerdem hätte man mit GetCount(0)
die genaue Anzahl, falls es mal mehr Icons werden.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
24.03.2026  
 




H.Brill
Hier habe ich mal eine Gridbox mit Checkboxen und den Internen Icons
gemacht. Den ursprünglichen Code habe ich hier im Forum gefunden
und für meine Bedürfnisse abgeändert.
 $H Windows.ph
 $H Commctrl.ph
Declare String zeile
Declare IcoList&, lv&
Window 600, 400
AddRes %Hinstance, 14
def ImageList_AddIcon(2) !"comctl32","ImageList_AddIcon"'--Diese API ist nirgendwo definiert
Lv&=create("GridBox",%hwnd,"Icon;0;80;Name;0;100;Sprache;0;150",0,10,50,320,200)

WhileLoop 0, GetCount(0) - 1

    zeile = "   " + "|" + SubStr$(GetString$(0, &LOOP), 2, "|") + "|" + SubStr$(GetString$(0, &LOOP), 3, "|")
    AddString(lv&, zeile)

EndWhile

def LvGetCheck(2) testbit(sendmessage(&(1),~LVM_GETITEMSTATE,%(2),~LVIS_STATEIMAGEMASK),13)

proc LvSetCheck'---------------------------------LvSetCheck------------------------------

    parameters Lv&,Item&,Mode%
    Lv#.StateMask&=~LVIS_STATEIMAGEMASK
    Lv#.State&    =$1000 *(Mode% + 1)
    sendmessage(Lv&,~LVM_SETITEMSTATE,Item&,Lv#)

endproc'---------------------------------------------------------------------------------

IcoList&=~ImageList_Create(32,32,33,0,0)'--Icons Grösse 32*32 (3.Parameter: Farbtiefe)
'--Die Höhe der Lv-Zeilen passt sich der Grösse der Icons an!

WhileLoop 0, GetCount(0) - 1

    zeile = SubStr$(GetString$(0, &LOOP), 2, "|")
    ImageList_AddIcon(IcoList&,~LoadIcon(%hinstance,zeile))'--Icons in IcoList

EndWhile

'--IcoList für Tabellenansicht mit ListView verbinden
sendmessage(Lv&,~LVM_SETIMAGELIST,~LVSIL_SMALL,IcoList&)
'--Checkboxen + Icons in SubItems + Gitterlinien
sendmessage(Lv&,~LVM_SETEXTENDEDLISTVIEWSTYLE,0,~LVS_EX_CHECKBOXES | ~LVS_EX_SUBITEMIMAGES | ~LVS_EX_GRIDLINES)
declare Lv#
struct Lvi=Mask&,Item&,SubItem&,State&,StateMask&,Text&,TextMax&,Image&,Param&
dim Lv#,Lvi

WhileLoop 0, GetCount(0) - 1

    clear Lv#
    Lv#.Mask& = ~LVIF_IMAGE
    Lv#.Item& = &LOOP'-----------------------------Zeile  0
    Lv#.SubItem& = 0'-----------------------------Spalte 0
    Lv#.Image& = &LOOP'-----------------------------Icon 1
    sendmessage(Lv&, ~LVM_SETITEM, 0, Lv#)
    /*
    Lv#.Item&   =0 '-----------------------------Zeile  0
    Lv#.SubItem&=1 '-----------------------------Spalte 1
    Lv#.Image&  = &LOOP '-----------------------------Icon 2
    sendmessage(Lv&,~LVM_SETITEM,0,Lv#)
    Lv#.Item&   =0 '-----------------------------Zeile  0
    Lv#.SubItem&=2 '-----------------------------Spalte 2
    Lv#.Image&  = &LOOP '-----------------------------Icon 0
    sendmessage(Lv&,~LVM_SETITEM,0,Lv#)
    */

EndWhile

'LvSetCheck(Lv&,1,1) '---Eintrag abhaken (0 als 3.Parameter löscht den Haken)
usermessages 16'--Close abfangen

while 1

    waitinput
    locate 0,0
    print "Gewählt:",getcursel(Lv&)
    print "Check  :",LvGetCheck(Lv&,getcursel(Lv&))
    case %umessage=16:break

endwhile

'--Aufrufen, wenn das Grid nicht mehr gebraucht wird:
destroywindow(Lv&)
~ImageList_Destroy(IcoList&)
dispose Lv#
End

Sowas wäre z.b. gut, wenn man die zu tauschenden Icons auswählen möchte.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
28.03.2026  
 




Georg
Teles
Das lässt sich leicht umsetzen, dazu brächte man nur einige Routinen um eine Quelldatei zu laden und eine Zieldatei bestimmen.

Als Bonus könnte man ein Häckchen hinzufügen für die Option, das Icon zu ersetzen oder neu hinzuzufügen (obwohl mit Change egal ist, ob das Icon vorhanden ist oder nicht, wird ersetzt/andernfalls hinzugefügt) plus eventuell optional einen neuen Namen für das Icon vergeben (ein Edit vorausgefüllt mit dem Originalnamen)

Schaue es mir an, wie schnell das geht, lässt sich sicherlich ein Tool für das fertigen

Grüße Georg
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

29.03.2026  
 




H.Brill
Ich denke, da bekommt man bestimmt was hin. Was mir noch fehlt, wäre eine Funktion, die nicht nur einzelne Icons (und sonstige) sondern die ganze Icon -Group als binäres Abbild in eine Datei spreichert und eine, die das lädt. So, wie es der neue ReHacker ja auch kann. Da hätte man das Durch-Iterieren gespart.

Ich hatte damals schon Roland gefragt, ob er nicht den Borland Ressourcen-Compiler (BRC.EXE) zu seiner Installation dazu packen kann. Der ist ja frei erhältlich und außerdem gibt es noch den kostenlosen GORC Ressourcencompiler. Den könnte er ja auch über seine Funktionen bestimmt aufrufen. Hatte aber leider keine Antwort dazu bekommen.
Und jetzt braucht man ihn sowieso nicht mehr fragen. Der antwortet nicht mehr, weder im Forum noch per E-Mail.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
29.03.2026  
 




Georg
Teles
H.Brill (29.03.2026)
Ich hatte damals schon Roland gefragt, ob er nicht den Borland Ressourcen-Compiler (BRC.EXE) zu seiner Installation dazu packen kann. Der ist ja frei erhältlich und außerdem gibt es noch den kostenlosen GORC Ressourcencompiler. Den könnte er ja auch über seine Funktionen bestimmt aufrufen. Hatte aber leider keine Antwort dazu bekommen.
Und jetzt braucht man ihn sowieso nicht mehr fragen. Der antwortet nicht mehr, weder im Forum noch per E-Mail.


Naja, der Res Compiler ist nicht kostenlos, zumindest finde ich keine Quelle, wo man den herbekommt ? Mit dem Gorc muss man sich beschäftigen, ist ein Aufwand auf jeden Fall.

Selbst mit den vorhandenen Befehlen in X4 sollte man aber einen eigenen ResHacker schreiben können, ist auch ein Aufwand, da man sich schon allein mit Datenstrukturen der verschiedenen Ressourcen beschäftigen muss ich versuche mal, ein Tool für deine Bedürfnisse zu schreiben und melde mich nochmal ...

Grüße
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

29.03.2026  
 




H.Brill
Ja da hast du Recht. Der BRCC.exe ist Teil der Delphi-Installation. Den bekommt man nur, wenn man Delphi hat. Genauso, wie der MS RC.exe mit Visual Studio.
Ich hatte mal Ende der 90er ein Delphi gekauft, glaube Version 3. Von daher kannte ich den BRC auch.
Beide werden wahrscheinlich in der IDE vorm eigentlichen Compilieren aufgerufen und erzeugen dann aus einer .rc eine .res, die dann der Compiler
einbinden kann.
XProfan kann das ja auch : $RES RessourcenDatei

Da bleibt wohl nur der freie GORC über oder halt ein kostenpflichtiges Tool. Aber der neue Reshacker kann ja auch mit .rc Dateien umgehen.

Wäre ja auch mal interessant, neue Controls hinzuzufügen.Die Listboxen der
internen Listboxliste und die Editboxen sind ja ein Beispiel dazu. Findet man in der Ressource DIALOG.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
29.03.2026  
 




Georg
Teles
H.Brill (29.03.2026)
XProfan kann das ja auch : $RES RessourcenDatei


Naja soweit ich weiß, bindet der Compiler/Linket eine RES Datei an die Runtime, wenn du aus dem Kompilat eine EXE machst.

Bevor du dich mit dem GORC auseinandersetzt, kann man beim ResHacker über die Parameter Befehle übergeben  [...]  das habe ich bis jetzt nie gemacht, der Aufwand sich mit zu beschäftigen ist aber wesentlich geringer

---

Hier, habe mal etwas gebastelt, war mir neu das Thema ... bis auf die Sprache / Sprach-ID habe ich über LoadLibraryEx und das Laden der Ressourcen das Nötigste gefunden.

Die AddRes Funktion habe ich jetzt nur zum Auslesen der Sprach-ID / Sprache benutzt und nach den Icon Group Namen aus der geladenen Bibliothek abgeglichen, damit nichts verrutscht ...

Die CHANGE Funktion habe ich noch nicht hinzugefügt, ist auch "nur noch" ein Klacks, das mache ich die Tage und teste es mal gründlich, dann wird ein ordentliches Tool draus ... zum Auslesen der EXE und DLLs habe mal das Testprogramm angehängt

Hab die Icons BAUM (Group BAUM mit Icon ID 5, Auflösung manuell 32x16 Pixel) und MUELL (Group MUELL mit Icon IDs 17 und 26, 32x32 und 16x16 Pixel) bei "neue icons.dll" mal geändert um die Auslesefunktion zu testen

Herunterladen

Grüße
Georg

509 kB
Hochgeladen:30.03.2026
Ladeanzahl9
Herunterladen
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

30.03.2026  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

810 Betrachtungen

Unbenanntvor 0 min.
Roland Schäffer vor 15 Tagen
Jürgen Strahl vor 15 Tagen
Georg Teles vor 18 Tagen
H.Brill vor 19 Tagen
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

H.Brill (13x)
Georg Teles (11x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie