Bildschirmtastatur OSK

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
mkersch
UDF-Programmierer
UDF-Programmierer
Beiträge: 89
Registriert: Fr, 12. Mai 2006 13:26
Wohnort: Wünricht

Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Bildschirmtastatur OSK

Beitrag 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:
Herzlich,
Tom
mkersch
UDF-Programmierer
UDF-Programmierer
Beiträge: 89
Registriert: Fr, 12. Mai 2006 13:26
Wohnort: Wünricht

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Bildschirmtastatur OSK

Beitrag 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.
gruss by OHR
Jimmy
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Bildschirmtastatur OSK

Beitrag 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
gruss by OHR
Jimmy
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Bildschirmtastatur OSK

Beitrag 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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Bildschirmtastatur OSK

Beitrag 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.
gruss by OHR
Jimmy
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Bildschirmtastatur OSK

Beitrag 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
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 159
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen

Re: Bildschirmtastatur OSK

Beitrag 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
Bernd Reinhardt
fa.reinhardt@gmx.de
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Bildschirmtastatur OSK

Beitrag 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
gruss by OHR
Jimmy
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 159
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen

Re: Bildschirmtastatur OSK

Beitrag 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
Bernd Reinhardt
fa.reinhardt@gmx.de
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Bildschirmtastatur OSK

Beitrag 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:
gruss by OHR
Jimmy
Antworten