Jak uruchomić EXE'ca z zasobów bez zapisania na dysku?

Odpowiedz Nowy wątek
2006-08-16 16:11
Ad
0

Witam, najpierw krótki wstęp:

<font size="2">Przeczytałem artykuł o zasobach w EXE.
Przeczytałem odpowiedź na FAQ: Jak nie korzystając z komponentu dokleić do pliku program EXE. Tam znalazłem częściowo to o co mi chodziło.
Znalazłem 448 postów o ShellExecute, ale żaden z nich nie pasował.
W googlach też nie ma rozwiązania...</span>

No, to tytułem, żeby :-[ nie mówili, że nie szukałem.
Pytanie brzmi: Jak uruchomić EXE'ca z zasobów.
Ok, w FAQ jest kod:

var
  Res : TResourceStream;
begin
  Res:=TResourceStream.Create(hInstance,'PROGRAM',RT_RCDATA);
  Res.SaveToFile('Program.exe'); // zapisz na dysk
  Res.Free;
end;

Ale to wymaga zapisywania pliku na dysku, ergo nie będzie działać gdy mamy bardzo ograniczony dostęp do dysku :-D . Czy istnieje jakaś wersja funkcji ShellExecute typu:

Res:=TResourceStream.Create(hInstance,'PROGRAM',RT_RCDATA);
ShellExecute(0,'open',Res,nil,nil,SW_SHOW);

Pamiętajcie, nie można nic zapisywać na dysku.
Da się w ogóle? Uruchomiony proces musi mieć chyba ścieżkę, nie? Pozdrowienia i z góry dziękuję za odpowiedzi.


Pozostało 580 znaków

2006-08-16 17:51
0

Było pare razy na forum. Wniosek zawsze jeden: musiałbyś napisać własnego loadera.

http:4programmers.net/Forum/168172

Pozostało 580 znaków

2006-08-16 17:56
Ad
0

Pod jakim hasłem? Jakiego loadera? Coś więcej? Proszę pomóż...
//[EDIT]:
to co podałeś kończy się postem:

vegat napisał(a)

Raczej się nie da... :/ Musisz zapisać do do TMP-ów i stamtąd uruchomić....
.
Za taką pomoc dziękuję :-[ .


Pozostało 580 znaków

2006-08-16 18:06
0

z zasobow czyli z pamieci

http://www.joachim-bauch.de/tutorials/load_dll_memory.html/en

to o dll ale powinno wystarczyc...


Pozostało 580 znaków

2006-08-16 18:09
Ad
0

I co (ew. który akapit) odpowiedzią [est]?


Pozostało 580 znaków

2006-08-16 18:44
0

nie oczekuj odpowiedzi w postaci

nalezy zastosowac funkcje

function WczytajMiEkzekaZPamieci(obszarpamieci:Pointer):boolean;

W tym artykule masz wystarczajaco duzo ... aby szukac dalej .


Pozostało 580 znaków

2006-08-16 22:20
0

Niestety obawiam się, że bez jakieś porządnej wstawki assemblera jest to niemożliwe. W programach dosowych może jeszcze coś bym wykombinował (kiedyś napisałem wirusa komp., który doczepiał się do takich plików exe), jednak uruchomienie programu win32 (takiego z formą, wielowątkowego)... oj ciężko będzie...

Mógłbyś spróbować zrobić coś ala własny analizator kodu; np. pierwszych kilka byte to rozmiary okna, następne byte odpowiadają za komponenty na formie, itp... A w swoim programie analizowałbyś te dane i tworzyłbyś elementy w sposób dynamiczny- wiem, to jest trochę szalony pomysł :-D

Pozostało 580 znaków

2006-08-17 11:06
0

Dlaczego chcesz urauchamiać exeka z zasobów ??? Opisz swoją koncepcje, to może da się jakoś to obejść sprytnym trickiem :)

Pozostało 580 znaków

2006-09-04 12:45
Ad
0
adf88 napisał(a)

Dlaczego chcesz urauchamiać exeka z zasobów ??? Opisz swoją koncepcje, to może da się jakoś to obejść sprytnym trickiem :)
Na przykład mam w zasobach cudzy program (za pozwoleniem autora :-D ) i chcę go uruchomić moim programem. Może się zdarzyć sytuacja, że użytkownik nie ma odpowiednich praw dostępu. A program jest na przykład na płycie. Zależy mi na tym, żeby wszystko było w jednym EXE.


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0