Avatar billede nielsbkh Nybegynder
27. oktober 2003 - 10:49 Der er 12 kommentarer og
2 løsninger

Sendkey.. Shift + right mouse?

Jeg mangler kombinationen til sendkeys for shift + right mouse klik... Håber der hurtigt er en der kan give mig den. På forhånd tak.
Avatar billede stefanfuglsang Juniormester
27. oktober 2003 - 10:53 #1
I de fleste sammenhænge er shift+right det samme som shift+f10  - hjælper det?
Avatar billede stefanfuglsang Juniormester
27. oktober 2003 - 11:01 #2
Eller skulle følgende gøre noget lignende:
'Before you start this program, I suggest you save everything that wasn't saved yet.
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)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
Private Sub Form_Activate()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Do
        'Simulate a mouseclick on the cursor's position
        mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, cButt, dwEI
        DoEvents
    Loop
End Sub
Avatar billede nielsbkh Nybegynder
27. oktober 2003 - 12:09 #3
Jeg er ikke helt med i hvad der sker i din stefanfuglsang.. og shift+f10 kan jeg ikke få til at virke, hvad er den nøjagtige syntax?
Avatar billede stefanfuglsang Juniormester
27. oktober 2003 - 15:08 #4
Jeg er ikke sikker på at shift+f10 er det du ønsker? Syntaksen er Sendkeys "+{F10}".

mouse_event sender "muse-koder" ligesom sendkeys sender taster. Men kan vist ikke  bruge shift samtidig?
Avatar billede sjh Nybegynder
27. oktober 2003 - 19:50 #5
Vær opmærksom på, at højer-klik sker der hvor musen er.

'---------------------------------- Form1 ----------------------------------
Option Explicit

Private Const KEYEVENTF_KEYUP      As Long = &H2
Private Const VK_F10                As Long = &H79
Private Const VK_SHIFT              As Long = &H10

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
                                              ByVal bScan As Byte, _
                                              ByVal dwFlags As Long, _
                                              ByVal dwExtraInfo As Long)

Private Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Private Const MOUSEEVENTF_RIGHTUP  As Long = &H10

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 Sub Command1_Click()
  Call keybd_event(VK_SHIFT, 0&, 0&, 0&)  'SHIFT
  Call keybd_event(VK_F10, 0&, 0&, 0&)    'F10

  Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0&, 0&, 0&, 0&) 'RIGHT
  Call mouse_event(MOUSEEVENTF_RIGHTUP, 0&, 0&, 0&, 0&)  'RIGHT

  Call keybd_event(VK_F10, 0&, KEYEVENTF_KEYUP, 0&)    'F10
  Call keybd_event(VK_SHIFT, 0&, KEYEVENTF_KEYUP, 0&)  'SHIFT
End Sub
'---------------------------------- Form1 ----------------------------------
Avatar billede nielsbkh Nybegynder
28. oktober 2003 - 09:41 #6
Det er højre musetast jeg vil have.. Hvis ikke shift kan bruges er der så en kombination for ctrl+right mouse!! Jeg skal bruge den.. :-)
Avatar billede nielsbkh Nybegynder
28. oktober 2003 - 09:56 #7
Okay sjh, jeg er overhovedet ikke med med hensyn til hvad dit eksempel gør, og skal det bruges med en userform?? For jeg har ingen UserForm, jeg skal bruge det med et regneark.
Avatar billede sjh Nybegynder
28. oktober 2003 - 11:47 #8
Er det MSExcel.. ved ikke om man kan bruge vb i excel.. men ellers indsetter du bare det her hvor du aktiver din knap eller funktion


  Call keybd_event(VK_SHIFT, 0&, 0&, 0&)  'SHIFT
  Call keybd_event(VK_F10, 0&, 0&, 0&)    'F10
  Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0&, 0&, 0&, 0&) 'RIGHT
  Call mouse_event(MOUSEEVENTF_RIGHTUP, 0&, 0&, 0&, 0&)  'RIGHT
  Call keybd_event(VK_F10, 0&, KEYEVENTF_KEYUP, 0&)    'F10
  Call keybd_event(VK_SHIFT, 0&, KEYEVENTF_KEYUP, 0&)  'SHIFT


og det her i toppen:


Private Const KEYEVENTF_KEYUP      As Long = &H2
Private Const VK_F10                As Long = &H79
Private Const VK_SHIFT              As Long = &H10

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
                                              ByVal bScan As Byte, _
                                              ByVal dwFlags As Long, _
                                              ByVal dwExtraInfo As Long)

Private Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Private Const MOUSEEVENTF_RIGHTUP  As Long = &H10

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)
Avatar billede stefanfuglsang Juniormester
28. oktober 2003 - 12:28 #9
Det sidste ligner det rigtige, med et par rettelser:
de to linjer med
Call keybd_event(VK_F10 ...
skal fjernes, og jeg tror at denne skal komme til sidst:
Call mouse_event(MOUSEEVENTF_RIGHTUP, 0&, 0&, 0&, 0&)  'RIGHT
Avatar billede stefanfuglsang Juniormester
28. oktober 2003 - 12:32 #10
' Har lige testet, følgende virker fint:
' tildel f.eks. ctrl+q til makroen test()
' husk at virkningen afhænger af, hvilket vindue der har fokus.
Private Const KEYEVENTF_KEYUP      As Long = &H2
Private Const VK_F10                As Long = &H79
Private Const VK_SHIFT              As Long = &H10

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
                                              ByVal bScan As Byte, _
                                              ByVal dwFlags As Long, _
                                              ByVal dwExtraInfo As Long)

Private Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Private Const MOUSEEVENTF_RIGHTUP  As Long = &H10

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)
 
Sub test()
  Call keybd_event(VK_SHIFT, 0&, 0&, 0&)  'SHIFT
  Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0&, 0&, 0&, 0&) 'RIGHT
  Call keybd_event(VK_SHIFT, 0&, KEYEVENTF_KEYUP, 0&)  'SHIFT
  Call mouse_event(MOUSEEVENTF_RIGHTUP, 0&, 0&, 0&, 0&)  'RIGHT

End Sub
Avatar billede nielsbkh Nybegynder
28. oktober 2003 - 14:40 #11
Jeps, det virker.... hvad med hvis jeg ville bruge Ctrl, så er det Private Const VK_SHIFT              As Long = &H10
der skal ændres, men til hvad?
Avatar billede sjh Nybegynder
28. oktober 2003 - 14:42 #12
Private Const VK_CONTROL = &H11

http://www.vbarchiv.net/archiv/tipp_542.html
Avatar billede nielsbkh Nybegynder
28. oktober 2003 - 15:26 #13
Tak begge 2, har prøvet at dele pointene så ligelidt så muligt!
Avatar billede sjh Nybegynder
28. oktober 2003 - 15:30 #14
bare ok
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