我使用C# Windows Forms创建了一个屏幕键盘。我使用
在我的代码中,我使用
重写的函数是为了阻止表格被聚焦,这样我就可以将按键发送到其他具有焦点的应用程序中。
Sendkeys.Send()
函数发送按键。除了字母i外,其他所有字母都可以正常工作。当我在打开Microsoft Word时按下键盘上的字母i时,它会发送Ctrl + Alt + I并打开打印对话框。在Notepad++中也是如此。但在记事本中尝试输入时,它可以正常工作。在我的代码中,我使用
SendKeys.Send(value);
发送按键,其中value是按下的按钮的文本。我使用以下代码获取文本:string s = ((Button)sender).Text;
有关为什么它不能正常工作的任何评论?
编辑:我创建了一个只包含按钮的新Windows窗体项目,下面是整个代码。仍然无法正常工作。任何想法将不胜感激。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SendKeys.Send("i");
}
// Prevent form being focused
const int WS_EX_NOACTIVATE = 0x8000000;
protected override CreateParams CreateParams
{
get
{
CreateParams ret = base.CreateParams;
ret.ExStyle |= WS_EX_NOACTIVATE;
return ret;
}
}
}
重写的函数是为了阻止表格被聚焦,这样我就可以将按键发送到其他具有焦点的应用程序中。
value
是什么,它不是一个关键字吗?在某些情况下,你可能会发现,与其使用((MyClass)object)
进行强制转换,不如使用(object as MyClass)
进行强制转换。后者如果 obj 不是 MyClass 类型,则返回 null,而不是抛出类转换异常。 - MoonKnights
的值吗?这将有助于缩小问题范围。 - Kendall Frey