Clavier Écran Tactile
Je travaille sur une application tactile. J'ai besoin de savoir si il existe un prêt de l'écran tactile de clavier que je peux l'utiliser comme un Contrôleur pour mon application.
J'ai essayé d'utiliser le windows prêt d'un clavier, mais il est trop petit pour un écran tactile.
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System) + Path.DirectorySeparatorChar + "osk.exe");
toutes les idées sur la façon de commencer à construire une en un minimum de temps sera grandement apprécié....
Nouvelle Question
J'ai copié ce code de quelqu'un et fait quelques modifications :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
class Win32
{
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern bool SetWindowPos(
int hWnd, //window handle
int hWndInsertAfter, //placement-order handle
int X, //horizontal position
int Y, //vertical position
int cx, //width
int cy, //height
uint uFlags); //window positioning flags
public const int HWND_BOTTOM = 0x0001;
public const int HWND_TOP = 0x0000;
public const int SWP_NOSIZE = 0x0001;
public const int SWP_NOMOVE = 0x0002;
public const int SWP_NOZORDER = 0x0004;
public const int SWP_NOREDRAW = 0x0008;
public const int SWP_NOACTIVATE = 0x0010;
public const int SWP_FRAMECHANGED = 0x0020;
public const int SWP_SHOWWINDOW = 0x0040;
public const int SWP_HIDEWINDOW = 0x0080;
public const int SWP_NOCOPYBITS = 0x0100;
public const int SWP_NOOWNERZORDER = 0x0200;
public const int SWP_NOSENDCHANGING = 0x0400;
}
namespace Keyboard
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.KeyText.MouseDoubleClick += new MouseEventHandler(KeyText_MouseDoubleClick);
}
private Process process;
private string getKeyboardText()
{
KeyScreen k = new KeyScreen();
k.ShowDialog();
if (k.DialogResult.ToString().Equals("OK"))
return k.Text1;
else
return null;
}
void KeyText_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.KeyText.Text = getKeyboardText();
}
private void KeyBtn_Click(object sender, EventArgs e)
{
this.showKeypad();
//Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System) + Path.DirectorySeparatorChar + "osk.exe");
}
private void showKeypad()
{
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = "c:\\Windows\\system32\\osk.exe";
process.StartInfo.Arguments = "";
process.StartInfo.WorkingDirectory = "c:\\";
process.Start(); //Start Onscreen Keyboard
process.WaitForInputIdle();
Win32.SetWindowPos((int)process.MainWindowHandle,
Win32.HWND_BOTTOM,
300, 300, 1200, 600,
Win32.SWP_SHOWWINDOW | Win32.SWP_NOZORDER);
}
}
}
Cela fonctionne bien j'ai un beau pavé (de bonne taille pour un écran tactile), Cependant, je ne suis pas familier avec le C# et VB à tous.... modifier le Texte dans un textbox en fonction de l'écran tactile clavier je montre.
Merci,
Vous devez vous connecter pour publier un commentaire.
Pour créer votre propre clavier à l'écran en gros, vous devez effectuer les opérations suivantes.
1 - Créer un clavier windows de l'application que vous pouvez interagir avec mais ne vole pas le focus d'entrée du contrôle en cours dans lequel chaque application où actuellement en train de travailler.
2 - Le clavier de l'application doit envoyer des touches pour le contrôle actif en réponse à cliquer sur un des boutons du clavier de l'application.
La réponse suivante, je fournis précédemment fournit une démonstration simple de la façon de faire cela à l'aide de WinForms.
C# - Envoi d'événements de clavier (le dernier) de la fenêtre sélectionnée
Fondamentalement, la fenêtre est créée avec le WS_EX_NOACTIVATE style, ce qui empêche la fenêtre de becomming active et de l'affûter le focus d'entrée. Puis, en réponse aux clics de bouton il utilise SendKeys pour envoyer le juge approprié message de touche pour le contrôle qui a le focus d'entrée.
La réponse suivante indique comment appliquer la WS_EX_NOACTIVATE style à une application WPF.
En essayant de créer un WPF Clavier Écran Tactile Application, ne Peuvent pas obtenir WPF Application pour Envoyer des Clés à l'autre de la fenêtre? Toutes les suggestions?
Il y a des solutions autres que WS_EX_NOACTIVATE, mais c'est simple et ne subit que de partir d'un mineur de présentation glitch lorsque vous faites glisser la fenêtre vers. Qui, avec quelques petits malins de traitement des messages peuvent être surmontés.
Je sais que c'est vraiment, vraiment vieux, mais juste au cas où quelqu'un d'autre d'abord pensé aussi que le construit en Windows sur le clavier à l'écran est trop petit (comme l'a été aussi ma première pensée), vous pouvez en fait faire plus simplement en faisant de la fenêtre, il est en plus grand (que vous pouvez aussi le faire par programmation).
+1 pour la question et de poster le code, mais parce que je suis en train de faire, simplement parce que j'ai besoin de plus de contrôle direct sur ma demande.