» »

Zapisovanje vrednosti iz obstoječe aplikacije

Zapisovanje vrednosti iz obstoječe aplikacije

Neon Dei ::

Težko bi bolje naslovil temo, za morebitno nejasnost se pač opravičujem. Torej, na kratko, kar bi rad naredil je tole:
1. Imam aplikacijo, ki služi vodenju enega komercialnega stroja.
2. To aplikacijo je napisalo podjetje, ki stroj proizvaja, zato jaz nimam dostopa do izvorne kode.
3. V tej aplikaciji je eno polje, en label, ki prikazuje eno vrednost, ki jo aplikacija bere iz enega senzorja v stroju.
4. Aplikacija ne omogoča snemanja te vrednosti, ne omogoča nobenega exporta, ničesar. Samo prikazuje jo v tem labelu.
5. Jaz pa bi za namene mojega razkiskovalnega dela rabil potek te vrednosti v času v neki preprosti in berljivi obliki.

Kako se naj tega lotim?

1. Ali je možno brati vrednost tega labela iz druge aplikacije? Bi pač napisal neko preprosto Windows aplikacijo, ki gleda/bere in z neko frekvenco zapisuje to vrednost v datoteko. Ne najdem pravilnega Google search terma za kaj takšnega :).

2. Ali se da s kakšnim debuggerjem dostopati do te vrednosti in jo potem zapisovati?

3. Kakšna druga ideja?

Hvala!
"Honest disagreement is often a good sign of progress." -Mahatma Gandhi

Jean-Paul ::

Kot si že sam ugotovil, potrebuješ tak ali drugačen debugger. V Winsih imaš poseben API, ki omogoča branje/pisanje v naslovni prostor drugega procesa (poguglaj za ReadProcessMemory() in sodelavkami), v UNIX-u pa imaš za to ptrace().

Za začetek se lahko poigraš s kakšnim Cheat Enginom (npr. http://cheatengine.org)

misek ::

Jaz bi tole naredil nekako takole (pišem na pamet) z Windows API funkcijami: najprej bi zlistal vsa okna in dobil window handle hwnd od okna (FindWindowEx ), v katerem je ta labela. Nato bi z enim Spy programom (v Visual Studio-u je Spy++) poiskal to labelo in ugotovil, kako se sklicevati na njo. Nato pa bi z eno funkcijo direktno prebral vrednost te labele. To bi počel v zanki.
Podrobnosti bi moral preveriti.

blackbfm ::

Jaz sem pred par leti naredu program v delphiju, ki zna prebrat caption ter class od določene komponente (tam kjer imaš pač miškin kurzor) - v večini primerov lepo deluje. Če je res samo navaden label bi ga brez problema prebral..samo še kodo za shranjevanje te vrednosti bi mogu vrinit not in bi blo za silo. Če znaš delat z delphijem ti lahko pošljem source, ali pa če ti jaz naredim (ko bom imel čas :)) Lahko ti za začetek pošljem program da vidiš če zna prebrat to kar ti hočeš.

Neon Dei ::

OK, hvala vsem za odgovore! Mi je pomagao pri usmeritvi v pravo rešitev. Najprej sem doma sprogramiral podobno zadevo, kot jo je opisal misek, s FindWindow in FindWindowEx poišče label, nato pa pošlje WM_GETTEXT, da dobi text v labelu. Nato sem prišel v službo in ugotovil, da je izvorna aplikacija napisana v Borland Delphiju in mi ta pristop ne koristi skoraj nič. V Spy++ sem pogledal, pa nisem našel teksta tega labela, ki sem ga hotel prebrati.

Nato sem se lotil preiskovanja root folderja od same aplikacije in našel Remote Control Help, ki je bil skrit v eni od podmap. Opa! Zadeva podpira tako DDE (arhaično), kot tudi ActiveX in direktno komunikacijo prek RS232. Najenostavnješa se mi je zdela implementacija DDE komunikacije, za katero sem tudi takoj našel C# library. Od tu naprej je bilo vse več ali manj straight forward in program je bil spisan v malo več kot pol ure.

Najlepša hvala za pomoč!

Lep pozdrav!
"Honest disagreement is often a good sign of progress." -Mahatma Gandhi


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C# povezava forma in classa

Oddelek: Programiranje
172341 (1804) Miko55
»

kako narediti program ki bere drugi program

Oddelek: Programiranje
465754 (4067) imagodei
»

[Visual C#] posodabljanje polja

Oddelek: Programiranje
111646 (1466) iggy1
»

[.NET] vohunjenje za API klici

Oddelek: Programiranje
212705 (1186) t909
»

Ms access neke vrste auto number

Oddelek: Programiranje
171535 (1328) Fim

Več podobnih tem