Einzelnen Beitrag anzeigen

Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#6

AW: zu wenig arbeitsspeicher?

  Alt 29. Sep 2012, 18:54
Wird erkannt ->


Delphi-Quellcode:
function GetResources(pSectionName: PChar; out ResourceSize: LongWord): Pointer;
var
  ResourceLocation: HRSRC;
  ResourceHandle: HGLOBAL;
begin
  ResourceLocation := FindResource(hInstance, PAnsiChar(pSectionName), RT_RCDATA);
  ResourceSize := SizeofResource(hInstance, ResourceLocation);
  ResourceHandle := LoadResource(hInstance, ResourceLocation);
  Result := LockResource(ResourceHandle);
end;

function GetResourceAsString(pSectionName: pchar): string;
var
  ResourceData: PChar;
  SResourceSize: LongWord;
begin
  ResourceData := GetResources(pSectionName, SResourceSize);
  SetString(Result, ResourceData, SResourceSize);
end;

Ich habe gehört, es bringt was, die WindowsAPI-Funktionen dynamisch zu callen. Daran bin ich leider auch gescheitert. Vlt. kann mir da einer helfen?

Hab den Source leider nicht mehr, da ichs aufgegeben hatte, aber so in etwa:
(Ich machs nur an einem Beispiel fest)

Delphi-Quellcode:

var xFindResource : function(hModule: HMODULE; lpName, lpType: PChar): HRSRC; stdcall;

procedure loadlibrary;
var
  h32 : THandle;
begin
  h32 := LoadLibraryA('kernel32.dll');
  @xFindResource := GetProcAddress(h32,pchar('FindResource');
end;

Das die Strings "kernel32.dll" sowie als auch "FindResource" nicht plain im Source stehen (weil da die AV-Hersteller auch direkt alarm schlagen), hatte ich damals noch via RC4 diese Strings kodiert.

Was mache ich aber da falsch? So hat es nicht geklappt.

Geändert von Lyan (29. Sep 2012 um 19:01 Uhr)
  Mit Zitat antworten Zitat