Van egy delphis alkalmazás ami annyit tud hogy exe-be ment egy fájl majd ki tudja menteni az exeből. Hogyan lehetne 2 fájlosra megcsinálni?
(A 2 fájl tömörítése majd 1 fájlként való beírás nem játszik az én esetemben)
Nekem mindig csak az egyiket sikerült megoldani akármivel is próbálkoztam.
Forrás: [link]
Szia.
1. Lehet hogy én nem értek hozzá, de nem vágom mit szeretnél Miaz hogy 2 fájlos megoldás ?. Ha lehetne egy kicsit konkrétabban, szájbarágósabban....
2. Az hogy egy EXE programból kiments valamit ami benne van, az megoldható (Gondolom ez az a rész ami megy).
3. A másik része igy nem is fog sikerülni, soha sem. Miért ?
Mert az EXE programot (amibe irni szretnél, maga Windows Rendszer fogja) nem tudsz bele irni. Alap tétél, még System jogosultságokkal sem megy (törölni sem tudod addig amig fut a program)
4. Esetlegesen, ugy tudod megoldani, hogyha a programoddal lemásoltatod saját magát, adsz neki egy nevet, és beleirod amit beleszeretnél irni, majd elinditod a másik programból.
konkrétan : Program.EXE -> Kiment valamit, majd elmenti magát Program1.Exe néven, és beirja a Program1.EXE-be azt amit szretnél, majd elinditja a Program1.EXE-t.
A Program1.Exe kitörli a Program.EXE-t.
Elég bonyolultnak tünik, de sajnos szerintem csak igy lehet megoldani, mivel futó process-t nem tudsz irni csak olvasni.
Sok sikert.
Üdv.
Ui.:
Egyébként mi a konkrét feladat ? Nem lehet máshogy megoldani ?
Szia.
Az megoldás-e, ha azt a két fájl reurce-ként van az EXE-ben ?
Vagy úgy kell az Exe mögé rakni (másolni) ?
A második megoldás esetén :
El kell késziteni az EXE programot. Megirni a Kimentő rutint is.
A programban felvenni Kettő vagy Három longint tipusú változót és értéket is adni neki. (pl POZ1 - ezek lesznek a két fájl poziciói : Első fájl kezdete, Vége, illetve Második Fájl kezdete vége.) (Ha stringként veszed fel a poziciókat akkor hexa editorral módosithatod análkül, hogy a ujra kellene a progit forditani : Pozstr1:= '00123244'; - Ezt mármint a 00123244 megtalálod valahol az Exében, és csak át kell irni a jó számra.)
Leforditani az exe-t. Megnézni mekkora a mérete.
Ezt most beirni a POZ1 változóba ujra leforditani az ExEt.
Most a következő parancsal hozzáadni az első fájlt :
copy /b Prognev.exe+elsőfaljneve.kit Prognev.exe
Megnézni a méretet, beirni a POZ2 változóba, ujra forditani az EXE-t, hozzátennia második filét is a következő képpen :
copy /b Prognev.exe+elsőfile.kit+másodikfile.kit Prognev.exe
A mostani méretet is be lehet irni a harmadik poz változóba, de ez nem fontos mert a program méretét megtudod határozni igy megvan a poz3 értéke.
Ennek a három változónak a segitségével ki tudod menteni a két fájlt. (plusz még tudnod kell a fájlok neveit és utvonalát).
Az első megoldásra itt egy rutin, de googléban rákeresel a resource kimentése vagy angolul save szavakra és válogathatsz a rutinok közül :
SaveResource ('RESURCEID',UTVONALFILENEV);
Procedure SaveResource (ResurceId,Filenev:String);
Var ResurceStream1 : TResourceStream ;
Filestream1 : TFileStream;
Begin
ResurceStream1:=TResourceStream.Create(hInstance,ResurceId,RT_RCDATA);
try
Filestream1:=TFileStream.Create(Filenev,fmCreate) ;
try
Filestream1.CopyFrom(ResurceStream1,0) ;
finally
Filestream1.Free;
end;
finally
ResurceStream1.Free;
end;
End ;
Elismerem a második megoldás egy kicsit bonyolult, de ez is müködik.
Sok sikert.
Üdv.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!