| |

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 |
  |
|
Neu! sevDTA 3.0 Pro 
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. 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
|
|