Avatar billede anthex Nybegynder
22. februar 2006 - 22:22 Der er 7 kommentarer

"trænge ind" og hente info i et poker-program

Hej

Jeg har et spil poker på min computer. Det er en almindelig .exe fil man åbner for at komme ind i spillet, og selve spillet ligner et almindeligt spillebord, hvor kort og penge er animerede ikoner. Mit problem er at jeg skal have alle informationer fra spillet (hele tiden opdateret; kort, penge osv.) på skrift. I selve spillet får man kun informationerne igennem de ikoner af kort og penge man ser, som jo i virkeligheden bare er nogle pixels i et bitmap. Jeg tænkte at man under spillet kunne "trænge ind" i selve spillet, og derved hente informationerne på den måde. Jeg ved at det er et meget svært projekt, men det må jo kunne lade sig gøre. Håber nogen har nogle konstruktive idéer der kan bruges.

PS. Jeg er VB-kyndig, så vil helst kunne arbejde i VB, hvis nødvendigt.

på forhånd tak!
Avatar billede innercitydk Nybegynder
22. februar 2006 - 22:54 #1
Det er vist ikke helt lovligt! Det kan du med garanti ikke få hjælp til herinde. Du kan skrive til producenten og spørge om de, pretty please, vil sende dig source koden :D
Avatar billede anthex Nybegynder
22. februar 2006 - 23:43 #2
jeg er ikke ude på noget ulovligt. Vil bare opnå somehow at kunne følge spillet gennem text.  :)
Avatar billede innercitydk Nybegynder
23. februar 2006 - 07:28 #3
Det tror jeg gerne, men i samme øjeblik der ændres på programmet bliver det ulovligt :)
Avatar billede roenving Novice
25. februar 2006 - 20:50 #4
Det kan zq aldrig blive ulovligt at overvåge hvad et program gør på ens egen computer !o]

-- men hvis man laver reverse engineering, og udnytter det til noget, er det klart ulovligt, hvis det spredes ...

-- de aktuelle programdata står selvfølgelig et eller andet sted i den hukommelsesblok, som windows har tildelt programmet, og afhængig af funktions-måde står de måske også i en fil på harddisken eller evt. i registreringsdatabasen ...

-- men windows beskyttelsesmekanismer kan være en hård hund at komme udenom (selvom jeg ikke kender noget egentligt til det område, er jeg sikker på, at det er nogle af den slags forbedringer, M$ har lavet ved den måde, programmer kan få lov til at opføre sig på !-)
Avatar billede pidgeot Nybegynder
25. februar 2006 - 21:55 #5
Hvis Print Screen ellers virker som den burde, skulle det fint kunne lade sig gøre - i princippet er det jo ikke sværere end at sammenligne bestemte dele af et billede med små billeder af de ting du kigger efter, og se om de er identiske - det kan du eksempelvis gøre ved at gå igennem alle pixels inden for en bestemt region og sammenligne det med nogle små billeder af de ting du kigger efter, eller den mere effektive måde der går ud på at finde bestemte pixels i den region hvorfra du kan lave en entydig identificering.

Hvor svær opgaven bliver afhænger af hvordan de data du skal bruge bliver vist - kortene er jo nok altid på et fast sted, men tal kan være lidt sværere at få lavet, da du ikke ved hvor stort et område de fylder - dvs. du skal finde cifrene et af gangen, og ud fra det finde ud af hvor det næste er.

Mht. at få det opdateret konstant, kunne du lave en keyhook, så den tager billedet i udklipsholderen når du trykker Print Screen - omend det forudsætter den hook først kalder dit program EFTER billedet er taget, og den ikke i stedet overskriver billedtagningen eller kører inden billedet tages - i så fald skal du bruge en anden tast, så du tager billedet med Print Screen, og derefter sætter dit program i gang med eksempelvis Ctrl+F9.
Den løsning er dog ikke automatisk - skal den være det, kan du bruge en timer, der simulerer et tryk på Print Screen med et fast interval, for eksempel hvert 10. eller 20. sekund.
Avatar billede anthex Nybegynder
01. marts 2006 - 20:15 #6
Til pidgeot

Det er også den løsning jeg selv er kommet frem til vil være mest overskuelig. Jeg vil lave selve programmet i VB. Men jeg ved ikke helt om jeg skal tage et screenshot af hele skærmen, også derefter udklippe de områder der skal identificeres, eller om jeg skal lave det så den tager flere små screenshots af de områder der skal identificeres. Men jeg tror at det sidste kan lade sig gøre somehow med en kode i VB. Mht. til identifikation af de givende områder, har jeg ikke helt gennemskuet hvordan det er muligt i VB at analysere et bitmap (områderne havde jeg tænkt gemt som en bitmap), og bestemme at et givent områder f. eks. betyder "klør es", pga. det indeholder x antal sorte pixels.?
Avatar billede pidgeot Nybegynder
01. marts 2006 - 21:32 #7
Hvis du vil lave screenshots fra dit program, skal du have fat i Windows API-funktionen BitBlt. Det er uanset om du vil lave af hele skærmen, eller kun dele af den.
Vil du tage screenshottet manuelt med Print Screen, skal du dog i stedet have fat i en clipboard funktion.

For at analysere et bitmap, skal du tilgå de enkelte pixels. Du skal enten sammenligne alle pixels i en bestemt region, eller bruge den mere effektive løsning, hvor du kun kigger på de pixels der entydigt kan identificere det du kigger på. Det indebærer at du tager billeder af alle mulighederne, og finder ud af hvor de billeder adskiller sig fra hinanden.

Som et eksempel, lad os så sige at du har disse to billeder på 2x2 pixels (0=sort, 1=hvid):

01
10

og

01
11

For entydigt at kunne skelne mellem de to, finder du den pixel hvor de er forskellige - i dette tilfælde, den i nederste højre hjørne. Du kigger så på dens farve - hvis den er sort, er det det første billede der er korrekt, mens det er det andet billede der er korrekt hvis den er hvid.

Jeg vil i øvrigt foreslå dig at du går efter at identificere kortsættet selvstændigt fra værdien, da dette vil kræve mindre arbejde.

Inden du kommer alt for godt i gang, så husk lige at kontrollere du overhovedet kan tage screenshots inde fra programmet - tryk Print Screen mens spillet kører, og sæt det ind i Paint efter du har lukket det igen. Hvis det ser rigtigt ud der, burde intet være i vejen for at du kan lave dette program, i hvert fald ikke rent praktisk.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester