WinForms中的屏幕上的键盘
你知道Windows有一个屏幕键盘上?
在Windows 7中,它是所有程序> Accesseries>轻松访问>屏幕键盘。
如果你愿意,你可以自己写,但是当我不喜欢拿起键盘时,我总是使用Windows。
您可以创建一个快捷方式:
位置是%windir%\ SYSTEM32 \ osk.exe
因此,要启动它,在TextBox_Click事件(或者你想火任何事件)
//应该有效,我还没有测试过。 System.Diagnostics.Process.Start(“c:\ Windows \ System32 \ osk.exe”);
只是一个更新:在我的机器上工作时出现了一个错误,试图运行该代码(我构建它作为一个测试),我不得不复制osk.exe到另一个目录,然后启动它,它工作。
/// <summary>
/// Test to show launching on screen board (osk.exe).
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void textBox1_Click(object sender, EventArgs e)
{
try
{
Process.Start(@"c:\Temp\OSK.exe");
}
catch (Exception error)
{
string err = error.ToString();
}
}
而这段代码起作用了。
我会说,这有可能会稍微容易产生错误使用内置的Windows屏幕键盘,因为它允许用户发送可能不是应用程序中预期的各种按键。在这种情况下,定制的屏幕键盘将是更安全的选择。 – markj 2015-04-24 12:12:59
我认为你必须创建一个新的形式ccreate键盘和推出这种形式在文本框中单击
你举的例子表明错误我:
“无法启动屏幕键盘”
我发现这个代码没有任何错误,做工精细:
static void StartOSK()
{
string windir = Environment.GetEnvironmentVariable("WINDIR");
string osk = null;
if (osk == null)
{
osk = Path.Combine(Path.Combine(windir, "sysnative"), "osk.exe");
if (!File.Exists(osk))
osk = null;
}
if (osk == null)
{
osk = Path.Combine(Path.Combine(windir, "system32"), "osk.exe");
if (!File.Exists(osk))
{
osk = null;
}
}
if (osk == null)
osk = "osk.exe";
Process.Start(osk);
}
我想你可以使用。 System.Diagnostics.process.start
System.Diagnostics.Process.Start("osk.exe");
http://stackoverflow.com/questions/956879/net-winform-keyboard-control – 2012-02-15 17:54:12