AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi TResourceStream NUR Win32 API Funktion! (andere Möglichkeit)
Thema durchsuchen
Ansicht
Themen-Optionen

TResourceStream NUR Win32 API Funktion! (andere Möglichkeit)

Ein Thema von schorfi · begonnen am 6. Apr 2005 · letzter Beitrag vom 6. Apr 2005
Antwort Antwort
schorfi

Registriert seit: 6. Apr 2005
2 Beiträge
 
#1

TResourceStream NUR Win32 API Funktion! (andere Möglichkeit)

  Alt 6. Apr 2005, 20:37
Hallo,

ich schreibe derzeit ein kleines Tool für mich, welches nur auf Win32 API funktioniert (ohne Delphi-Klassen), sprich "uses Windows, Messages".

Dateigröße beträgt schöne 80 Kb bisher, also funktioniert alles super, außer eine Sache.

Ich habe eine Resource Datei in mein Projekt eingebunden (2 mal EXEFILE).

Nach Start meines Programmes sollen die EXEFILES gestartet werden. Dementsprechend soll also die Resource Datei extrahiert werden (in ein Temp-Ordner) und die beiden Exe-Dateien ausgeführt werden!

Habe dazu nur folgende Anleitung gefunden: http://www.swissdelphicenter.ch/de/showcode.php?id=594

Das Problem: die Klasse: "Controls" müsste eingefügt werden, welches meine Exe auf 500 KB explodieren lässt.

Hat jemand nen Link oder einfach nur Stichwörter nach den ich Suchen muss, um auf Win32 API zurück zugreifen, ohne TResourceStream nutzen zu müssen.




Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TResourceStream NUR Win32 API Funktion! (andere Möglichk

  Alt 6. Apr 2005, 20:40
Von Assarbad ist folgende Funktion:
Delphi-Quellcode:
{ following code is copied directly from Assarbad }

function putbinresto(binresname: string; path: string): boolean;
var
  ResSize, HG, HI, SizeWritten, hFileWrite: Cardinal;
begin
  result := false;
  //find resource
  HI := FindResource(hInstance, @binresname[1], 'BINRES');
  //if legal handle, go on
  if HI <> 0 then
  begin
    //load resource and check the handle
    HG := LoadResource(hInstance, HI);
    if HG <> 0 then
    begin
      //check resource size (needed to copy a block of data)
      ResSize := SizeOfResource(hInstance, HI);
      //create the file
      hFileWrite := CreateFile(@path[1], GENERIC_READ or GENERIC_WRITE,
        FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS,
        FILE_ATTRIBUTE_ARCHIVE, 0);
      //if succeeded ...
      if hFileWrite <> INVALID_HANDLE_VALUE then
      try
        //write to it
        result := (WriteFile(hFileWrite, LockResource(HG)^, ResSize,
          SizeWritten, nil) and (SizeWritten = ResSize));
      finally
        //close file
        CloseHandle(hFileWrite);
      end;
    end;
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mephistopheles
(Gast)

n/a Beiträge
 
#3

Re: TResourceStream NUR Win32 API Funktion! (andere Möglichk

  Alt 6. Apr 2005, 20:42
http://www.faqsen.de/servlet/Faqsen?...s_html.zip&P=0

Nach BINRES suchen.
  Mit Zitat antworten Zitat
schorfi

Registriert seit: 6. Apr 2005
2 Beiträge
 
#4

Re: TResourceStream NUR Win32 API Funktion! (andere Möglichk

  Alt 6. Apr 2005, 23:39
Ich danke euch beiden! Hat super gefunzt... Lang lebe Win32 API!






Euer Schorfi....
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz