| |
|
|
- 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? |
|
|
| |
|
|
|
| |
|
- 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 | OK, Danke, probier ich. |
|
|
| |
|
|
|
| [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. |
|
|
| |
|
|
|
Nico Madysa | Ach so , wieder was gelernt. Mal sehen, ob ich da was für mich Interessantes finden werde. |
|
|
| |
|
|
|
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). |
|
|
| |
|
|
|
| Naja, Andreas hat eine vorliebe fürs Komplizierte |
|
|
| |
|
|
|
| [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 .
|
|
|
| |
|
|
| |
|
- 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? |
|
|
| |
|
|
|
| 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 |
|
|
| |
|
|
|
| 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 |
|
|
| |
|
|
|
Nico Madysa | Lest doch mal den ersten Beitrag! Ich will nur Logos und n bissel Text aus von mir programmierten Zusatztools ziehen! |
|
|
| |
|
|