Ga naar inhoud

[Delphi (6)] Files runnen vanuit geheugen


Aanbevolen berichten

[quote:65678acea9="Fahr"]Weet iemand toevallig of en hoe het mogelijk is om een file uit bijv. een TMemoryStream direct te runnen zonder die eerst in een of andere temp dir op HD te gooien? - Fahr[/quote:65678acea9] In principe kun je memory-streams aan iedere functie doorgeven die streams kan lezen, maar verder ... Leg eerst maar eens uit wat je bedoelt met een 'file runnen' ...
Link naar reactie
[quote:409afbeac3="JaFO"] In principe kun je memory-streams aan iedere functie doorgeven die streams kan lezen, maar verder ... Leg eerst maar eens uit wat je bedoelt met een 'file runnen' ...[/quote:409afbeac3] ok, voorbeeld: Ik heb een EXE, die stop ik als resource in een andere EXE. In de code laad ik die resourced EXE en douw 'm via een TResourseStream in een TMemoryStream of een TFileStream of wat dan ook. Kan ik dan, ZONDER die stream naar de HD te schrijven, die file opstarten alsof het een gewone EXE is? Het kan wel, EXEpackers doen het ook. - Fahr
Link naar reactie
[quote:5570cffb7f="Fahr"]ok, voorbeeld: Ik heb een EXE, die stop ik als resource in een andere EXE. In de code laad ik die resourced EXE en douw 'm via een TResourseStream in een TMemoryStream of een TFileStream of wat dan ook. Kan ik dan, ZONDER die stream naar de HD te schrijven, die file opstarten alsof het een gewone EXE is? Het kan wel, EXEpackers doen het ook.[/quote:5570cffb7f] Niet helemaal. EXE packers die splitten de .exe weer naar data, code, stack, etc. segmenten en die losse stukken worden gecomprimeerd en zo opgeslagen. En aan de hand hiervan wordt de data in het geheugen gestopt en geinitialiseerd. Meestal wordt dus niet de complete executable als een stuk gecomprimeerd. Wat jij wilt kan wel, maar is nogal ongedocumenteerd wat betreft de exacte handelingen die de windows program loader doet.... :roll:
Link naar reactie
simpeler: [code:1:f1f031d456] var StartInfo:TStartupInfo; ProcessInfo:TProcessInformation; begin CreateProcess( PChar('mijnexe.exe'), // exe file name PChar(''), // params etc. nil, nil, // thread zut, niet belangrijk False, // inherit handles CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, // creation flags nil, // environment PChar('C:\'), // rundir StartInfo, // TStartupInfo type ProcessInfo); // TProcessInformation type while WaitForSingleObject(ProcessInfo.hProcess,200) = WAIT_TIMEOUT do sleep(50); deletefile('mijnexe.exe'); end; [/code:1:f1f031d456]
Link naar reactie
Ohjah oke! Weet jij toevallig ook hoe je een programmaatje maakt die de hele tijd loopt terwijl Windows draait (in het register insteller dat hij gestart moet worden), en afsluit als Windows ook afsluit? Het is mij wel gelukt met een programma met een Form en dan ShowMainForm := False, maar dan is de applicatie meteen 350 kb groot! Kan het dan als een service? Of Console????
Link naar reactie
je kan je app natuurlijk zonder de forms unit maken, scheelt een hele berg als je de forms toch niet gebruikt... zoiets: [code:1:f83716f3b4] program Blah; uses SysUtils, Classes, Windows, zLib; {$R e:\delphimod\Include.RES} procedure x; var begin end; procedure y; var begin end; begin // hier komt de main program code // deze code wordt uitgevoerd als het progje start end. [/code:1:f83716f3b4] Das dan alleen een .dpr file en geen console app, als je er een icoontje aan wilt geven moet je een .ico pakken, een .rc file maken met dit erin: [code:1:f83716f3b4] MAINICON ICON mijnicon.ico [/code:1:f83716f3b4] die .rc file compile je dan met: brcc32 mijnrcfile.rc dan krijg je een mijnrcfile.RES, die gooi je dan in de Delphi app door onder alle uses te zetten: [code:1:f83716f3b4] {$R mijnrcfile.RES} [/code:1:f83716f3b4] Een Service kan je maken in Delphi 6 met file, new, service (duh), maar dat werkt alleen in WinNT2K...
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...