Hei,
olemme ystäväni kanssa törmänneet visaiseen pulmaan, johon ei ratkaisua tuntunut löytyvän mistään, vaikka käytiin läpi kaikki Java-saitit.
Yritämme rakentaa sovelluksen, joka automaattisesti syöttäisi tietoa netissä olevaan applettiin.
Siis hieman tarkemmin muotoiltuna:
1: On nettipalvelu, joka avaa sisäänkirjautumisen jälkeen appletin omassa ikkunassaan.
2: Sen sijaan, ettää hiirellä klikkaisimme ruutuja/syöttäisimme tekstiä kenttiin, ja lopuksi painaisimme "lähetä"-nappia, yritämme rakentaa ohjelman, joka syöttäisi haluamamme tiedot automaattisesti.
3: Suotavaa olisi, että ohjelma pystyisi jotenkin pitämään kirjaa myös siitä, millaisen vastauksen vastapuoli antaisi - eli onnistuiko syöttö haluamallamme tavalla.
Tähän on varmaan kaksi mahdollista lähestymistapaa. Karkeampi olisi yksinkertaisesti rakentaa joku makro, joka automaattisesti käy hiirellä klikkaamassa appletti-ikkunasta oikeaa kohtaa jne.
Kehittyneempi versio olisi jotenkin pystyä suoraan tietämään miten vastapuolen palvelin ja oma kone kommunikoivat keskenään, ja suoraan lähettää halutun tiedon sisältävät komennot. Tämä lienee varsin hankalaa ellei mahdotonta, koska tieto on vahvasti salattua. Niinpä tuo ensin mainittu menetelmä taitaa olla se, jota pitää käyttää.
Onko kellään mitään kokemusta tällaisten sovellusten rakentamisesta. Tai onko ideoita mistä kannattaisi kysyä tai etsiä tietoa. Kaikki vihjeet ja ideat ovat tervetulleita.
Käytämme javaa, mutta käytettävällä ohjelmointikielellä ei sinänsä ole mitään väliä, eli millä tahansa kielellä oleva ratkaisu olisi avuksi.
T
ddr
En usko että tämä Javalla varsinaisesti onnistuu, sillä ratkaisusta tulee mielestäni jokseenkin käyttöjärjestelmäkohtainen. Mille järjestelmälle tämä on tarkoitettu? Sen kyllä pitäisi onnistua ainakin Windowsille. Linuxille en ole ohjelmoinut, joten siitä en sano mitään.
Toisaalta, jos nettiin ei laittaisi Java-applettia, vaan PHP-skriptin, homma olisi mahdollisesti helpompi.
Tulikohan kysymyksen muotoilusta siltikin liian epäselvä...
Eli on kyse jo valmiiksi jossain netissä olevasta sovelluksesta, johon itsellä ei ole mahdollisuus vaikuttaa. Itse ollaan vaan ko sovelluksen/palveluksen käyttäjiä.
Windowsia käytetään, eli kysymys on kai lähinnä siitä, miten voisi ohjelmoida johonkin auki olevaan Windows-ikkunaan hiiren menemään johonkin määrättyyn kohtaan ja tekemään klikkauksen jne..
Ahaa! No ei sitä kannata tehdä niin että siirretään hiirtä, vaan pitää niinkuin etsiä tekstikentän Handle, ja sitten muuttaa sitä tekstiä. Tämän ei pitäisi olla kovin vaikeaa. Se onnistuu käyttämällä Windowsin API-funktioita kuten FindWindow ja GetDlgItem. Valitettavasti minä en tätä oikein osaa tehdä.
Luultavasti Ohjelmointiputkan porukoista fawkz osaisi sanoa...
Enpä ole varma, et javalla ei onnistu, kun ei liene javassa mahdollisuutta käytellä Win32API:a tai muuta vastaavaa..
Täytyy tietää ikkunan luokkanimi tai handle (tai vastaavaa, en ole lukenut Windows-ohjelmointia käsitteleviä oppaita) jotta voidaan päästä käsiksi tekstiin .. FindWindow palauttaa löydetyn ikkunan kahvan, ja tarvitsee parametreikseen luokkanimen (siihin voi laittaa tyhjän stringin vbNullString) ja ikkunan captionin (olisikohan joku otsikko) .. lisätietoa näistä https://www.ohjelmointiputka.net/keskustelu/1209-findwindowin-toiminnasta Kuten sanoin, en ole varma miten tuo onnistuu, mutta..
FindWindowilla jne ei kyllä tee tässä tapauksessa oikeastaan mitään. Java VM:ä kun ei käytä Windowsin standardikeinoja kontrolliensa hallintaan, piirtämiseen jne.
Itsellä ei kyllä tule muuta tapaa mieleen (toisaalta en ole asiaan sen kummemin perehtynytkään) kuin kursorin ohjelmallinen liikuttaminen jne.. mikä on sinänsä melkoinen purkkaratkaisu.
Jokatapauksessa, selville pitää saada missä kohtaa ruutua appletti-ikkuna on ja missä tekstiboksit ovat. Onko tämän appletti-ikkunan koko muutettavissa? Onko muita esteitä, vierityspalkit yms?
Eli siis haluatte syöttää tietoa suoraan johonkin olemassa olevan palvelunkirjaantumiseen?
Noh... ensinnäkin yleensä palveluntarjoajat eivät ole hirvittävän iloisia tuollaisista "väännöistä" ja siksipä tälläiset on estetty juuri käyttämällä sellaisia tekniikoita, että automaattikirjaantuminen ei onnistu.
En halua rohkaista ketään ryhtymään puuhaan, josta saattaa saada ikävyyksiä - muista että laki pätee internetissäkin ja tuollaisen softan jäljittäminen on suhteellisen helppoa.
Periaatteessa on kaksi tapaa käsitellä asiaa:
Tapa 1.
Mikäli appletti ottaa vastaan parametrejä - se voisi ottaa vastaan myös tabulaattorin ja linefeedin... ja siten laukaista tallennuksen, mikäli tabulaattorisiirto kentästä toiseen toimii.
Tapa 2.
Käyttöjärjestelmästä ja selaimesta riippumatonta koodinpätkää hiiren hallinnalle on vaikea ellei mahdoton löytää - etsisin ratkaisua ennemmin unohtamalla koko appletin ja yrittämällä ottaa selvää appletin tiedonsyötön rajapinnasta asiakas-palvelin tasolla, eli koska appletti pyörii SINUN koneellasi, se kommunikoi jollain tapaa (yleensä http-pyynnöin) palvelimen kanssa ja lähettää palvelimelle GET-pyyntöjä tiedon tallentamiseksi. Mitä sinun täytyy tehdä on tutkia mitä liikennettä appletti suorittaa - Tälläisiä ohjelmia löytyy freewarena jos osaa etsiä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.