Przechwytywanie strumienia: aplikacja - plik

0

Koledzy,
mam do rozgryzienia zagadnienie, które może okazac się nie do realizacji. No ale może jednak.
W czym rzecz, jest aplikacja np. A.EXE, która po uruchomieniu pobiera dane z pliku B.TXT.
Rzecz w tym, że chcę napisać program, który wepnie się pomiędzy B.TXT oraz A.EXE.
A właściwie to wystarczy aby wpiął się tak aby wszelkie odwołania w systemie do pliku B.TXT przechwytywał mój programik i odpowiadał tym co ja chcę a nie tym co jest w pliku - defacto pliku może nie być lub plik może być pusty.

Czyli np. mam na dysku plik JULKA.TXT, nawet pusty. I jak go próbuje otworzyć to system podstawia mój strumień danych z mojego programu a nie z pliku.

Czyli coś jakby plikiem JULKA.TXT była moja aplikacja.

Nie wiem na ile zrozumiale opisałem zadanie.


Spodziewam się, że będzie trzeba dynamicznie coś modyfikować aby system operacyjny zmieniał strumień i zamiast z pliku pobierał go z mojej aplikacji.

Ważny jest tylko odczyt.
Zapis danych nie będzie realizowany tą drogą, acz kolwiek jeśłi da się przejąć też i zapis to będzie też dobrze.

Pozdrawiam
Arkadiusz.

0

Czy mozesz modyfikowac A.EXE lub czy chociaz wiesz, jak jest napisany? Jesli program moze pobierac dane ze standardowego wejscia, a nie koniecznie z okreslonego pliku, bedzie Ci duzo latwej.

0
Szczawik napisał(a)

Czy mozesz modyfikowac A.EXE lub czy chociaz wiesz, jak jest napisany? Jesli program moze pobierac dane ze standardowego wejscia, a nie koniecznie z okreslonego pliku, bedzie Ci duzo latwej.

Witaj.
Dzięki za odzew.

Nie mam wpływu na A.EXE. Jest to binarka i tyle.
Przejżałem binaria i trochę się dowiedziałem.

sądząc po tym co znalazłem w kodzie.....
C:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\ostream.h
to wiemy nawet gdzie był program, w którym pisał.

Wiemy :) nawet gdzie leżały jego pliki projektu
D:(wycięte)\projects\work(wyciete)\trunk\source\GUIFormMain.cpp

Znalazłem również wpisy sugerujące na metody łączenia sięz plikami

std::basic_string<char,std::char_traits<char>,std::allocator<char> >
std::basic_ostream<char,std::char_traits<char> >::sentry
std::basic_filebuf<char,std::char_traits<char> >
std::basic_fstream<char,std::char_traits<char> >
std::basic_streambuf<char,std::char_traits<char> >

ciekawi mnie wpis
stem::DelphiInterfaceControls::IDockManager
:)

Tyle wiem.
Nie zmienia to faktu jak zmusić Windows'a aby A.EXE myślało, że czyta B.TXT a naprawdę dane były z mojej aplikacji.

Ewentualnie trzeba by było zamodelować środowisko aplikacją C.EXE, która uruchomi w swoim wnętrzu A.EXE i dzięki temu przechwyci żądania czytanai z B.TXT, którego wówczas w ogóle nie musi być fizycznie.

Pozdrawiam

0
Szczawik napisał(a)

Jesli program moze pobierac dane ze standardowego wejscia, a nie koniecznie z okreslonego pliku, bedzie Ci duzo latwej.

Niestety ma wszytą nazwę pliku.
Jedna zaleta, że jest wszyta otwartym tekstem.
Mam 9 znaków do dyspozycji.
Nie ma zdefiniowanej ścieżki - bo domyślnie A.EXE i B.TXT sa w tym samym katalogu.
Zatem mam czyste 9 znaków do dyspozycji.

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