Entwickler-Ecke
WinForms - Anpassbare Bildschirmtastatur
BenBB - Sa 29.08.09 09:18
Titel: Anpassbare Bildschirmtastatur
Hallo!
Ja, auch ich bin neu hier. Nicht nur im Foru, sondern auch bei C#. Weiterhin gebe ich zu, dass mein Projekt für den Anfang ein wenig hochgegriffen ist, doch man wächst an den Aufgaben.
Ich möchte gerne eine anpassbare Bildschirmtastatur realisieren, doch mir fehlt der Ansatz.
Problemstellen:
-Wie kann ich ein Prozess identifizieren? Momentan habe ich nur eine Möglichkeit ein Fenster per Titel anzusprechen und mit SendKeys Daten zu schicken.
-Wie schaffe ich es, dass mein Fenster, ähnlich wie bei dem Microsoft OnScreen Keyboard, anderen Fenstern das Überlappen verbietet?
Vielen Dank!
P.S.: Anders als bei anderen SendKeys Fragen möchte ich nicht ein Gamecheat schreiben, sondern mit meinem TabletPC von der aus meiner Sicht nervigen Microsoft Bildschirmtastatur wegkommen...
ene - Mo 31.08.09 07:43
Hi und willkommen,
wie sieht es mit einem BringToFront und TopMost = true; aus?
studiol - Do 26.08.10 10:17
Hallo,
ich arbeite momentan ebenfalls an einer Bildschirmtastatur, welche für einen Touchscreen eingesetzt werden soll. Zum programmieren nutze ich VS2008 Prof.
Meine Tastatur ist immer im Vordergrund (TopMost) und zudem kann sie nicht aktiviert werden. So weit so gut.
Der Rechner auf dem Windows 7 installiert ist (Sprache Englisch) führt das Programm auch einwandfrei aus, wenn ich das aktivieren zulasse und über
SendKeys.Send("+`")
einen Text in eine RichTextBox auf der selben Windows.Form einfüge. -> Ergebnis : ~ so ist es auch gewünscht.
Wenn ich jedoch das aktivieren verhindere und in ein beliebiges Dokument einfüge, dann erhalte ich für den gleichen Aufruf : }
Hat jemand eine Idee woran das liegt?
Vllt noch zum deaktivieren, das mache ich folgendermaßen:
const int WS_EX_NOACTIVATE = 0x08000000;
protected override CreateParams CreateParams //Fenster wird durch anklicken nicht aktiviert
{
get
{
CreateParams param = base.CreateParams;
param.ExStyle |= WS_EX_NOACTIVATE;
return param;
}
}
Das Grundgerüst für die Tastatur stammt übrigens von diesem Link
http://www.codeproject.com/KB/miscctrl/touchscreenkeyboard.aspx
Hat jemand eine Idee woran es liegt, dass ich die falsche Ausgabe bekomme?
Yogu - Fr 27.08.10 12:04
BenBB hat folgendes geschrieben : |
Wie kann ich ein Prozess identifizieren? Momentan habe ich nur eine Möglichkeit ein Fenster per Titel anzusprechen und mit SendKeys Daten zu schicken. |
Musst du den Prozess überhaupt identifizieren? Es ist auch möglich,
hier [
http://www.delphi-forum.de/viewtopic.php?p=615754#615754]das eigene Fenster einfach deaktiviert zu lassen, wenn daraufgeklickt wird[/url], wodurch die
SendKeys-Anfragen einfach an das vom Benutzer zuvor ausgewählte Fenster geschickt werden.
studiol hat folgendes geschrieben : |
SendKeys.Send("+`") |
Ich habe gerade ein bisschen damit gespielt, und herausgefunden, dass es sicherer ist, das tatsächliche Zeichen anzugeben, in deinem Fall also
"{~}". Vielleicht legst du dir eine Liste an, in der steht, welche Tastenkombination welches Zeichen hervorruft, und übergibst dieses an
SendKeys.Send.
studiol - Fr 27.08.10 14:42
Danke für deine Antwort, ja das wäre auch die letzte Möglichkeit. Jedoch müsste ich dann eine große Abfrage machen und ich finde das nicht so schön. aber falls ich keine andere Möglichkeit finde werde ich es wohl so machen müssen. Also falls jemand weiß wie ich diese Fehler verhindern kann bitte melden ;)
ich habe mir inzwischen noch eine andere hübsche virtuelle Tastatur (auf WPF basierend) angeschaut. Dort klappt es auch ohne diese Tabelle mir ist jedoch noch nicht so klar wie genau die Tasten übermittelt werden. Jedenfalls werden dort Keys erstellt mit Konstanten für die jeweiligen Tasten. Wer sich dafür interessiert kann es sich unter
http://wpfkb.codeplex.com/ anschauen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!