| |
| In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.
Hinweis: Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden! | Fragen zu Tipps & Tricks und Workshops im vb@rchivRe: Alternative zur SendKeys-Anweisung | | | Autor: NoRoutine | Datum: 23.05.14 22:55 |
| Hallo,
interessant, wie aktuell ein 2002 verfaßter Beitrag auch nach 12 Jahren noch ist.
Für die Veröffentlichung kann ich mich jedenfalls nur bedanken, da ich sonst ziemlich aufgeschmissen gewesen wäre. Funktionsbibliotheken sind für mich terra incognita.
Mein Problem ist, daß ich geschützten Code in Excel-Formularen pflegen muß. Blöd genug, daß in Anwenderdateien überhaupt Code enthalten ist, läßt sich aber nicht vermeiden, da die Formulare auf eine zentrale Datenbasis zugreifen.
Programmieren ist eigentlich eher mein Privatvergnügen, aber mit den Jahren habe ich doch eine Menge Erfahrungen gesammelt, die ich in meinem Job gerne einbringe. So wird Arbeit zu Spaß! Eine ganz neue Herausforderung ist, Anwendungen zu erstellen, die von Kollegen genutzt werden.
Im Wesentlichen arbeite ich mit den Möglichkeiten, die VBA in MS Office zur Verfügung stellt.
Wie eigentlich klar sein dürfte, bin ich an der mangelnden Zuverlässigkeit der Sendkeys-Anweisung gescheitert und bei der Suche nach Alternativen auf die hier veröffentlichte Lösung gestoßen.
Die rudimentäre Funktionalität hat mich gestört. So habe ich mir den Code genauer angesehen und festgestellt, daß die Grundlagen gut abgebildet werden, die erweiterten Funktionen aber nicht umgesetzt sind.
Da ich so nicht damit arbeiten konnte, lag es nahe, die fehlenden Teile zu ergänzen. Das Ergebnis möchte ich Euch nicht vorenthalten und so auch etwas zurückgeben.
Nach ausführlichen Tests gehe ich davon aus, daß die Funktionen wie erwartet arbeiten. Falls jemand Spaß an der Lösung hat und noch Verbesserungspotential entdecken sollte, wäre ich für ein Feedback dankbar.
So, hier kommt der Code. Der Ursprung dürfte klar erkennbar sein.
Die zu sendende Zeichenkette wird in der Variablen sText an SendKeyStr übergeben.
Georg
Option Explicit
' Required API-Declarations
Public Declare Sub keybd_event Lib "User32" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long) '
' Synthesize Keystroke
Private Declare Function VkKeyScan Lib "User32" _
Alias "VkKeyScanA" ( _
ByVal cChar As Byte) As Integer ' Translate
' Character into Virtual-Key Code and SHIFT State
Private Declare Function MapVirtualKey Lib "User32" _
Alias "MapVirtualKeyA" ( _
ByVal wCode As Long, _
ByVal wMapType As Long) As Long ' Translate
' Virtual-Key Code into Scan Code or Character Value
Public Const KEYEVENTF_KEYUP = &H2 ' Keystroke
' Flag for KeyUp
Private Const KEYEVENTF_EXTENDEDKEY = &H1 ' Keystroke
' Flag for Extended Key
' Virtual KeyCodes
Private Enum eVirtualKeyCode
VK_BAK = &H8
VK_TAB = &H9
VK_CLEAR = &HC
VK_RETURN = &HD
VK_SHIFT = &H10
VK_CONTROL = &H11
VK_MENU = &H12
VK_PAUSE = &H13
VK_CAPITAL = &H14
VK_ESCAPE = &H1B
VK_PRIOR = &H21
VK_NEXT = &H22
VK_END = &H23
VK_HOME = &H24
VK_LEFT = &H25
VK_UP = &H26
VK_RIGHT = &H27
VK_DOWN = &H28
VK_SELECT = &H29
VK_SNAPSHOT = &H2C ' Print Key
VK_INSERT = &H2D
VK_DELETE = &H2E
VK_HELP = &H2F
VK_F1 = &H70
VK_F2 = &H71
VK_F3 = &H72
VK_F4 = &H73
VK_F5 = &H74
VK_F6 = &H75
VK_F7 = &H76
VK_F8 = &H77
VK_F9 = &H78
VK_F10 = &H79
VK_F11 = &H7A
VK_F12 = &H7B
VK_F13 = &H7C
VK_F14 = &H7D
VK_F15 = &H7E
VK_F16 = &H7F
VK_NUMLOCK = &H90
VK_SCROLL = &H91
VK_WIN = &H5B ' Windows
' Key
VK_APPS = &H5D ' Key for
' Context Menu1
End Enum
Dim bShift As Boolean, bAlt As Boolean, bCtrl As Boolean ' Flags for
' Shift, Alt, Ctrl
Dim bShiftd As Boolean, bAltd As Boolean, bCtrld As Boolean ' Flags for
' KEYDOWN State of Control Keys
Dim bRound As Boolean, bCurly As Boolean ' Flags for
' Brackets
Dim SendKeyDebug As Boolean ' Flag for
' Debugging Uh, die Beschränkung der Zeilenlänge beeinträchtigt die Lesbarkeit des Codes etwas.
Das muß doch irgendwie gehen! | |
| Sie sind nicht angemeldet! Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|