![]() |
Lokalisierung: Name der geladenen Resource-DLL herausfinden?
Hallöchen erstmal an euch alle ^^
Ich weiß, ich komme auch nur angeschleimt, wenn ich Hilfe brauche - böse von mir :mrgreen: Ich habe folgendes Problem: Ich will herausfinden, welche Resource-DLL Delphi geladen hat - genauer eigentlich nur welche Sprache. Jedoch behält die Funktion LoadResourceModule - die ya für das laden verantwortlich ist - das natürlich für sich. :roll: Nun kann ich zwar mit FindResourceHInstance(HInstance) mir das Handle auf die Resource-DLL holen, was soweit ya auch klappt, aber GetModuleName bzw. GetModuleFileName bringen mir für das Handle einen leeren String zurück (was an der LoadLibraryEx Option LOAD_LIBRARY_AS_DATAFILE liegt). Nun geistern mir noch verschiedene, mehr oder weniger unschöne und fehleranfällige Möglichkeiten im Kopf rum. Und bevor ich die nutze, wollte ich mal euren Rat einholen :lol: Vielen Danke schon mal ... |
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Ich habe bisher immer Sprachpakete mit INI-Dateien gehandelt. Mit Resource-DLLs habe ich noch nicht gearbeitet. Scheinbar stellen dir diese DLLs resourcestrings zur Verfügung, oder? Wäre das der Fall, dann könntest du doch einfach einen Resourcestring/Spracheintrag "language" abfragen, der dann die Sprache des Sprachpakets (German, English) beinhaltet. Vielleicht stellst du auch ein Feld mit Angabe des Übersetzers und der Revision zur Verfügung. Hilft dir der Ansatz etwas?
Gruß blackdrake |
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Oh da klemm ich doch mal dran. Ich denke du kannst mit NtQuerySystemInformation(...) die SYSTEM_HANDLE_INFORMATION gewinnen, das liefert dir ein Array aus records mit Informationen zu aktiven handles, von denen du dann die richtigen ( mit der gewünschten ProcessID ) rausfischen kannst und darauf prüfen, ob sie Module-handles sind und damit den Modulname bekommen.
|
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Warum verankerst Du nicht in der Resourcen-DLL eine Resource die den Namen der DLL trägt? :)
//Edith sagt: Heute ist nicht mein Tag, der Vorschlag steht oben schon mal :) Zitat:
|
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Woah wenn ich schon wieder C-Code übersetzen muss, da könnte ich Bröckchen lachen...
Ich gebs auf. Hinweis siehe bisschen weiter unten.. |
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Weder HModules noch HWnds sind Handles von Kernel-Objekten. Ich bezweifle daher, dass sie in der Liste auftauchen.
|
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Dann muss man sich mal näher mit psAPI und Toolhelp32 auseinandersetzen. Stimmt, es kann sein, dass die so aufgezählten Handles nur die GDI-Handles sind
|
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
:roll: GDI-Handles sind auch keine Handles von Kernel-Objekten. Es gibt drei Klassen von Handles: User, GDI und Kernel. HModules sind keine echten Handles sondern Zeiger.
|
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Boah... Wald vor lauter Bäumen nicht gesehen.. psAPI hat da was feines:
Delphi-Quellcode:
:wall:
psAPI.EnumProcessModules(hProcess: THandle; lphModule: LPDWORD; cb: DWORD;
wenn das klappt, müsstest du doch auch die FileNames bekommen :gruebel: ok, msdn meint : "The EnumProcessModules function does not retrieve handles for modules that were loaded with the LOAD_LIBRARY_AS_DATAFILE flag." Es kann also sein, dass Windows gerade die für dich interessanten Infos in die Tonne haut, auf nimmerwiedersehn ;) Eine Möglichkeit, dann etwas herauszufinden wären ShellNotify Infos, man kann sich ja benachrichtigen lassen, welche Dateien geöffnet und geladen werden. Dann hast du eine Art "debugging" ;) |
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Zitat:
Zitat:
Liest Du eigentlich auch mal was im Thread so geschrieben wird? Verifizierst Du Deine Vorschläge eigentlich mal? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz