【发布时间】:2018-07-06 05:26:36
【问题描述】:
我是 Windows 应用程序开发的新手。我正在开发一个 Windows 窗体应用程序,其布局如下:
有一个文本框,我使用 SendKeys 事件在应用程序内创建了键盘。
问题是系统上的所有其他应用程序都能够检测到按键,但应用程序内的文本框无法检测到按键。
基本上应用程序具有完整的键盘,这只是一键按下代码
我尝试过的:
public partial class Form1 : Form
{
Control focusedC;
protected override CreateParams CreateParams
{
get
{
CreateParams param = base.CreateParams;
param.ExStyle |= 0x08000000;
return param;
}
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
TopMost = true;
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape) {
FormBorderStyle = FormBorderStyle.Sizable;
WindowState = FormWindowState.Normal;
TopMost = false;
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
//checkbox is for CapsLock Key
}
private void button14_Click(object sender, EventArgs e)
{
if (checkBox1.Checked && focusedC != null)
{
focusedC.Focus();
SendKeys.Send("Q");
}
else if(focusedC != null)
{
focusedC.Focus();
SendKeys.Send("q");
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
focusedC = sender as TextBox;
}
}
【问题讨论】:
-
那么,您是说 sendkeys 没有按照您的代码发送“Q”?
-
是的,应用程序内部的文本框没有检测到密钥,如果我打开记事本并开始输入,那么它工作正常,如果您希望我添加应用程序的快照,那么我可以做到。
-
自 Vista 以来,应用程序不应依赖
SendKeys工作。您可能需要考虑 Microsoft UI 自动化
标签: c# windows winforms textbox