Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sendkeys-Befehl für rechte Maustaste

Sendkeys-Befehl für rechte Maustaste
20.03.2008 16:25:00
Marek
Hallo zusammen,
kann man via Sendkeys die rechte Maustaste/das Kontextmenu eingeben?
Das wäre sehr hilfreich.
Vielen Dank im Voraus!
MfG
Marek

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sendkeys-Befehl für rechte Maustaste
20.03.2008 16:29:17
Rudi
Hallo,
verstehe ich nicht.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Sendkeys-Befehl für rechte Maustaste
20.03.2008 16:31:39
Marek
ich möchte über sendkeys in einem externen programm das kontextmenu aktivieren.
ist das möglich?
gruß
Marek

AW: Sendkeys-Befehl für rechte Maustaste
20.03.2008 16:39:35
Rudi
Hallo,
der Rechtsklick ist kein sendbarer Tastenanschlag.
Alle sendbaren Tasten findest du in der Hilfe.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Sendkeys-Befehl für rechte Maustaste
20.03.2008 19:16:00
Herbert
Hi,
das geht mit Bordmitteln nicht, dazu sind Windows-API erforderlich.
mfg Herbert

AW: Sendkeys-Befehl für rechte Maustaste
20.03.2008 19:38:25
Volti
Hallo Marek,
wie meine Vorgänger schon sagten, geht das nicht mit einfachen Mitteln und schon gar nicht mit Sendkey.
Die rechte Maustaste ist ja auch kein Key.
Tastenanschläge und Maussimulationen lassen sich einfach mit den API-Funktionen mouse_event und keybd_event realisieren.
Hier ein Beispiel für den mouse_event:

Private Const MOUSEEVENTF_MOVE = &H1        ' mouse move
Private Const MOUSEEVENTF_LEFTDOWN = &H2    ' left button down
Private Const MOUSEEVENTF_LEFTUP = &H4      ' left button up
Private Const MOUSEEVENTF_RIGHTDOWN = &H8   ' right button down
Private Const MOUSEEVENTF_RIGHTUP = &H10    ' right button up
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' middle button down
Private Const MOUSEEVENTF_MIDDLEUP = &H40   ' middle button up
Private Const MOUSEEVENTF_WHEEL = &H800     ' wheel button rolled
Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move
Declare Sub mouse_event Lib "user32.dll" (ByVal dwFlags As Long, _
ByVal dx As Long, ByVal dy As Long, _
ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Sub Mouseevent()
'Rechtsklick an Position xPos,yPos
Dim xPos As Integer, yPos As Integer
xPos=100 : yPos=150
mouse_event MOUSEEVENTF_RIGHTDOWN, xPos, yPos, 0, 0
mouse_event MOUSEEVENTF_RIGHTUP, xPos, yPos, 0, 0
End Sub


Bei dieser Methode kannst Du den Rechtsklick jedoch nicht "senden", sondern nur an der betreffenden Position auf dem darunterliegenden Foregroundwindow ausführen.
Das bedeutet, um in anderen Fenstern Mausaktionen per mouse_event durchzuführen, müsstet Du die zuerst aktivieren, sozusagen den Focus geben.
PS:Die weitere Möglichkeit über Mouse-Messages lassich hier mal außen vor. Das ist nicht so einfach.
viele Grüße aus Hessen
Karl-Heinz

Anzeige
AW: Sendkeys-Befehl für rechte Maustaste
20.03.2008 19:54:00
Volti
Hi,
hier noch mal verbessert.

Private Const MOUSEEVENTF_MOVE = &H1        ' mouse move
Private Const MOUSEEVENTF_LEFTDOWN = &H2    ' left btn down
Private Const MOUSEEVENTF_LEFTUP = &H4      ' left btn up
Private Const MOUSEEVENTF_RIGHTDOWN = &H8   ' right btn down
Private Const MOUSEEVENTF_RIGHTUP = &H10    ' right btn up
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' mid btn dn
Private Const MOUSEEVENTF_MIDDLEUP = &H40   ' middle btn up
Private Const MOUSEEVENTF_WHEEL = &H800     ' wheel btn
Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ' move
Private Declare Function SetCursorPos Lib "user32" (ByVal _
X As Long, ByVal Y As Long) As Long
Private Declare Sub mouse_event Lib "user32.dll" (ByVal  _
dwFlags As Long, _
ByVal dx As Long, ByVal dy As Long, _
ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Sub Mouseevent()
'Rechtsklick an Position Posi
Dim xPos As Integer, yPos As Integer
xPos = 300: yPos = 300
SetCursorPos xPos, yPos
mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
End Sub


Gruß KH

Anzeige
AW: Sendkeys-Befehl für rechte Maustaste
20.03.2008 23:30:44
Herbert
Hi,
MouseEventEx ist angesagt, mouse_event ist lange out!
mfg Herbert

AW: Sendkeys-Befehl für rechte Maustaste
21.03.2008 10:04:00
Nepumuk
Hallo Herbert,
da wäre ich dir wirklich dankbar, wenn du mir verräts, wie ich eine C++ Klasse in VB einsetzen kann.
@ Volti,
du musst das nicht in zwei Befehle auftrennen. Das geht auch so:
mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
Gruß
Nepumuk

AW: Sendkeys-Befehl für rechte Maustaste
21.03.2008 10:25:00
Volti
Hallo,
@Herbert:
Danke für den Hinweis. Aber ich wollte schon fragen, welchen Mehrwert diese Function bringen soll. Natürlich habe ich gerade nach der neuen Funktion geguckt( wollen ja auf dem neuesten Stand sein), werde aber weder bei MS noch bei den Declares meiner Hauptprogrammiersprache fündig, und die sind meistens auf dem neuesten Stand.
Meine vorgeschlagene Version funktioniert auf jeden Fall immer noch bestens in meinen Anwendungen.
@Nepumuk:
Danke für den Tipp. Den werde ich bei künftigen Projekten berücksichtigen.
Aber im Zuge meiner Recherche zu Herberts Vorschlag bin ich auf

sendinput

gestoßen, der bei MS gegenüber

mouse_event

empfohlen wird.
Dafür habe ich auch passende Declares gefunden.
Habe Artikel dazu noch nicht weiter durchgelesen.
Weißt Du da auch was darüber? Bringt ein Wechsel was?
viel Grüße
KH

Anzeige
AW: Sendkeys-Befehl für rechte Maustaste
25.03.2008 07:15:00
Marek
Guten Morgen zusammen,
hoffe ihr hatte schöne Feiertage!
Vielen Dank für die Hinweise, werde mich sobald wie möglich damit auseinandersetzen. Rückmeldung folgt dann.
Gruß
Marek!

AW: Sendkeys-Befehl für rechte Maustaste
25.03.2008 11:37:47
Marek
Frage noch offen, will keinen neuen Thread öffnen.

AW: Sendkeys-Befehl für rechte Maustaste
25.03.2008 09:36:00
Marek
Hallo KH,
mit der Maustaste bin ich weitergekommen, Danke!
Anschließend soll über Sendkeys eine Auswahl getroffen werden, was auch klappt. Der letzte Schritt soll einen Kopiervorgang starten, der normalerweise mit "Enter" ausgelöst wird. Mit sendkeys stürzt das Programm leider ab. Woran kann das liegen?
Wenn ich das Makro einen Schritt vor dem "Enter" stoppe und dann manuell "Enter" betätige, funktioniert der Vorgang. Der kopierte Inhalt sollte in der Zwischenablage landen, um anschließend in Excel eingefügt zu werden.
MfG
Marek
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige