Vb 2008
Tiedän että koodilla SendKeys.Send("d")
saa visual basicin painamaan näppäintä, mutta onko mahdollista että näppäimen painaminen jatkuu määrätyn ajan (esim. 2 sekuntia)
Ja kysyn vielä, miten saa ohjelman painamaan ylänuolinäppäintä. Ei toimi {up}
Short Php kirjoitti:
iten saa ohjelman painamaan ylänuolinäppäintä. Ei toimi {up}
Kokeile {uparrow}
Veikkaamiseksi menee, mutta olisiko VB:ssä olemassa semmoisetkin metodit kuin SendKeyDown ja SendKeyUp (jotka siis lähettää tiedon siitä, että nappi painettu alas ja päästetty irti)? Eli ensin annat komennon SendKeyDown ja sitten parin sekunnin päästä SendKeyUp.
Short Php kirjoitti:
Vb 2008
Ja kysyn vielä, miten saa ohjelman painamaan ylänuolinäppäintä. Ei toimi {up}
Kyllä toi {UP} pitäis toimii.
TsaTsaTsaa kirjoitti:
Veikkaamiseksi menee, mutta olisiko VB:ssä olemassa semmoisetkin metodit kuin SendKeyDown ja SendKeyUp (jotka siis lähettää tiedon siitä, että nappi painettu alas ja päästetty irti)? Eli ensin annat komennon SendKeyDown ja sitten parin sekunnin päästä SendKeyUp.
Tollasta ei oo, mut tutustu SendMessage API:in. Haku auttaa.
Miten tämä käytännössä toimii. En löytänyt mitään.
Katso keyb_event ja tää:
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const WM_SETTEXT = &HC Private Sub Command1_Click() Dim sText As String Dim hwndEdit As Long hwndEdit = FindWindowEx(FindWindowEx(0, 0, "Notepad", vbNullString), 0, "Edit", vbNullString) If hwndEdit Then sText = "hello" Call SendMessage(hwndEdit, WM_SETTEXT, 255, ByVal sText) End If End Sub
http://msdn2.microsoft.com/en-us/library/ms646304.aspx
Ai niin mähän oon tehnytki funktion joka pitää nuolinäppäimiä alhallla halutun ajan. Odotas..
Ole hyvä
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 Declare Function timeGetTime Lib "winmm.dll" () As Long Private Const KEYEVENTF_EXTENDEDKEY As Long = &H1 Private Const KEYEVENTF_KEYUP As Long = &H2 Private Const VK_RIGHT As Long = &H27 Private Const vk_down As Long = &H28 Private Const vk_up As Long = &H26 Private Const VK_LEfT = &H25 Sub DownArrow(time As Long) keybd_event &H28, 0, 0, 0 Wait time keybd_event &H28, 0, KEYEVENTF_KEYUP, 0 End Sub Sub UpArrow(time As Long) keybd_event &H26, 0, 0, 0 Wait time keybd_event &H26, 0, KEYEVENTF_KEYUP, 0 End Sub Sub LeftArrow(time As Long) keybd_event &H25, 0, 0, 0 Wait time keybd_event &H25, 0, KEYEVENTF_KEYUP, 0 End Sub Sub RightArrow(time As Long) keybd_event &H27, 0, 0, 0 Wait time keybd_event &H27, 0, KEYEVENTF_KEYUP, 0 End Sub Private Sub Wait(TimeOut As Long) Dim TimeNow As Long TimeNow = timeGetTime() Do DoEvents Loop While TimeNow + TimeOut > timeGetTime() End Sub
Tuo on siis VB6 koodia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.