Avatar billede thenegotiator Nybegynder
12. september 2003 - 15:13 Der er 5 kommentarer og
1 løsning

Musseklik ved tryk på knap

Hey!!

Jeg er ved at lave nogle små forsøg, og mangler derfor en kode.. Koden skal kunne lave et musseklik ved tryk på en knap (fx. Ctrl-tasten). Musseklikket skal være det sted, hvor musen er placeret... Altså man flytter musseknappen fra selve musen, hen til fx Ctrl-tasten.

På forhånd tak!
Avatar billede sjh Nybegynder
12. september 2003 - 15:38 #1
'----------------------------------------- Form1 -----------------------------------------
' CTRL = 1 Klik
' SHIFT = Dobleklik
'-----------------------------------------------------------------------------------------
Option Explicit

Private Declare Function GetTickCount Lib "kernel32" () 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 Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4

Private blnLoopRunning As Boolean

Public Sub TheLoop()
Const LoopHastighed As Long = 400 'Hastighed på Loop
Static TickCount As Long
Static LastTickCount As Long
  Do While blnLoopRunning
    TickCount = GetTickCount()
      If TickCount - LastTickCount > LoopHastighed Then
      LastTickCount = TickCount
        If GetAsyncKeyState(vbKeyControl) Then '1 Klik
          mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
        End If
        If GetAsyncKeyState(vbKeyShift) Then 'Dobleklik
          mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
          DoEvents
          mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
        End If
      End If
    DoEvents
  Loop
End Sub

Private Sub Form_Activate()
  blnLoopRunning = True
  TheLoop
End Sub

Private Sub Form_Unload(Cancel As Integer)
  blnLoopRunning = False
End Sub
'----------------------------------------- Form1 -----------------------------------------
Avatar billede m_skau Nybegynder
12. september 2003 - 15:46 #2
Eller uden apikald:

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
ShiftDown = (Shift And vbCtrlMask) > 0
    If ShiftDown Then
        Label1.Caption = "der er trykket på Command1"
    End If
    Form1.SetFocus
End Sub

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Command1.SetFocus
End Sub

Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Command2.SetFocus
End Sub

Private Sub Command2_KeyDown(KeyCode As Integer, Shift As Integer)
ShiftDown = (Shift And vbCtrlMask) > 0
    If ShiftDown Then
        Label1.Caption = "der er trykket på Command2"
    End If
    Form1.SetFocus
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Form1.SetFocus
End Sub
Avatar billede m_skau Nybegynder
12. september 2003 - 15:49 #3
Øh, setfocus på formen virker ikke. I stedet skal man lave en ctrl, hvor visible er false, og alle de steder der står "form1.setfocus" skrive navnet på denne nye ctrl .setfocus
Avatar billede thenegotiator Nybegynder
12. september 2003 - 15:55 #4
takker for hurtigt svar !!
Avatar billede sjh Nybegynder
12. september 2003 - 15:56 #5
selv tak
Avatar billede thenegotiator Nybegynder
12. september 2003 - 16:00 #6
:D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester