V čem programovat ovládání aplikací ve windows – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

V čem programovat ovládání aplikací ve windows – C / C++ – Fórum – Programujte.comV čem programovat ovládání aplikací ve windows – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
qeton0
Duch
23. 11. 2013   #1
-
0
-

Dobrý den ,
chtěl bych simulovat "klikání" uživatele v různých programech. To znamená, že spustím svůj program, on si otevře potřebnou aplikaci, kde bude klikat myší podle mého algoritmu - měl by se rozhodovat podle změny v programu a být schopen rozpoznat číselné hodnoty a porovnat obrázky. Je to velice podobné automatickému testování. Nastává otázka v čem to naprogramovat? 

Děkuji moc za každou odpověď.

Nahlásit jako SPAM
IP: 83.240.23.–
Reklama
Reklama
Kowalsky950
Stálý člen
23. 11. 2013   #2
-
+1
-
Zajímavé

Když to píšeš do C++, tak bych to pravděpodobně dělal ve WinAPI. Ale bude to poměrně složité. Možná se zkus podívat po nějakém vyšším programovacím jazyku.
pozn. něco podobného jsem dělal v Javě, chtěl sjem simulovat stisk kláves...původně to mělo sloužit jako bot do jedné hry O:) Zjistil jsem, že to fungovalo např. v prohlížeči, nebo v souborech, ale v té hře to nefungovalo :(

Nahlásit jako SPAM
IP: 90.176.114.–
Matherz0
Newbie
24. 11. 2013   #3
-
+1
-
Zajímavé

Tady bude asi řeč o tzv. Hooking (Hookování) a reverzním inženýrstvý.

Pomocí té první metody můžeš zhotovit to klikání, a to tak že můžeš použít třeba DLL injekci. To znamená že do procesu tedy té tvé aplikace injekneš tvůj kod který by měl třeba simulovat klikání a to skrz kod v dll knihovně. Pak jednoduše můžeš simulovat kliknutí přes funkci Sendkeys(). Nebo je také možnost hooknout grafické rozhraní na kterém aplikace běží (Directx, OpenGL, možná i GDI++ ...). Jde o to že tyto rozhraní (API) poskytují vývojářův funkce které pak využívají v aplikaci, třeba taková funkce pro kliknutí myši se souřadnicemi. Je tedy možnost tuto funkci hooknout a poté ji volat přes jinou externí aplikaci či tedy DLLi. Na různých forech je mnoho příkladů s hookováním, ale i tyto pouhé jednoduché příklady dá někdy práci uvést do chodu.

S těma číselnýma hodnotama souvisí reverzní inženýrství. Jde o to že taková jakákoliv číselná hodnota je někde uložená v paměti na určitém místě v RAM. Takže ty musíš najít tu adresu kam se ta proměná uložuje. Tu adresu můžeš najít třeba s takovým Cheat Enginem. Jestli teda najdeš tu adresu možná to ještě není celý musíš totiž najít tzv. pointer, statickou adresu která má stálou adresu. Nějaké techniky typu ASLR se tomu snaží zabránit tím že adresy nejsou stálé. Musíš tedy najít offset adresy a s pomocí basse adresy zkalkulovat výslednou hledanou adresu. Pokud tedy najdeš zprávnou adresu pak už jí jenom vyčteš z aplikace a porovnáš s čím budeš chtít po vyhodnocení kodu třeba proběhne ten tvůj klik myše.

Stím obrázkem už nemáš šanci ani zdaleka leda že bys našel třeba proměnou určující typ obrázku. Ale to zůstaneš pořád u stejného problému jak to jen udělat, a nakonec stím sekneš.


Jakyk je nejideálnější C++, nejspíše i v C# by to šlo, nebo také v Delphi.

Reverzní inženýrství je metoda vyžadující opravdu perfektní znalost programování a jeho strukturu, tedy co se děje po kompilaci a spuštení aplikace a co se děje v paměti. Jak program pracuje s proměnými, adresy a volání funkcí. Hodně se tímto zabývají crackeři, hakeři  který pak tuto metodu uplatní třeba v cracku nebo v cheatu. Zkrátka jestli ani neumíš pořádně programovat raději se do toho ani nepouštěj, protože to vážně nemá cenu.

Snažil jsem se to nějak "stručně" objasnit a vysvětlit a to i pro ty které by to také zajímalo. Českých for zabývajícím se tímto moc neni, řekl bych že skoro žádná. Pokud by tě to doopravy zajímalo a chtěl bys to zkusit určitě najdeš nějaké návody v angličtině.

Ale já myslím že skončíš u prvního odstavce se čtením  :D.

(Gramatiky si nevšímejte ...)

Nahlásit jako SPAM
IP: 212.96.160.–
qeton0
Duch
24. 11. 2013   #4
-
0
-

Dekuji moc za vycerpavajici odpoved. Jako programator se povazuji za zacatecnika - ucil jsem se v pascalu, assembleru, C a asi nejvic jsem delal ve VBA. Je mi jasne ze to bude beh na dlouhou trat, proto jsem chtel hlavne nasmerovat na nejvhodnejsi programovaci jazyk a vyvojove prostredi abych po roce nezjistil "ze to proste nejde udelat". Co se tyce obrazku: jedna se o mnozinu 60 obrazku, jejich velikost bude velice mala (600 - 800 bajtu). Moje naivni predstava by byla obrazek "printScreenout" , orezat podle souradnic, ulozit do vhodneho formatu - cernobile a pak porovnat (binarni) kod.

Nahlásit jako SPAM
IP: 83.240.23.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 92 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý