amargolf@bst-systemtechnik.de

Visual Basic (VB6) ist nicht tot. Selbst Sendkeys funktioniert unter Windows 8

Visual Basic ist nach wie vor für die Pflege von älteren Windows Applikationen auf vielen Entwicklungsrechnern präsent. So auch bei uns. Mit dem aktuellen Servicepack 6 läuft es selbst unter Windows 8 64 Bit klaglos. Die Installation ist zwar nicht ganz trivial, aber es läuft zuverlässig wenn gewisse Einschränkungen beachtet werden. Nachdem ich nun auf Entwicklertreffen mehrfach auf die Problematik mit der Sendkeys Anweisung unter Windows 8 angesprochen wurde, hier mein Tipp um den

Run-time error ‘70’ Permission denied VB6 unter W7 und W8

zu unterbinden. Dieser Fehler tritt zuverlässig beim Verwenden der in Visual Basic implementierten SendKeys Anweisung auf.

Der durchaus häufig verwendete Befehl SendKeys „{Tab}“, True führt unweigerlich zu diesem Fehler unter Windows 7 und Windows 8. In unseren Projekten umgehen wir dieses unangenehme Verhalten des „neuen“ Windows Scripting Hosts mit einem Shell Object.

In einem globalen Modul wird zunächst

Global WshShell As Object

deklariert und anschließend mit

Set WshShell = CreateObject("WScript.Shell")

initialisiert.

Dananch kann im Projekt der Begierde wie gewohnt der SendKeys Befehl in leicht abgewandelter Form verwendet werden.

WshShell.SendKeys "{Tab}", True

Bringt den Tabulator wieder ins Spiel 🙂 .

Sollte Ihnen das Angebot gefallen, empfehlen Sie es gerne weiter.
Like Button, der nicht nach Hause telefoniert

10 Kommentare

  1. 21. August 2014 at 02:07

    Danke für den Tipp, Ich hatte schon immer ein Faible für automatische Fernsteuerung von Fremdprogrammen mit SendKeys

  2. Jens Altmark-Reply
    30. August 2014 at 02:21

    Ich danke auch für den Tipp, eine perfekte Lösung! Vielen Dank!

  3. none-Reply
    11. Januar 2015 at 14:19

    wenn man auf die Nutzung / Erstellung der externen Komponente verzichten möchte .. gibt es weiterhin die Möglichkeit das mit „internen“ Befehlen umzusetzen.
    Siehe auch:
    http://www.aboutvb.de/khw/artikel/khwstepfocus.htm

  4. 28. Januar 2015 at 21:13

    Ich verwende zur Vereinfachung der Umstellung und zur Gewährleistung 100% Kompatibilität eine Prozedur namens SendKeys.

    Wenn ich den Befehl
    Senkeys „{F9}“
    verwende, wird die VB-Prozedur „Sendkeys“ verwendet die nur WshShell verwendet, wenn die Betriebssystem Version >= Vista ist.

    Public Sub Sendkeys(Text$, Optional wait As Boolean = False)

    Static init As Boolean, IsIDEMinimumVista As Boolean, WshShell As Object

    ‚wrapper for Sendkeys which does not cause an Error 70 in the IDE under Windows Vista

    If Not init Then
    If GetOS() >= 6 Then ‚>=6 entspricht >= Vista
    IsIDEMinimumVista = True
    Set WshShell = CreateObject(„WScript.Shell“)
    WshShell.Sendkeys Text$, wait
    End If

    ‚MsgBox GetOS() & “ “ & IsIDEUnderVista
    init = True

    End If

    If IsIDEMinimumVista Then
    WshShell.Sendkeys Text$, wait
    Else
    VBA.Sendkeys Text$, wait
    End If

    End Sub

    Viel Spaß damit falls es jemand verwenden möchte! 🙂

  5. Detlev Schäfer-Reply
    2. August 2015 at 18:51

    Zu W8 kann ich nichts sagen, nie benutzt.
    Unter W7 habe ich über Jahre hinweg erfolgreich den SendKeys Befehl verwenden können, indem ich im Benutzkonto die Benachrichtigung über Änderungen am Computer auf „Nie benachrichtigen“ gestellt habe.
    Nun muss ich mich damit beschäftigen, wie man den Befehl unter W10 zum Laufen kriegt. Dabei werde ich sicher auch den hier genannten Tipp austesten – vielen Dank.

  6. Detlev Schäfer-Reply
    2. August 2015 at 19:22

    Hurra, die WshShell Variante funzt unter Windows 10 !!!

  7. Volker Dittrich-Reply
    27. November 2015 at 14:27

    Nach langem Suchen erfolgreich.
    Danke für das kurze, aber wirksame Script.

  8. Johannes-Reply
    20. Dezember 2017 at 21:14

    Seit Jahen suchte ich diese Lösung…….

    Es geht so einfach!

    Danke!

  9. Michael Klein-Reply
    18. April 2018 at 01:51

    Wissen ist Macht (z. B. über VB 5). Vielen Dank Arnold Margolf.

Schreiben sie einen Kommentar

Lösen sie folgende kleine Aufgabe zur Spamvermeidung *

#07A6D0#CCCCCC1
Wir benutzen Cookies um die Nutzerfreundlickeit der Webseite zu verbessen. Durch Deinen Besuch stimmst Du dem zu.