Tesko pitanje - program koji oponasa tastaturu

Angel_

Početnik
Poruka
15
Jel zna neko da li postoji neki program u kome moze da se zadaju komande u obliku teksta u nekom njegovom prozoru, na primer u ASCII kodu (da bi mogle da funkcionisu strelice, enter, esc, itd) i kad ga lupis da krene da radi, da on to izvrsi to kao da je covek to upravo iskucao na tastaturi i olaksa mi zivot
Npr, uneses mu putanju nekog drugog programa, isprogramiras kako ce da se krece strelicama i enterom, sta gde da upise i onda izadje i njega.
Mislim konkretno na jedan program u Visual C-u o kome nemam pojima kako je pisan, vec mi je palo na pamet da ga prevarim nekim drugim programom.
I koliko bi to bilo tesko za koriscenje jednom prosecnom (glupom) korisniku?
 
bojan p:
Malo konfuzno, ali da vidim da li sam shvatio problem. Hoćeš iz programa A koji tražiš da li postoji da upravljaš programom B, tako što ćeš komande upisati u program A, a onda će on da ih pošalje programu B?
Program B prima komande iskljucivo sa tastature.
Da li bi program A mogao da simulira rad tastature i da mu se isprogramira: sad ukupcaj C:\{putanja do programa B}, sad pritisni Enter, (zato mi je pao na pamet ASCII kod), tako da sto se programa B tice, to mu ja tog trenutka kucam na tastaturi?
Sta mislis?

Nesto sam cuo od jednog programera, on je to nazvao neki MAKRO, kao moglo bi tako.
Ja to ni na koji nacin ne bi povezivao sa programom B (niti bi znao, bilo bi previse komplikovano), samo sa tastaturom, prosto kao da je tastatura to iskucala, a program B bi to prihvatio?

Ako bi mi to tako proradilo onda bih imao vise vremena da se borim za mir u svetu, ugrozene vrapce, zabe, zmije i sve ostalo... :)
 
tab503:
cekaj
Ti u stvari hoces da nacrtas algoritam a da on sam kompajlira to u C kod???
Nece da moze :lol:
E sad ako sam u pravu ja ne vidim sta je tebi problem iz algoritma da napravis kod? To je obicno kuckanje (naravno, znanje programskog jezika se podrazumeva) :P
Ne, ja bih koristio program koji bi samo uticao na tastaturu, a time i na sve ostalo.
Ja bih mu sazvakao sta treba kad da generise kao tastatura i da on to uradi.
Samo, niti znam da li to moze tako da funkcionise (mada sve nesto mislim da bi moglo), niti kako se zove program pa da ga trazim negde po netu.

Jednostavno, kao sto moze da se simulira da je CD u CD ROM-u preko DAEMONT-a, da li moze tako da se simuira kucanje po tastaturi i da to svi ostali programi prihvate?

Ne znam koliko je to tacno, cuo sam da neke nove fensi tastature imaju neke svoje programe koje nesto slicno rade.
 
Izvini ali ja tebe uopste ne razumem.
Ne razumem. Kako bi mu to "sazvakao"
Daj konkretan primer sta bi ukucao u program A a sta bi program B trebao da uradi. Ako ti je lakse napravi u slikama.
Ne kapiram te. Ako ti njemy vec napises sta treba da uradi, sta zapravo hoces da program uradi? Da program sam generise programski kod?
Ne shvatam sta mislis pod simuliranjem rada tastaure? Sta da se upisuje ako ti vec upises?
JA sam debelo :shock:
 
tab503:
Izvini ali ja tebe uopste ne razumem.
Ne razumem. Kako bi mu to "sazvakao"
Daj konkretan primer sta bi ukucao u program A a sta bi program B trebao da uradi. Ako ti je lakse napravi u slikama.
Ne kapiram te. Ako ti njemy vec napises sta treba da uradi, sta zapravo hoces da program uradi? Da program sam generise programski kod?
Ne shvatam sta mislis pod simuliranjem rada tastaure? Sta da se upisuje ako ti vec upises?
JA sam debelo :shock:
Moj konkretni problem je sledeci:
Imam neki program za knjigovodstvo iz 90-te koji je mnogo glup i tera me da na 100 mesta po 100 puta upisujem neke iste gluposti.
Takodje neke stvari moram da radim mimo programa u excelu, pa da to stampam i prekucavam.
Ja bi sve to mogao mnogo lakse da odradim u Windows programima, racunanjem u Delphi-ju, citanjem Fine Readerom itd.. i sve to pretvorim u neki tekst koji bi sadrzao tacno koju tipku na tastaturi treba pritisnuti kada (ustvari mi samo trebaju strelice, slova brojeri, Enter, Esc i F10) da bi mi na primer napravio izvod, odnosno da napravim sablon u kome bih samo menjao promenljive vrednosti.
Copy-Paste u prozor programa koji bi simulirao kucanje tastature, i kazem mu ISKUCAJ
Program koji trazim bi mi to preneo u moj budjavi program tako sto bi radio kao tastatura, a ja bi mogao da radim u Delphi-ju, tamo izracunam sta mi treba, napravim smernice i ubacim promanljive vrednosti, onda iskopiram i ubacim u taj program koji trazim i on to sve ubaci u program za knjigovodstvo.
Nije to toliko komplikovano, potreban mi je neki medju-program da moze da ubacuje stvari u program u Visual C-u preko tastature.
Kapiras?
Treba samo da nadjem takav program i da vidim kako radi, ali nemam pojma gde da ga trazim i kako se zove.
 
Angel_:
Moj konkretni problem je sledeci:
Imam neki program za knjigovodstvo iz 90-te koji je mnogo glup i tera me da na 100 mesta po 100 puta upisujem neke iste gluposti.
Takodje neke stvari moram da radim mimo programa u excelu, pa da to stampam i prekucavam.
Ja bi sve to mogao mnogo lakse da odradim u Windows programima, racunanjem u Delphi-ju, citanjem Fine Readerom itd.. i sve to pretvorim u neki tekst koji bi sadrzao tacno koju tipku na tastaturi treba pritisnuti kada (ustvari mi samo trebaju strelice, slova brojeri, Enter, Esc i F10) da bi mi na primer napravio izvod, odnosno da napravim sablon u kome bih samo menjao promenljive vrednosti.
Copy-Paste u prozor programa koji bi simulirao kucanje tastature, i kazem mu ISKUCAJ
Program koji trazim bi mi to preneo u moj budjavi program tako sto bi radio kao tastatura, a ja bi mogao da radim u Delphi-ju, tamo izracunam sta mi treba, napravim smernice i ubacim promanljive vrednosti, onda iskopiram i ubacim u taj program koji trazim i on to sve ubaci u program za knjigovodstvo.
Nije to toliko komplikovano, potreban mi je neki medju-program da moze da ubacuje stvari u program u Visual C-u preko tastature.
Kapiras?
Treba samo da nadjem takav program i da vidim kako radi, ali nemam pojma gde da ga trazim i kako se zove.
Koliko je meni jasno (ako mi je ista ovde jasno) je da tu ustvari figurisu barem nekoliko problema:
1. Taj "budjavi" program iz 90-te, je radjen u DOS-u?
2. "Budjavi" program pre svega bi trebao da bude "svestan" da "osluskuje" tastaturu i da se ponasa kao da neko pritiska tastere. Makroi tu malo mogu pomoci ako program nije "svestan" okruzenja i da u njemu mozda ima neki makro koji treba "saslusati"
3. Nijedan porogram koji nije svestan okoline (znaci ne "osluskuje" je) ne mozes naterati da misli da ti sedis i kucas a ustvari neki drugi program simulira otkucaje na tastaturi i "podmece" njemu. Prosto zbog toga sto je program interaktivan i ocekuje odredjene otlucane tastere u tacno odredjenom momentu. Dakle stoji i ceka tebe i tek kad se pritisne neki taster (najcesce "enter") smatra da je dobio sve podatke i opet ce te nesto pitaiti i cekati odgovor.
4. Sve i da uspes (a ne mozes tako i tim programom) da poodmetnes "budjavom" simuliranje tastature, neces to i zbog logike moci. Zamisli samo da te na primer pita da uneses sifru artikla a za neke artikle ces imati na primer dve cene a za neke jednu pa treba sad da te opita i za jednu ili dve cene. Kako da simuliras otkucaje na tastaturi za jedan a kako za drugi artikal?
5. Ima toga jos...

To sto ti hoces bi bilo lkepo ali ne ide tako. Da to tako moze, da se bilo kom porgramu moze podmetnuti otlucavanje na tastaturi, nastao bi haos u svakom smislu.

Generalno i da skratim pricu, da ne trazis dalje:
Ako program nije dizajniran da "osluskuje" okolinu pa i pririsak tastature ili misa, nema sanse da napravbis bilo kakav makro ili da mu "podmetnes" tastaturu.
Posto je pogram iz 90-tih, to sigurno ne ume. A i noviji programi, mogu biti napravljeni i juce, ako nije programer dizajnirao da "osluskuje" dogadjaje iz vana, nema sanse.
 
codemaker:
1. Taj "budjavi" program iz 90-te, je radjen u DOS-u?
Mislim da program nije iz DOS-a, ne izgleda kao DOS, ali ne prepoznaje misa, ima oko 10MB, pokrece ce na exe fajl i koristi neki program TAME da ne bi 100% okupirao procesor

codemaker:
Ako program nije dizajniran da "osluskuje" okolinu pa i pririsak tastature ili misa, nema sanse da napravbis bilo kakav makro ili da mu "podmetnes" tastaturu.
Posto je pogram iz 90-tih, to sigurno ne ume. A i noviji programi, mogu biti napravljeni i juce, ako nije programer dizajnirao da "osluskuje" dogadjaje iz vana, nema sanse.

Jel moze to nekako da se resi, da ne znas neku foru kako da ga nateram da osluskuje okolinu? Na primer nekom drugom aplikacijom koja bi mogla ga natera?
Hvala u svakom slucaju, vidim da poznajes materiju
 
Angel_:
Mislim da program nije iz DOS-a, ne izgleda kao DOS, ali ne prepoznaje misa, ima oko 10MB, pokrece ce na exe fajl i koristi neki program TAME da ne bi 100% okupirao procesor
Pa TAME upravo i jeste program koji se koristi da DOS programe pustas pod windowsom. A to sto kazes da ti ne lici na DOS upravo i jeste zbog TAME-a jer on "cini" da program izgleda kao u win okruzenju i ako je to obican DOS program, Cista kozmetika.
Angel_:
Jel moze to nekako da se resi, da ne znas neku foru kako da ga nateram da osluskuje okolinu? Na primer nekom drugom aplikacijom koja bi mogla ga natera?
Hvala u svakom slucaju, vidim da poznajes materiju
Ajde razmisli sam. Ti hoces program koji ce naterati drugi program da radi ono za sta taj drugi program nije programiran. Ajde reci da li ti mislis da je to realno.

Generalno razumem tvoj problem, narocito sto sam pre par godina u jednoj firmi sefu racunvodstva trebao da pripremim nov kompjuter koji je stigao u firmu da koristi upravo neki kao tvoj program koji radi iz DOS-a (koji je prethodno radio na P1 ili 486 vec sam zaboravio sta su imali ranije) jer su za njega imali licencu a nije im se kupovao nov pa sam bas TAME koristio da bi sve profunkcionisalo.
Iskreno. Mislim da ces ili morati da nagovoris vlasnika da se otvori za nov program ili da cutis i trpis. Ono sta ti hoces jeste lepo osmisljeno ali po mom misljenju neizvodljivo u praksi.
 
Angel_:
Mislim da program nije iz DOS-a, ne izgleda kao DOS, ali ne prepoznaje misa, ima oko 10MB, pokrece ce na exe fajl i koristi neki program TAME da ne bi 100% okupirao procesor



Jel moze to nekako da se resi, da ne znas neku foru kako da ga nateram da osluskuje okolinu? Na primer nekom drugom aplikacijom koja bi mogla ga natera?
Hvala u svakom slucaju, vidim da poznajes materiju
- Sudeci po tome da je pisan 90. godine, nema mnogo verovatnoce da je u Windows okruzenju, osim ako nije pisan za windows 3.01
- Da znam odgovor na ovo drugo pitanje, sada ne bih kuckao ovde sa tobom, vec bih sedeo negde na Bahamima i puckao havanske cigare a dve prelepe dame biu mahale nojevim precima kraj mene sve nutkajuci me raznoraznim djakonima.... :)
 
codemaker:
- Sudeci po tome da je pisan 90. godine, nema mnogo verovatnoce da je u Windows okruzenju, osim ako nije pisan za windows 3.01
- Da znam odgovor na ovo drugo pitanje, sada ne bih kuckao ovde sa tobom, vec bih sedeo negde na Bahamima i puckao havanske cigare a dve prelepe dame biu mahale nojevim precima kraj mene sve nutkajuci me raznoraznim djakonima.... :)
A da te ne zaboli stomak od tolikog nutkanja? Da ne pominjem one njihove tropske bolesti.... Veruj mi, bolje ti je ovde u Srbiji :)

Dobro, jos jedno pitanje, pa ako i to ne moze, lepo prodam kompjuter, ostavim samo kabal o koji cu da se obesim ! I ne pokusavaj da me odgovoris, vec sam se resio.

Ako to ne moze da se resi na nivou softvera bez izmene budjavog programa, teoretski, da li moze da se resi na nivou hardvera, na primer nekom boljom tastaturom koja moze da pamti i da generise signale u neko odredjeno vreme. I to bi mogla da bude opcija. Takva tastatura bi mozda radila preko USB-a, da li bi program u DOS-u citao takvu tastaturu, i opet da li bi tako mogao da ga za*ebem?
 
Ala ste vi odmakli u diskusiji... Nisam baš razumeo to oko "osluškivanja", ali ako je program pisan da radi u DOS-u, onda sigurno "osluškuje" tastaturu. Pomenuta API funkcija SendInput služi da bi se nekom programu prosledio ono što je uneto na ulazu, dakle otkucani tasteri na tastaturi i pomeranja miša i pritskanje dugmića na njemu. Da li je to zaista uneto na ulazu ili je to neki program generisao, program kome je to namenjeno ne zna.

Ono što je problem što ne postoji način da se jednostavno proveri da li je program prihvatio i obradio ulaz tako da je spreman za sledeću komandu. Neki programi jednostavno ignorišu ulaz dok rade, tako da kada stignu ponovo u stanje da očekuju neku komandu korisnika prvo isprazne sve do tada pristigle komande. Iz tog razloga i ako je teoretski moguće napraviti program koji će upravljati drugim programom u praksi to nije ni lako ni jednostavno.
 
Ima tu jos gomila drugih problema, pocev od tehnickih koje si pomenuo, pa do logickih. Kod unosa podataka, moze se naci milion razlicitih kombinacija i situacija, gde bi trebalo, prema unetom podatku porgram da odluci sta dalje. Zamisli samo da je recimo nakon unosa nekog podatka odradjena neka kalkulacija i da recimo neki podataka za tekucu godinu ne moze biti veci od 1000, a to u momentu unosa ne znas.... Kreiramo dakle sekvencu unosa, i kad dodje do takvog kriticnog podatka, idemo dalje,m a ustvari bi trebalo da napisemo u skripti reagovanje na "prekoracenje" podatka na primer...
Da ne nabrajam.

A sama cinjenica da u zavisnosti od programa i vrste alata nije uvek moguce "poturiti" simulaciju pritiska na tastatguru, jer neki programi prosto ne obracaju paznju na "environment" na isti nacin...

A sve i da moze, izrada takvog programa bi daleko nadmasila cenu izrade novog programa :)

Daklem, covek ce ipak morati da se "besi"... :(
 
Nisam sada hteo da doajem na sve ovo i logičke porbleme, ali naravno da ima i njih. Da, ako se tako priđe problemu, a to je jedini pravi i siguran način da će sve raditi kako treba, onda je verovatno lakše i jednostavnije napisati novi program.

Ono što relativno jednostavno može da se uradi je da se određena sekvenca karaktera prosledi programu i da se podešavanjem pauze između slanja dva karaktera (komande) napravi da program zaista i prihvati karakter (komandu), pod uslovom da ne dođe do neke greške. Sve ostalo je praktično ne isplativo.
 
NEsto sam o tome razmisljao danas. Pre svega, ne znam kako bi prosledio tu sekvencu karaktera programu a da bas TAJ program na sekvencu reaguje. Hipoteticka situacija je da se
- startuje "budjavi" program
- startuje neki program/skripta koji ce generisati sekvencu karaktera
E sad se postavlja pitanje, kako i kuda tu sekvencu karaktera poslati? Kako je "usmeriti" bas tom budjavom programu? AKo je neki drugi program aktivan, kakva je garancija da nece taj drugi program odgovoriti na sekvcencu, a ne budjavi?
Ne mogu da zamislim logiku kako bih aktivnom budjavom programu poslao sekvencu karaktera a da samo on i nijedan drugi program reaguje. Da ne pominjem da ne znam cime bi tu sekvencu generisao i kuda i kako je poslao.
Ovo me vec zanima cisto sto kazu "na akademskom novou" jer je problem kao takav svakako zanimljiv.
Ovde sada govorim samo o tehnickom delu a ne o logickom.
 
Codemakeru, odma' da ti kazem, od besenja nema nista ako je tacno da 'ako je program pisan da radi u DOS-u, onda sigurno "osluškuje" tastaturu' i 'Da li je to zaista uneto na ulazu ili je to neki program generisao, program kome je to namenjeno ne zna'
Nece biti tih logickih problema, osim sto nece moci to da se proverava, zato sto bi ono sto mu ja dam da radi bilo veoma, veoma predvidivo, ne rade se kalkulacije tako kako si ti zamislio.
Obavezno bi morale da postoje pauze izmedju sekvenci, jer ovom programu za knjigovodstvo ponekad stvarno treba neko vreme da svari ono sto je dobio iako imam dobar komp.
Ako bi, sto se svih ostalih programa tice, to funkcionisalo kao da je od tastature, onda nema problema ni za ovo tvoje zadnje pitanje, jer bi mogao da startujem budjavi program preko Start-Run-...-Enter, to moze da se uradi sa tastature.
Potrazicu neku gotovu aplikaciju koja bi valjda trebalo da ima tu pauzu izmedju sekvenci.
Sta ti mislis gde bi ja to mogao da trazim? Treba da trazim nesto sto je povezano sa API funkcijom SendInput
 
codemaker:
NEsto sam o tome razmisljao danas. Pre svega, ne znam kako bi prosledio tu sekvencu karaktera programu a da bas TAJ program na sekvencu reaguje. Hipoteticka situacija je da se
- startuje "budjavi" program
- startuje neki program/skripta koji ce generisati sekvencu karaktera
E sad se postavlja pitanje, kako i kuda tu sekvencu karaktera poslati? Kako je "usmeriti" bas tom budjavom programu? AKo je neki drugi program aktivan, kakva je garancija da nece taj drugi program odgovoriti na sekvcencu, a ne budjavi?
Ne mogu da zamislim logiku kako bih aktivnom budjavom programu poslao sekvencu karaktera a da samo on i nijedan drugi program reaguje. Da ne pominjem da ne znam cime bi tu sekvencu generisao i kuda i kako je poslao.
Ovo me vec zanima cisto sto kazu "na akademskom novou" jer je problem kao takav svakako zanimljiv.
Ovde sada govorim samo o tehnickom delu a ne o logickom.
Uopšte nije problem proslediti sekvencu tačno nekoj aplikaciji, dakle baš tom programu koji hoćemo da kontrolišemo. Kontrlni program može da zna koja je to aplikacija tako što će sam startovati "buđavi" program koji treba da kontroliše ili će ga naći u listi pokrenutih programa

Usmeravanje sekvence konkretnom programu je lako ostvariti, jer pre slanja sekvence jednostavno kažeš da je aktivan "buđavi" program, pošalješ sekvencu i onda vratiš da je aktivan program onaj koji je bio pre ovoga mešanja u interne stvari OS-a. Sekvenca može da se unese na više načina, ali najjednostavniji je da se to radi u programu koji kontroliše "budjavog". Naravno da bi sekvenca imala smisla mora se znati koju skevecnu "buđavi" razume. Osnovni problem je da se posle slanja sekvence "buđavi" program vrati u neko podrazumevano stanje, na primer početni meni, i sve sekvence snimati uz tu pretpostavku jer onda bilo koja od njih može da se iskoristi u bilo kom trenutku.

Ovo je isključivo tehnički deo.
 
Procitao sam nesto o API funkciji SendInput, pa rekoh da vas pitam jel moze ona da se pozove iz Delphi 7? Mozda bi to ubacivanje moglo da se odradi iz Delphija, da ne trazim neki drugi program.
Ako Delphi moze da koristi tu funkciju, tu bi mogao da mu ubacujem tacne sekvence, neke tajmere itd.. Koliko je to komplikovano?
 

Back
Top