vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

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 ?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Problem beim Starten der Bildschirmtastatur als Prozess unte...4.738TEBE201525.02.15 14:33
Re: Problem beim Starten der Bildschirmtastatur als Prozess ...3.173TEBE201505.03.15 13:00
Re: Problem beim Starten der Bildschirmtastatur als Prozess ...3.252GPM05.03.15 14:27

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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