Deutsch
Forum

EXE-Instanzhandle

 
- Seite 1 -



Nico
Madysa
OK, folgendes:

Ich habe vor Kurzem meinem Programm eine kleine ListBox hinzu gefügt. In Ihr sollen alle EXEn (vornehmlich Zusatztools zu meinem Programm) im selben Ordner wie mein Programm angezeigt werden. Wählt man eine EXE aus, wird daneben ihr Logo und eine kurze Beschreibung angezeigt. Bilder und Strings sind als Ressourcen in den EXEn eingelagert. Nun das Problem:

Bei Draufklick rufe ich das entsprechende Programm mit WinExec auf, erhalte sein Instanzhandle und ziehe mit Create(hPic) und ExtString$() die Sachen raus, die ich brauch.
Das Problem: Es kamen weder Bild noch String. Ich probierte die Sache im entsprechenden Programm selbst mit %hInstance - Bild und String kamen.

Meine Frage nun:
Kann es sein, dass WinExec gar kein Instanzhandle zurück liefert?
Und wenn nicht, wie krieg ich es dann?
 
Nico Madysa
29.09.2006  
 



 
- Seite 1 -



Nico
Madysa
@A. Hötker: TNT ist definitiv nichts für mich, allerdings nicht aus Abneigung, sonern weil ich Windows ME hab.

@A. Hötker und TS-Soft: Danke für die schnelle Antwort. Sollte UseDLL nicht funktionieren, werde ich die API probieren. (Hehe, das reimt sich.)
 
Nico Madysa
29.09.2006  
 



So, das dürfte helfen...
KompilierenMarkierenSeparieren
Def @LoadLibraryEx(3) !"KERNEL32","LoadLibraryExA"
Windowstyle 31+512
Windowtitle "LoadLibraryEx"
Window 0,0-640,440
Declare Module$,LADEN%,Handle_OF_MODULE&
LET Laden%=$2 Mal testen, sonst $1
Usermessages $10
LET Module$=@LOADFILE$("Ein Modul laden","DLL-Module|*.DLL|OCX-Module|*.OCX|Programme|*.EXE|Alle Dateien|*.*")

IF Module$<>""

    LET Handle_OF_MODULE&=@LoadLibraryEx(@ADDR(Module$),0,LADEN%)
    Print Handle_OF_MODULE&

endif

While %UMESSAGE<>$10

    Waitinput

wend

 
29.09.2006  
 




Nico
Madysa
OK, Danke, probier ich.
 
Nico Madysa
29.09.2006  
 



[quote:c0fd4ace4f=Nico Madysa]@A. Hötker: TNT ist definitiv nichts für mich, allerdings nicht aus Abneigung, sonern weil ich Windows ME hab.
[/quote:c0fd4ace4f]
Einige Funktionen (wie z.B. das Scannen von Prozessspeicher fremder Prozesse oder die Taskmannagerfunktionen) laufen auch unter ME.
 
29.09.2006  
 




Nico
Madysa
Ach so , wieder was gelernt.
Mal sehen, ob ich da was für mich Interessantes finden werde.
 
Nico Madysa
29.09.2006  
 




Nico
Madysa
OK, danke an alle, das Problem ist auch für API-Fürchter wie mich einfach geklärt.

Man muss nicht auf LoadLibraryEx zugreifen, UseDLL geht auch.
(Ich hatte das Problem fast vergessen, da hatte ich bei nem LoadFile-Dialog aus Versehen ne EXE gewählt und die
dann mir UseDLL geöffnet, funktioniert ohne Fehler).
 
Nico Madysa
09.10.2006  
 



Naja, Andreas hat eine vorliebe fürs Komplizierte
 
09.10.2006  
 



[quote:1fc9eb0811=TS-Soft]Naja, Andreas hat eine vorliebe fürs Komplizierte [/quote:1fc9eb0811]
Kann ich von mir nicht behaupten - eher im Gegenteil. Ich habe bloß ganz gerne immer etwas mehr Möglichkeiten als der Rest der Menschheit
Versuch mal mit Usedll unter XP die User32 von Windows98 zu laden - und dann mach das mal mit LoadLibraryEx .

 
09.10.2006  
 



 
- Seite 2 -



Nico
Madysa
Kann ich nicht nachvollziehen, hab kein XP
[ironie]die CD wird erst morgen mit meinem neuen HDready-Fernseher geliefert.[/ironie]
Kann mir mal jemand den Unterschied erläutern?
 
Nico Madysa
09.10.2006  
 



Die LoadLibraryEx API hat nur 2 Parameter mehr, wovon einer ohne Funktion ist, und der andere für Dich unnütz ist. Um an die Resourcen einer Exe zu kommen, bietet es keinerlei Vorteile. Nur komplizierter
 
09.10.2006  
 



UseDll ruft die API LoadLibrary auf. LoadLibrary lädt die DLL und führt die Einsprungsfunktion (falls vorhanden) aus. Ist da irgendein Call auf eine Funktion oder Adresse eines anderen OS vorhanden (die es im aktuellen OS nicht gibt), geht das Laden in die Hose.

Mit LoadLibraryEx lädt man zwar die DLL, führt da aber nicht unbedingt etwas aus (hängt vom Parameter ab). Da du ME benutzt, müßte LOAD_LIBRARY_AS_DATAFILE bei dir funktionieren (will ich jedenfalls hoffen). Sollte die DLL komprimiert sein, gibt es aber auch hier Probleme.

In TNT versuche ich die DLL zuerst mit LoadLibraryEx zu laden - geht das schief (da sie komprimiert ist), muß UseDll herhalten. Auf diese Weise kann ich auch Exportfunktionen Betriebsystemfremder DLLs auslesen - mehr als manche anderen Programme können.

Gruß

Andreas
 
09.10.2006  
 




Nico
Madysa
Lest doch mal den ersten Beitrag!
Ich will nur Logos und n bissel Text aus von mir programmierten Zusatztools ziehen!
 
Nico Madysa
10.10.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.261 Betrachtungen

Unbenanntvor 0 min.
RudiB.28.08.2022
AndreasS06.01.2019
Pauli11.01.2014
Donnie30.03.2013

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

unbekannt (8x)
Nico Madysa (7x)
Rolf Koch (1x)


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