Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB ja hiiren nappula

Sivun loppuun

Jogge [04.04.2003 13:46:12]

#

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.

thefox [04.04.2003 14:11:33]

#

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?

Jogge [04.04.2003 14:31:09]

#

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.

arcatan [04.04.2003 18:13:30]

#

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?

Blaze [04.04.2003 18:19:07]

#

lainaus:

En sitten tiedä onnistuuko VB:llä tavallisten, puhtaiden DLL:ien teko...

Ei onnistu. VB tekee vaan niitä omia "ActiveX DLL":iänsä.

arcatan [04.04.2003 18:33:41]

#

Hmm.. sain sen toimimaan jotenkuten, vaikkakin se ohjelma näyttää vain ja ainoastaan klikkaukset ja nekin vain tuosa ohjelmassa.

arcatan [05.04.2003 09:49:15]

#

Jännää... en osaa tehdä DLL :ää asmilla tai Delphillä ja C:llä taas osaan mutten osaa kääntää sitä...

arcatan [05.04.2003 16:33:17]

#

Keksin muuten vaihtoehtoisen ratkaisutavan:

Katsoo timerillä säännöllisin väliajoin hiiren sijainnin käyttäen GetCursorPos-funktioita, katso https://www.ohjelmointiputka.net/koodivinkit/23423-vb6-kursorin-koordinaatit

Ratkaisu ei välttämättä ole kauhean tarkka.

Antti Laaksonen [05.04.2003 19:24:30]

#

GetCursorPos ja SetCursorPos toimivat hyvin, mutta tällöin ei ole mahdollisuutta hiiren painallusten nappaamiseen tai simuloimiseen.

Jogge [05.04.2003 22:16:43]

#

Olen jo tehnyt ohjelman valmiiksi, siinä näppäimistöltä tietty nappi toimii hiiren nappina.

arcatan [06.04.2003 17:32:24]

#

Joo. Minäkin sain sen hiiren koukuttajani toimimaan (paitsi Delphissä, mutta kaikissa muissa ohjelmissa kyllä)

thefox [09.04.2003 10:36:01]

#

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.

Jogge [09.04.2003 20:01:05]

#

Täytyykin kokeilla tuota...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta