【发布时间】:2013-12-11 20:01:34
【问题描述】:
我有一个在后台运行的外部程序。如果我在计算机上的任意位置选择一个数字,然后按下热键(比如 F10),那么外部程序就会获取该数字。
现在我正在尝试创建 ac# winform 应用程序,如果用户在应用程序中选择文本并点击一个按钮,外部程序将获取这个突出显示的文本(所以我实际上模拟了 F10 按键)
这是我尝试过的:
SendKeys.Send("{F10}");
和
[DllImport("user32.dll")]
public static extern int SetForegroundWindow(IntPtr hWnd);
private void button1_Click(object sender, EventArgs e)
{
textBox1.SelectAll();
while (true)
{
Process[] processes = Process.GetProcessesByName("programname");
foreach (Process proc in processes)
{
SetForegroundWindow(proc.MainWindowHandle);
SendKeys.SendWait("{F10}");
}
Thread.Sleep(5000);
}
}
但是外部程序对上述任何一个都没有响应.. 希望大家帮帮我。
【问题讨论】:
-
"...如果我在我的计算机上选择一个数字anywhere..."。你的意思是?顺便说一句您的外部程序如何查看您在 WinForm 应用程序中选择的内容?您的应用程序将进入后台,甚至在该文本框因单击按钮而失去焦点之前...
-
我可以在资源管理器、word、Firefox 等中选择数字,然后按 F10。这是一个调用程序。我按下 F10 的那一刻,程序将开始呼叫该号码。我想用 winform 应用程序做同样的事情,但不是按 F10,而是按一个按钮并发出模拟的 F10 按下
-
如果它真的是一个热键,那么哪个窗口看到击键并不重要。所以设置前景窗口并不重要。您需要详细了解该程序的行为方式。
标签: c# winforms keypress hotkeys