| |
VB.NET - FortgeschritteneProblem beim Starten der Bildschirmtastatur als Prozess unter Windows 8.1 | | | Autor: TEBE2015 | Datum: 25.02.15 14:33 |
| Hallo,
folgendes Problem :
Wenn ich unter Windows 8.1 64Bit die Bildschirmtastatur (egal ob osk.exe oder tabtip.exe) als neuen Prozess in VB.NET 2010/2013 starte und dann versuche, per Handle weitere Settings (z.B. Position, Fenstergröße) vorzunehmen, erhalte ich eine Fehlermeldung, dass der Prozess beendet wurde. Die Bildschirmtastatur wird jedoch korrekt angezeigt.
VB.NET Quellcode_1 :
Private Declare Function api_SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Sub Bildschirmtastatur starten
'Öffne "Bildschirmtastatur OSK" bzw. optional "Bildschirmtastatur TABTIP"
1: Dim ApplicationProcess = Process.Start("OSK")
' Warte auf Prozessleerlauf
2: ApplicationProcess.WaitForInputIdle()
' Erstelle Handle für aktuelles Bildschirmtastatur-Fenster
3: Dim ApplicationHandle = ApplicationProcess.MainWindowHandle
' Anpassen von Startposition & Fenstergröße
4: Call api_SetWindowPos(ApplicationHandle, 0, Me.Location.X + 50, Me.Location.Y + 500, 200, 100, 0)
' Warte auf Prozessleerlauf
5: ApplicationProcess.WaitForInputIdle()
End Sub
* Zeile 1 wird korrekt abgearbeitet, Bildschirmtastatur wird angezeigt
* Zeile 2 bricht mit besagter Fehlermeldung ab
Das Interessante dabei ist, dass dieser Quellcode unter Windows 7 64Bit absolut korrekt läuft.
Ebenfalls erstaunlich ist, dass wenn man auf obige Weise ein Editor-Fenster erzeugt (Notepad-Prozess),
alles auch unter Windows 8.1 64Bit funktioniert.
Nach einigen Tests habe ich noch Folgendes herausgefunden, was mich ebenfalls wundert :
Versucht man unter Windows 8.1 64Bit, im Programm nach Zeile1 die Prozess-ID zu bekommen
(mittels Dim AktPrcID = ApplicationProcess.Id),
erhält man eine ID - nur ist diese nicht mit der PID im Taskmanager des Prozesses "OSK" identisch.
Es scheint, als würde unter Windows 8.1 64Bit mein eigentlicher Bildschirmtastatur Prozess-Aufruf zwar erkannt, danach jedoch sofort beendet, um einen weiteren vom System initiierten Prozess zu starten, der dann aber natürlich eine völlig andere PID zugewiesen bekommt.
Und wieder : Unter Windows 7 64Bit funktioniert auch dieser Test mit der Prozess-ID völlig tadellos
(AktPrcID im Programm liefert exakt den PID-Wert wie auch der Taskmanager)
Was läuft hier bitte falsch ? | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere 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
|
|