Miten saan että mun ohjelma klikkaa välilyönti-näppäintä?
SendKeysillä ei pysty.
Laita jotenkin niin että:
Keycode = VbKeySpace
Jaa miten niin ei pysty? Ihan hyvinhän se sitä simuloi. ([nus]ei siis fyysisesti klikkaa[/nus] ;p)
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?
onkohan sulla olemassakaan siinä koko välilyöntinäppäintä?
KeyAscii = VbKeySpace
ja
KeyCode = VbKeySpace
noilla mulla toimii
Kirjoita se näin: SendKeys " "
Freeze taitaa neuvoa sinnikkäästi keybd_event-funktion käyttöä. Siitä löytyy haulla ohjeita, jos se kiinnostaa.
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.
Freeze kirjoitti:
onkohan sulla olemassakaan siinä koko välilyöntinäppäintä?
KeyAscii = VbKeySpaceja
KeyCode = VbKeySpacenoilla mulla toimii
joo-o. Mutta mitä sen eteen pitää laittaa? Ei toimi noin pelkästään.
pistä KeyPressin subiin..
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.
Uppista.. Unohdinkin jo että mistä oli kyse :D
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
joo-o. Mutta miten saan että klikkaa VÄLILYÖNTIÄ?
Tuollahan oli jo:
SendKeys " "
Onko näössä vai lukutaidossa vikaa?
SendKeys " ":ssä se kirjoittaa " ", mutta haluaisin että klikkaa välilyöntiä.
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ä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.