Programm-Icon in Gridbox

  • Die Zeile habe ich von Andreas Hötker:

    Zitat

    IconHandle&=External("SHELL32.dll","ExtractIconA",%HINSTANCE,addr(Name_der_EXE$),0)

    Das ist eine Gridbox, die in einem Tool EXE-Dateien anzeigt:

    Zitat

    grid00&=CREATE("GRIDBOX",%Hwnd,titel00$,1,5,25,250,320)

    Wie kann ich jetzt die Gridbox "überreden", vor jeder EXE-Datei auch das dazu gehörende Icon zu zeigen :?:
    Es geht, aber bei mir ist 'Ladehemmung' :oops:
    Finde einfach keinen Einstieg :(

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress, WoltLab & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

    Wenn du Fragen hast, kannst du dich gerne jederzeit an @Maximilian Rupp wenden

    Hinweis:

  • So in der Art (kein lauffähiger Quelltext):



    Vielleicht geht's auf Xprofan11 einfacher.

  • Hallo Horst,

    Ich habe sowas mal für einen Datei-Commander gemacht. Leider habe ich den Code durch einen Crash verloren.

    Vom Weg her habe ich eine leere Imageliste angelegt dann jede Datei über die
    API ExtractAssociatedIcon geschickt und das Iconhandle der Imageliste zugefügt und dann das jeweilige Icon der Datei zugefügt. So bekommst du das Icon für alle Dateien, nicht nur Exe-Dateien.
    In die Listview habe ich dann die Datei mit Icon mit folgendem Code eingefügt.
    Aufruf ist Add_Item(Handle,feld1,feld2,usw,Iconnummer)

    proc Add_item
    Declare NewIndex&,Count&,Line&,LV_ITEM#,hdl&
    hdl& = @&(1)
    If (getcount(hdl&) < 0)
    Line& = getcount(hdl&)+1
    Else
    Line& = getcount(hdl&)
    EndIf
    SendMessage(hdl&, 11, 0, 0)
    Dim LV_ITEM#, 500
    Let Count& = 0
    Long LV_ITEM#,0 = 11
    Long LV_ITEM#,4 = Line&
    Long LV_ITEM#,8 = Count&
    Long LV_ITEM#,12 = 0
    Long LV_ITEM#,16 = 0
    Long LV_ITEM#,20 = (LV_ITEM#+36)'text
    Long LV_ITEM#,24 = 261
    Long LV_ITEM#,28 = @&(%Pcount)
    Long LV_ITEM#,32 = 0
    let Count&=count&+2
    String LV_ITEM#,36 = @$(Count&)
    Let NewIndex& = @SendMessage(hdl&,$1007,0,LV_ITEM#)
    Long LV_ITEM#,28 = 0
    While (Count& < %PCount)
    Long LV_ITEM#,8 = Count&-1
    Inc Count&
    String LV_ITEM#,36 = @$(Count&)
    @Sendmessage(hdl&,4142,NewIndex&,LV_ITEM#)
    EndWhile
    dispose LV_ITEM#
    SendMessage(hdl&, 11, 1, 0)
    Return NewIndex&
    endproc

    Gruß

    Dieter

  • Hi Leute!

    Hier ein Beispiel für Xprofan 11:



    HTH
    Pascal

  • hallo Pascal
    Schön, dass du dich auch mal meldest.
    Den Code, den du postest, habe ich. Aber der nützt mir nichts.
    Die Gridbox, auf die es bei mir ankommt, listet EXE-Dateien auf, die auf der Festplatte des jeweiligen Systems vorhanden sind.
    Jede EXE-Datei hat normal ein Programm-Icon (XProfan z. B. das "P") und dieses Icon möchte ich vor dem EXE-Eintrag in der Gridbox anzeigen.
    Es ist möglich, aber ich habe "keinen Dunst", wie das gehen soll ! :oops:

  • Ich wusste ja, wofür du das brauchst, hab's darauf zugeschnitten.

    PS: Vor dem Neuscannen evtl. die Iconliste (Imageliste) neu erstellen, damit nicht immer wieder die sowieso schon vorhandenen Icons neu hinzugefügt werden. Das Ding wird sonst suf Dauer zum Speicherfresser. :)

  • Zitat von AHT;702052

    Ich wusste ja, wofür du das brauchst, hab's darauf zugeschnitten.

    PS: Vor dem Neuscannen evtl. die Iconliste (Imageliste) neu erstellen, damit nicht immer wieder die sowieso schon vorhandenen Icons neu hinzugefügt werden. Das Ding wird sonst suf Dauer zum Speicherfresser. :)

    Ja, und vor allem die Iconhandle freigeben... ;)

  • ...Ja, ja und vor allen Dingen der XProfan-Gridbox ihr komisches Sortieren abgewöhnen ;) - anscheinend sortiert die nämlich nach dem Einlesen der Icons nach den Werten der Icons :!::?:
    Da muss Roland noch mal ran ;)

    Auf dem ScreenShot weiter oben sieht man das - es wird nicht alphabetisch sortiert :?:

  • Zitat von horsthorn;701972

    Hallo an alle Tipp-Geber
    Andreas Hötker hat den Zuschlag :!: - Mit seinem Tipp geht die Sache in die "Endrunde"


    Hallo Horst - hab grad deinen Screenshot entdeckt.
    Vielleicht wäre es ganz günstig, das erste Icon von den dreien in der Liste durch ein rotes Warnicon zu ersetzen, wenn dort etwas nicht stimmt und ansonsten immer ein grünes Icon für OK zu verwenden...

  • Zitat von horsthorn;702192

    ...Ja, ja und vor allen Dingen der XProfan-Gridbox ihr komisches Sortieren abgewöhnen ;) - anscheinend sortiert die nämlich nach dem Einlesen der Icons nach den Werten der Icons :!::?:
    Da muss Roland noch mal ran ;)

    Auf dem ScreenShot weiter oben sieht man das - es wird nicht alphabetisch sortiert :?:


    Windows sortiert das Listview nach dem bei der Erstellung angegebenen Listviewstil. Fügst du eine Zeile hinzu, bleibt diese Zeile bei einer alphabetischen Sortierung nicht an dem Ort, den du anfangs zugewiesen hast. Willst du dieser Zeile weitere Elemente zuordnen (zum Beispiel ein neues Icon), musst du die Zeilennumer in der Listview wissen, in der sich das Element nach der Sortierung befindet.
    Ohne Sortierung listet das Tool die Prozesse so, wie sie gestartet wurden. Das ist bei einem Tool, das unter anderem Hinweise auf Malware geben soll, vorteilhafter, als die Prozesse nach dem Alphabet zu sortieren.

    Die Zeilennumer, an der sich die jeweilige Zeile nach der Sortierung befindet, ist das Ergebnis der Message

    Code
    Sendmessage(Lvhndl&,$1007,0,Zeile#)

    .

  • Zitat von horsthorn;702192

    ...Ja, ja und vor allen Dingen der XProfan-Gridbox ihr komisches Sortieren abgewöhnen ;) - anscheinend sortiert die nämlich nach dem Einlesen der Icons nach den Werten der Icons :!::?:
    Da muss Roland noch mal ran ;)

    Da müßtest Du Dich schon an Microsoft wenden. Wenn die Listbox den Stil "sortiert" hat, sortiert sie nach der ersten Spalte.

    Wenn Du es anders möchtest, ist "Handarbeit" angesagt ... oder Franks ListView.DLL, die diese für Dich rasend schnell abnimmt.

    Gruß
    Roland

    AMD Ryzen 5 5600U with Radeon Graphics 2,3 GHz / 32 GB RAM / 500 + 2000 GB SSD / Windows 11 - XProfan X4a

    Als Backup: MD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4

    http://www.xprofan.de

  • roland
    Da Frank weiß, daß ich ein Fan von der LISTVIEW.DLL bin, wird er mir verzeihen, wenn ich sage, ich will ein "Stand-Allone"-Programm schreiben! Also ohne DLL !
    ...und da ich ein sturer alter Mann bin und Andreas Hötker immer noch "1 Ass im Ärmel hat", werde ich das auch hinkriegen ;) :!:

    Ich hab ja schon eine Version mit DLL geschrieben - aber da werden die Icons nicht so angezeigt, wie mir das vorschwebt (Frank weiß Bescheid) :)

  • Zitat

    Da Frank weiß, daß ich ein Fan von der LISTVIEW.DLL bin, wird er mir verzeihen, wenn ich sage, ich will ein "Stand-Allone"-Programm schreiben! Also ohne DLL !

    He, kein Problem. ;)

    Zitat

    ...aber da werden die Icons nicht so angezeigt, wie mir das vorschwebt (Frank weiß Bescheid)

    Dachte, das wäre mit der neuen Version behoben? :cry:

  • Durch den entscheidenden Code-Teil von Andreas Hötker hab ich die Icons dahin bekommen, wo sie sein sollten.
    Gleichzeitig hat mein Tool QUICKSTART-SE auch einen "Entwicklungssprung" gemacht :D
    Hier werden jetzt in der neuen Version auch die Icons der geladenen Programme gezeigt :!:
    Für Anwender des Tools - das Update ist kompatibel. Einfach die alte EXE mit der neuen überschreiben.

    UpDate-Download hier:

    Downloads


    [Blockierte Grafik: http://www.postimage.org/Pq85zti.jpg]

  • Frank

    Zitat

    Hab heute Höllekopfschmerzen,

    In der Stargate-Wiederholung heute auf Tele5 hat der Cornel auch Kopfschmerzen: "Ich hab 'nen Nagel im Kopf" - so was in der Art ? - du Armer :D

    Gute Besserung :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!