Seite 1 von 1

Bildschirmtastatur OSK

Verfasst: Do, 03. Jan 2013 16:25
von mkersch
Hallo Forenmitglieder,

ist es möglich die Windows Bildschirmtatatur (OSK) mittels XBASE++ zu aktivieren und zu deaktivieren (Hintergrund/Vordergrund) . Evtl. möchte ich die Position der Tastatur noch bestimmen.


Ich möchte mittels Touch Monitor bestimmte Eingaben vornehmen. Dabei soll bei betätigen eines SLE die Tastatur an einer bestimmten Position aufgehen.
Ist dies machbar ?
Und wenn ja, wie ?

mfg
mkersch

Re: Bildschirmtastatur OSK

Verfasst: Do, 03. Jan 2013 17:34
von Tom
Wie das in VB geht, ist hier erklärt. Dürfte sich auch relativ leicht nach Xbase umsetzen lassen:

http://www.ms-office-forum.net/forum/sh ... p?t=221461

Du müsstest dann allerdings noch dafür sorgen, dass OSK ordentlich beendet wird.

Einfacher ist es, das selbst zu bauen. Geht schließlich nur um einen Haufen Buttons, die Buchstaben in den EditBuffer schubsen. Wenn Du das selbst gestaltest, kannst Du Größe, Position, Skalierung, Umfang und Verhalten selbst bestimmen. :wink:

Re: Bildschirmtastatur OSK

Verfasst: Do, 03. Jan 2013 18:48
von mkersch
Tom vielen Dank für die Antwort.

Bei einem anderen Projekt habe ich mir bereits eine Num-Eingabe (Dialog) selbst erstellt. Da bei diesem Projekt auch eine Texteingabe nötig ist,
wollte ich eben diesen Aufwand vermeiden und die Standard Bildschirmtastatur verwenden.

Wie es aussieht hat man mit einer selbsterstellten Eingabe die höchste Flexibilität.

mfg.
mkersch

Re: Bildschirmtastatur OSK

Verfasst: Mo, 07. Jan 2013 6:12
von AUGE_OHR
Tom hat geschrieben:Einfacher ist es, das selbst zu bauen. Geht schließlich nur um einen Haufen Buttons, die Buchstaben in den EditBuffer schubsen. Wenn Du das selbst gestaltest, kannst Du Größe, Position, Skalierung, Umfang und Verhalten selbst bestimmen. :wink:
naja der "Haufen" sind ja > 100 Buttons ... + 100 normale Icons ... + 100 "gedrückte" Icons ... und kann "nur" ASC() und kein DBCS.

wie der VB Artikel zeigt musst man zunächst mit der API FindWindowA() das Handle des OSK Dialog holen.
damit kannst man dann SW_HIDE / SW_SHOW, SetWindowPos() oder ein "re-Size" durchführen.
durch WM_QUIT kann man dann das externes OSK Fenster beenden.

Re: Bildschirmtastatur OSK

Verfasst: Mo, 25. Feb 2013 15:07
von Rudolf
Hallo Jimmy,
den Handle bekomme ich mit WildFindWindow( "On-Screen Keyboard"), ich glaube mit PostMessageA( nWnd, nwMsg, nwParam, nlParam) kann man dann das Fenster in den Hintergrund oder Vordergrund bringen oder verschieben. Gibt es ein Beispiel irgendwo dafür ?
Grüße
Rudolf

Re: Bildschirmtastatur OSK

Verfasst: Di, 26. Feb 2013 6:03
von AUGE_OHR
Rudolf hat geschrieben:, ich glaube mit PostMessageA( nWnd, nwMsg, nwParam, nlParam) kann man dann das Fenster in den Hintergrund oder Vordergrund bringen oder verschieben. Gibt es ein Beispiel irgendwo dafür ?

Code: Alles auswählen

#include "DLL.ch"

DLLFUNCTION ShowWindow( nHwnd, nCmdShow ) USING STDCALL FROM USER32.DLL
DLLFUNCTION BringWindowToTop( nHwnd ) USING STDCALL FROM USER32.DLL
DLLFUNCTION SetForegroundWindow( nHwnd ) USING STDCALL FROM USER32.DLL

Re: Bildschirmtastatur OSK

Verfasst: Di, 26. Feb 2013 9:02
von Rudolf
Hallo Jimmy,
danke für den Tip, jetzt muss ich nur noch die Position und Größe ändern können. Versuche es mit
DLLFUNCTION SetWindowPos(hWnd,nHWND,X,Y,cx,cy,uFlags) USING STDCALL FROM USER32.DLL
mit den Werten SetWindowPos(nHWnd,1,0,100,500,100,0x0040) tut sich aber nichts, sind vielleicht die uFlags nicht im richtigen Format ?
Ich brauche es um das Fenster je nach Position des aktuellen Gets am Tablet richtig zu Positionieren.
Grüße
Rudolf

Re: Bildschirmtastatur OSK

Verfasst: Di, 26. Feb 2013 12:13
von azzo
Hallo Rudolf,
ich verwende in Harbour/FW ShellExecute
ShellExecute( 0, 'Open', 'osk.exe' )
Gerade ist bei uns im Forum eine ähnliche Frage.
Ich glaube es sollte so sein, dass sich die Tastatur immer am unteren Bildschirmrand öffnet und dein Fenster dann "scrollt".
Tablet and form style for Windows 8 (desktop ver.)
http://forums.fivetechsupport.com/viewt ... =3&t=25706

mfg
Otto

Re: Bildschirmtastatur OSK

Verfasst: Di, 26. Feb 2013 13:26
von Rudolf
Hallo Otto,
die Tastatur bleibt dort wo man sie als letztes positioniert hat. Aber ich möchte je nach Postion vom Get entweder oben oder unten anzeigen, damit müsste ich die Tastatur verschieben. Die API Funktion habe ich gefunden, aber leider kenne ich mich mit DLL Aufrufen nicht gut aus. Notfalls mache ich wie eine eigene nach Vorbild von der eXpress++ Version.
Ich möchte auch das digital ink SDK fürs Tablet nutzen. Teilweise funktioniert es schon, nur gibt es noch viele Möglichkeiten wie Attributwahl von Linien etc. Wäre gut wenn jemand ein Tool macht mit dem man alles perfekt nutzen kann, vielleicht ist Pablo interessiert, werde ihn mal anschreiben.
Grüße
Rudolf

Re: Bildschirmtastatur OSK

Verfasst: Di, 26. Feb 2013 14:36
von azzo
Hallo Rudolf,
Ich vestehe, aber ich glaube es ist nun Stand der Technik (WINDOWS 8, Phone 8 ), dass die Tastatur am unteren Bildschirmrand fixiert ist.
Das Getfeld ist nur markiert.
Wenn du die Tastatur oberhalb anzeigst, dann verdeckst du mit den Händen die Sicht zum Eingabefeld.
mfg
Otto

Re: Bildschirmtastatur OSK

Verfasst: Di, 26. Feb 2013 16:18
von Rudolf
Hallo Otto,
das geht nur wenn der Text direkt in der virtuellen Tastatur angezeigt wird, so wie im eXpress++ Beispiel. Wenn das Eingabefeld auch unten ist, dann wird es von der Tastatur überdeckt und man sieht nicht was man eingibt, auch wenn die Tastatur teilweise transparent ist. Eine andere Lölsung wäre den Dialog zu scrollen, aber ich glaube das ist komplizierter als die Tastatur wahlweise oben oder unten anzuzeigen.
Grüße
Rudolf

Re: Bildschirmtastatur OSK

Verfasst: Di, 26. Feb 2013 17:06
von azzo
Hallo Rudolf,
ich glaube, dass man durch die verschiedenen Bildschirmauflösungen (10", 12", ...) der Geräte in Zukunft gezungen wird,
die Dialoge scrollbar zu machen.
mfg
Otto

Re: Bildschirmtastatur OSK

Verfasst: Di, 26. Feb 2013 17:26
von Rudolf
Hallo Otto,
das ist das nächste Problem mit dem ich kämpfe. Alle Dialoge müssen über Buttons oder breite Scrollbars gescrollt werden können. Auch Umschalten zwischen den Orientierungen wird eine Herausforderung. Ich denke ich mache zwei Dialoge auf Statics mit Gets auf den gleichen Variablen die ich dann wechselweise mit hide verstecke. Bei der Tastatur will ich wegen der autom. Sprachunterstützung bei der Windows Tastatur nicht selbst eine programmieren.
Grüße
Rudolf

Re: Bildschirmtastatur OSK

Verfasst: Di, 26. Feb 2013 17:36
von azzo
Hallo Rudolf,
das nächste Problem ist, dass osk.exe eine WINDOWS 7 style Tastatur anzeigt.
Der Dialog schaut dann gleich altmodisch aus.
Da wartet viel Arbeit.
Mfg
Otto

Re: Bildschirmtastatur OSK

Verfasst: Di, 26. Feb 2013 18:17
von Rudolf
Hallo Otto,
das befürchte ich auch, mit eXpress++ wirds ein wenig einfacher denke ich. Wenn ich Ergebnisse habe, poste ich sie hier. Habe auch Pablo angeschrieben ob er etwas dazu beitragen kann.
Grüße
Rudolf

Re: Bildschirmtastatur OSK

Verfasst: Mi, 27. Feb 2013 1:46
von AUGE_OHR
Rudolf hat geschrieben:Habe auch Pablo angeschrieben ob er etwas dazu beitragen kann.
wenn du ihm ein Tablet PC schickst ... ;)
Rudolf hat geschrieben:

Code: Alles auswählen

DLLFUNCTION SetWindowPos(hWnd,nHWND,X,Y,cx,cy,uFlags) USING STDCALL FROM USER32.DLL
ich verwende es so

Code: Alles auswählen

      rc := {0,0,0,0}
      @user32:GetClientRect(hWnd,@rc)
      @user32:SetWindowPos(hwnd,;
      HWND_TOP,; 
      0,0,rc[3],rc[4],;
      nOr(SWP_NOACTIVATE,SWP_NOCOPYBITS,SWP_NOREPOSITION,SWP_NOSENDCHANGING,SWP_NOZORDER) )
aber wie Otto schon sagte "müsste" man die Static, auf der die SLE liegen, "scrollen" wenn du ENTER eingibst.

Re: Bildschirmtastatur OSK

Verfasst: Mi, 27. Feb 2013 11:03
von Rudolf
Hallo,
danke für die Tips, funktioniert soweit ganz gut fürs Erste. Jetzt werde ich mich dem Scrollen und der Schrifterkennung widmen.
Grüße
Rudolf

Re: Bildschirmtastatur OSK

Verfasst: Mo, 02. Okt 2017 23:17
von Bernd Reinhardt
Hallo
Ich habe aktuell das Problem das ich eine Bildschirmtastatur einblenden und auch wieder ausblenden muss.
FreeVk.exe ist eine eigenständige Touchtastatur.
Allerdings habe ich wenig Erfahrung wie man damit umgeht.
Mit runshell könnte ich die Applikation starten. Die wäre dann auch im Vordergrund.
Aber wie bekomme ich den Handle auf diese Applikation um dieser die Nachricht zum schließen zu schicken.

Hat jemand einen kurzen Code wie man das realisiert. Sicherlich keine große Sache.

Danke
Bernd

Re: Bildschirmtastatur OSK

Verfasst: Di, 03. Okt 2017 0:46
von AUGE_OHR
Bernd Reinhardt hat geschrieben: Mo, 02. Okt 2017 23:17 Hat jemand einen kurzen Code wie man das realisiert. Sicherlich keine große Sache.
wenn du meinst ... :roll:

hier paar nützliche Links

"ShowWindow" / "ShowWindowAsync" function
https://msdn.microsoft.com/de-de/librar ... s.85).aspx
https://msdn.microsoft.com/de-de/librar ... s.85).aspx

"FindWindow" / "FindWindowEx" function
https://msdn.microsoft.com/de-de/librar ... s.85).aspx
https://msdn.microsoft.com/de-de/librar ... s.85).aspx

p.s. wenn Windows 10 dann sollte man sich diesen Thread ansehen
viewtopic.php?f=20&t=8942&p=100772

Re: Bildschirmtastatur OSK

Verfasst: Di, 30. Jan 2018 19:51
von Bernd Reinhardt
Hallo
Ich hab mir meine eigene Tastatur gemacht. Da ich keine Sondertasten (Windows, STRG usw.) benötige, sondern nur die Eingabe, war ich schnell fertig und kann das Layout anpassen (franz. Zeichen, nur spezielle Sonderzeichen). Große Buttons.

War im nachhinein gesehen keine großer Aufwand.

Gruß
Bernd

Re: Bildschirmtastatur OSK

Verfasst: Mi, 31. Jan 2018 23:55
von AUGE_OHR
Bernd Reinhardt hat geschrieben: Di, 30. Jan 2018 19:51Ich hab mir meine eigene Tastatur gemacht.
wollte ich auch mal machen aber schon 102 Bitmaps zu "malen" schien mir mit Xbase++ zu langsam zu sein.

unter Windows 10 gibt es, wenn die Table PC Komponenten installiert sind, noch weitere Keyboards z.b. geteilt links/rechts am Rand. die sind so angeordnet das man die mit die Daumen :!: bedienen kann wenn man das Tablet mit beiden Händen hält.

... dummerweise "weiss" die Hard/Software nicht "wann" ich beide Hände benutze :roll: