Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB6] Välilyönti

Sivun loppuun

Kulma [24.03.2006 16:43:25]

#

Miten saan että mun ohjelma klikkaa välilyönti-näppäintä?
SendKeysillä ei pysty.

Freeze [25.03.2006 18:03:00]

#

Laita jotenkin niin että:

Keycode = VbKeySpace

sooda [25.03.2006 18:20:34]

#

Jaa miten niin ei pysty? Ihan hyvinhän se sitä simuloi. ([nus]ei siis fyysisesti klikkaa[/nus] ;p)

Kulma [26.03.2006 11:18:32]

#

sooda kirjoitti:

Jaa miten niin ei pysty? Ihan hyvinhän se sitä simuloi. ([nus]ei siis fyysisesti klikkaa[/nus] ;p)

VB väittää että "Invalid procedure... jne.", kun kirjoitan SendKeys "{SPACE}"

Freeze kirjoitti:

Laita jotenkin niin että:

Keycode = VbKeySpace

Mitä toi meinaa?

Freeze [26.03.2006 13:58:00]

#

onkohan sulla olemassakaan siinä koko välilyöntinäppäintä?

KeyAscii = VbKeySpace

ja

KeyCode = VbKeySpace

noilla mulla toimii

setä [26.03.2006 16:37:40]

#

Kirjoita se näin: SendKeys " "

Metabolix [26.03.2006 17:17:32]

#

Freeze taitaa neuvoa sinnikkäästi keybd_event-funktion käyttöä. Siitä löytyy haulla ohjeita, jos se kiinnostaa.

Phix [26.03.2006 19:01:12]

#

Kokeilkaas SendKeys "{BACKSPACE}" mulla ainankin toimi kun laitoin text1_changeen, niin ei voinut kirjoittaa mitään.
EDIT: Hups se olikin välilyönti mitä tässä etsittiin. Luulin, että backspace.

Kulma [27.03.2006 17:04:26]

#

Freeze kirjoitti:

onkohan sulla olemassakaan siinä koko välilyöntinäppäintä?

KeyAscii = VbKeySpace

ja

KeyCode = VbKeySpace

noilla mulla toimii

joo-o. Mutta mitä sen eteen pitää laittaa? Ei toimi noin pelkästään.

Freeze [27.03.2006 17:27:45]

#

pistä KeyPressin subiin..

Blaze [27.03.2006 19:24:37]

#

Freeze on pihalla kuin pikkulintu :)

Nyt on kyse näppäinpainallusten lähettämisestä toiselle ohjelmalle, ei niiden vastaanottamisesta.

Mitä pikaisesti MSDN:stä katsastin, spacelle ei ole omaa aaltosulkunotaatiota, joten luulisin ihan välilyönnin toimivan, kuten yllä on ehdotettukin.

Freeze [27.03.2006 20:42:32]

#

Uppista.. Unohdinkin jo että mistä oli kyse :D

Lumi-ukkeli [30.03.2006 21:43:15]

#

Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
Const VK_O = 79
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub Form_KeyPress(KeyAscii As Integer)
    'Print the key on the form
    Me.Print Chr$(KeyAscii);
End Sub
Private Sub Form_Paint()
    'KPD-Team 2000
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'Clear the form
    Me.Cls
    keybd_event VK_H, 0, 0, 0   ' press H
    keybd_event VK_H, 0, KEYEVENTF_KEYUP, 0   ' release H
    keybd_event VK_E, 0, 0, 0  ' press E
    keybd_event VK_E, 0, KEYEVENTF_KEYUP, 0  ' release E
    keybd_event VK_L, 0, 0, 0  ' press L
    keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0  ' release L
    keybd_event VK_L, 0, 0, 0  ' press L
    keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0  ' release L
    keybd_event VK_O, 0, 0, 0  ' press O
    keybd_event VK_O, 0, KEYEVENTF_KEYUP, 0  ' release O
End Sub

Tuossa on esimerkkikoodi haettuna osoitteesta http://www.allapi.net

Kulma [31.03.2006 14:33:28]

#

joo-o. Mutta miten saan että klikkaa VÄLILYÖNTIÄ?

setä [01.04.2006 13:56:29]

#

Tuollahan oli jo:
SendKeys " "
Onko näössä vai lukutaidossa vikaa?

Kulma [04.04.2006 08:19:54]

#

SendKeys " ":ssä se kirjoittaa " ", mutta haluaisin että klikkaa välilyöntiä.

BadSource [04.04.2006 09:59:42]

#

Sooda lähentelikin jo välimerkkejä, joten jatketaan samoilla linjoilla. Välilyöntiä ei voi [nus]klikata[/nus] kooditse. Klikkausta voidaan simuloida kooditse tuolla SendKeys " " -komennolla. Tuo " " on juuri välilyönti, eli mitä noiden lainausmerkkien välissä on.

Toinen tapa on tuo Lumi-Ukkelin esittämä tapa käyttää keybd_event -API:a.

'Simuloidaan välilyöntiä lähettämällä [k]a A[/k] sinne mikä nyt sattuu olemaankin aktiivisena
'KEYEVENTF_KEYUP:n ja keybd_event-funktion esittelyt Lumi-ukkelin koodista
keybd_event vbKeyA, 0, 0, 0   ' painetaan a-kirjain pohjaan
keybd_event vbKeyA, 0, KEYEVENTF_KEYUP, 0   ' vapautetaan a
keybd_event vbKeySpace, 0, 0, 0   ' painetaan Space pohjaan
keybd_event vbKeySpace, 0, KEYEVENTF_KEYUP, 0   ' vapautetaan Space
keybd_event vbKeyShift, 0, 0, 0   ' painetaan Shift pohjaan
keybd_event vbKeyA, 0, 0, 0   ' painetaan a pohjaan
keybd_event vbKeyA, 0, KEYEVENTF_KEYUP, 0   ' vapautetaan a
keybd_event vbKeyShift, 0, KEYEVENTF_KEYUP, 0   ' vapautetaan Shift

Jos kumpikaan noista ei muka toimi, niin kannattaa tarkistaa minne nuo komennot on suunnattu, eli onko oikea ikkuna, objekti tms. aktiivisena ennen komentojen lähettämistä.


Sivun alkuun

Vastaus

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

Tietoa sivustosta