Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Näppäimen pitäminen alhaalla

Short Php [11.03.2008 18:26:34]

#

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}

JussiR [11.03.2008 18:57:20]

#

Short Php kirjoitti:

iten saa ohjelman painamaan ylänuolinäppäintä. Ei toimi {up}

Kokeile {uparrow}

TsaTsaTsaa [11.03.2008 19:08:58]

#

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.

Newb [11.03.2008 19:31:25]

#

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.

Short Php [13.03.2008 15:45:12]

#

Miten tämä käytännössä toimii. En löytänyt mitään.

JussiR [13.03.2008 18:21:03]

#

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

JussiR [13.03.2008 20:25:49]

#

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.

Vastaus

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

Tietoa sivustosta