Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB6] Hiirestä

Kulma [13.11.2005 17:38:20]

#

Miten saan että ohjelma tekee jotain jos se huomaa että hiiren oikeanpuoleinen nappula on pohjassa, muualla kuin formissa?

Blaze [13.11.2005 17:44:24]

#

GetAsyncKeyState-API lukee nimestään huolimatta myös hiirtä.

Meitsi [13.11.2005 17:52:09]

#

Blaze kirjoitti:

GetAsyncKeyState-API lukee nimestään huolimatta myös hiirtä.

Oho tuota en tiennyt minäkään :D

Kulma [13.11.2005 18:03:56]

#

Vähän tarkemmin? Miten saan että:

Private Sub Nappula_Timer()
If VK_LBUTTON = Pohjassa (vasen hiiren painike pohjassa) Then
'jotain
else
'jotain
end if
end sub

Blaze [13.11.2005 18:23:50]

#

Tietoa ko. funktiosta: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/getasynckeystate.asp
Näppäinkoodit: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/UserInput/VirtualKeyCodes.asp

(Gah, mitä osotteita -_-)

Käytännön käyttöesimerkkejä löytyy Putkastakin vaikka kuinka.

Kulma [13.11.2005 18:30:22]

#

Miks toi hiiri menee aina samaa vauhtia alaspäin vaikka tota AMsetupin text1.textiä muuttais?

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, _
ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Declare Function SetWindowPos& Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
Private Const MOUSEEVENTF_LEFTUP = &H4 ' left button up
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Const VK_ESCAPE = &H1B
Private Const VK_LBUTTON = &H1
Private Const VK_RBUTTON = &H2

Private Type POINTAPI
    x As Long
    y As Long
End Type



Private Sub Form_click()
Me.Hide
Call mouse_event(MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&)
Timer2.Enabled = True
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Timer1.Enabled = True
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Timer1.Enabled = False
End Sub

Private Sub Form_Paint()
  SetTransparent Me.hWnd, 1
End Sub

Sub SetTransparent(hWnd As Long, Transparent As Byte)
  Dim N As Long
  N = GetWindowLong(Me.hWnd, (-20)) Or &H80000
  SetWindowLong hWnd, (-20), N
  SetLayeredWindowAttributes hWnd, 0, Transparent, &H2
End Sub
Private Sub Form_Load()
App.TaskVisible = False
SetWindowPos Me.hWnd, -1, 0, 0, 0, 0, 3
End Sub

Private Sub Timer1_Timer()
    Dim kohta As POINTAPI, x As Long
    x = GetCursorPos(kohta)
    kohta.y = kohta.y + AMsetup.Text1.Text
    x = SetCursorPos(kohta.x, kohta.y)
End Sub

Private Sub Timer2_Timer()
Timer2.Enabled = False
Me.Show
End Sub

Private Sub Timer3_Timer()
If (GetAsyncKeyState(VK_LBUTTON)) Then
Timer1.Enabled = True
Else
Timer1.Enabled = False
End If
End Sub

Merri [13.11.2005 20:02:33]

#

Epäilys liikkuu vääränlaisten muuttujatyyppien yhdistämisestä. Kannattaa yleensä käyttää tiettyjä muuttujia tiukasti keskenään, esim. string on aivan eri asia kuin long. Joten:

kohta.y = kohta.y + CLng(Val(AMsetup.Text1.Text))

Vastaus

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

Tietoa sivustosta