Kertokaapas jos satutte tietämään miten luetaan hiiren vasemman napin tilaa, että onko pohjassa vai ei. Systeemin pitäisi sitten toimia vaikka klikkailisikin formin ulkopuolelle, eli MouseDown ei sovellu tähän.
Nyt ei heti tule muuta konstia mieleen, kuin SetWindowsHookEx (WH_MOUSE). Tällöin sinun täytyy myös tehdä DLL joka vastaanottaa nuo viestit. En sitten tiedä onnistuuko VB:llä tavallisten, puhtaiden DLL:ien teko...
Eipä silti, DLL:n ei todellakaan tarvitse olla iso, joten sen voi vääntää C:llä, C++:lla tai assemblyllä nekin, jotka eivät em. kielistä paljoa tiedä. Tai ehkä joku ystävällinen sielu suostuu sellaisen vääntämään jos oikein kauniisti pyydät ;-)
Minkähänlaista ohjelmaa olet tekemässä, jos saa udella?
Ohjelmalla voi nauhoittaa hiiren liikkeitä ja ohjelma myös pystyy liikuttelemaan hiirtä nauhoituksen mukaan. En ainakaan ole keksinyt mitään kovin järkevää käyttöä tälle ohjelmalle, mutta aivan kokeiluksi sen vain teen.
Alkoi tämä minuakin kiinostaa sen verran, että kyhäsin asmilla pienen koukutus-DLL:n joka lähettää saadut tiedot Delphillä tehtyyn ohjelmaan.
Minulla on vain ongelma. Miten käytän tuota SetWindowsHookExiä? Se ensimmäinen parametri nyt tietysti on WH_MOUSE ja viimeinen 0 mutta ne keskimmäiset? Mistä minä ne tempaisen?
lainaus:
En sitten tiedä onnistuuko VB:llä tavallisten, puhtaiden DLL:ien teko...
Ei onnistu. VB tekee vaan niitä omia "ActiveX DLL":iänsä.
Hmm.. sain sen toimimaan jotenkuten, vaikkakin se ohjelma näyttää vain ja ainoastaan klikkaukset ja nekin vain tuosa ohjelmassa.
Jännää... en osaa tehdä DLL :ää asmilla tai Delphillä ja C:llä taas osaan mutten osaa kääntää sitä...
Keksin muuten vaihtoehtoisen ratkaisutavan:
Katsoo timerillä säännöllisin väliajoin hiiren sijainnin käyttäen GetCursorPos-funktioita, katso https://www.ohjelmointiputka.net/koodivinkit/
Ratkaisu ei välttämättä ole kauhean tarkka.
GetCursorPos ja SetCursorPos toimivat hyvin, mutta tällöin ei ole mahdollisuutta hiiren painallusten nappaamiseen tai simuloimiseen.
Olen jo tehnyt ohjelman valmiiksi, siinä näppäimistöltä tietty nappi toimii hiiren nappina.
Joo. Minäkin sain sen hiiren koukuttajani toimimaan (paitsi Delphissä, mutta kaikissa muissa ohjelmissa kyllä)
Muistinkin, että myös GetAsyncKeyState-funktiolla voidaan tarkkailla hiiren nappeja, tähän tyyliin:
Private Sub t_Timer() Dim lp As POINTAPI GetCursorPos lp x = lp.x y = lp.y If GetAsyncKeyState(1) Then l.Text = "true" Else l.Text = "false" 'VK_LBUTTON If GetAsyncKeyState(4) Then m.Text = "true" Else m.Text = "false" 'VK_MBUTTON If GetAsyncKeyState(2) Then r.Text = "true" Else r.Text = "false" 'VK_RBUTTON End Sub
Timerin intervallin ollessa kymmenisen millisekuntia päästään jo melko hyvään tulokseen.
Täytyykin kokeilla tuota...
Aihe on jo aika vanha, joten et voi enää vastata siihen.