|
| |

VB.NET - Fortgeschrittene| Problem 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 |
  |
|
Neu! sevCoolbar 3.0 
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access 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 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
| |
|
Copyright ©2000-2025 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
|
|