![]() |
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
@OldGrumpy ja schande über mich... ich mach das nebenher, daher editiere ich meine Beiträge im Laufe der Zeit auch ein paarmal, siehe oben. ;)
Um meine Verpeiltheit wieder gut zu machen hier nun ein Vorschlag, um das ausgängliche Problem des Threadstellers zu illustrieren:
Delphi-Quellcode:
in der Tat gibt es viele Module, die keinen Dateinamen haben, obwohl sie aufgelistet wurden
procedure EnumModulesOf(pid : Cardinal);
var hProcess: Cardinal; Modules: Array[0..65535] of hModule; cbNeeded:Cardinal; i: integer; begin hProcess := OpenProcess(PROCESS_ALL_ACCESS,false,pid); if hProcess <> 0 then begin EnumProcessModules(hProcess,@Modules,65536,cbNeeded); if 65536 < cbNeeded div SizeOf(HModule) then writeln('Too many modules loaded. Not all modules will be displayed.'); for i := 1 to cbNeeded div SizeOf(HModule)-1 do begin if _GetModuleFileName(Modules[i]) <> '' then writeln(' ',inttohex(Modules[i],8),' : ',_GetModuleFileName(Modules[i])) else writeln(' ',inttohex(Modules[i],8),' : unknown'); end; CloseHandle(hProcess); end else writeln('could not open process #',pid); readln; end; |
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Joah, ganz dolle. Natürlich kann man das Problem fast beliebig komplex lösen, aber wozu das? Oben im Thread gibts den ganz schlichten Vorschlag den Dateinamen innerhalb der Resourcen-DLL zu verankern, so steht er praktisch automatisch zur Verfügung. Warum dann noch unglaubliche Klimmzüge veranstalten? Weil man es kann? :roll:
|
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Mir ist auch nicht ganz klar, wass der Threadersteller mit
Delphi-Quellcode:
meint. Ich hab dazu
Ich will herausfinden, welche Resource-DLL Delphi geladen hat - genauer eigentlich nur welche Sprache.
![]() Damit kämen wir dann auch zu dem Vorschlag von OldGrumpy, einen Namensstring oder eine TellMyName() Funktion zu exportieren und das Problem wäre gelöst, oder? |
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Hallo Chris,
Zitat:
Delphi-Quellcode:
Freundliche Grüße
function ResFileName(mmf: HMODULE; var fn: TFileName): Boolean;
var modName: array [0..MAX_PATH] of Char; n: Integer; begin n := GetMappedFileName(GetCurrentProcess, Pointer(mmf), modName, SizeOf (modName)); Result := n > 0; if Result then SetString(fn, modName, n); end; |
Re: Lokalisierung: Name der geladenen Resource-DLL herausfin
Ich habs! :bounce1: [edit] Aber marabu war schneller :mrgreen: thx [/edit]
Die Lösung liegt in der Funktion GetMappedFileName (zu finden in der PsAPI). Nett von MS, immer zu schreiben wie es nicht geht, aber nicht ein mal zu erwähnen wie es geht ... Zitat:
Die Funktion von deinem Link setzt zwar welche Sprache Delphi nutzen sollte, dass heißt aber noch lange nicht, dass er das auch tut. Existiert z.B. die angegebene Datei nicht oder kann nicht geladen werden, sucht er nach Dateien die der aktuellen "Thread-Sprache" (GetThreadLocale) entsprechen. Welche Datei nun letztendlich geladen ist, weiß man so nie. Zu den Posts mit "String mit der Sprache in die Resource-DLL packen": Ya, sowas hatte ich auch schon im Kopf :-D ... Nun ja, so klappt es ya doch noch wie gewünscht, danke an euch für eure Hilfe :P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:04 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