【发布时间】:2009-02-20 11:48:27
【问题描述】:
每当我在我的服务器系统中按下键时,我都会将该键事件发送到另一个系统,之后相应的操作应该在客户端机器上发生..帮助我找到更好的方法来解决这个问题
提前感谢
【问题讨论】:
标签: c#
每当我在我的服务器系统中按下键时,我都会将该键事件发送到另一个系统,之后相应的操作应该在客户端机器上发生..帮助我找到更好的方法来解决这个问题
提前感谢
【问题讨论】:
标签: c#
如果我理解正确,那么您所拥有的听起来还不错。你是说:
您可以使用异步 WCF 来实现这一点。有关更多信息,请参阅 here 和 here。看待这个问题的一种方法是作为分布式观察者模式。您的服务器是主体,客户端是观察者。
更新:在 .Net 中处理关键事件
您可以尝试在表单中添加 KeyDown 事件处理程序:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control & e.KeyCode == Keys.C)
{
MessageBox.Show( "Ctrl + C pressed" );
// Swallow key event, i.e. indicate that it was handled.
e.Handled = true;
}
}
但是,如果您的表单上有任何控件,那么您将不会收到该事件。您可能需要做的是使用消息过滤器嗅探 Windows 消息。例如
public class KeyDownMessageFilter : IMessageFilter
{
public const int WM_KEYDOWN = 0x0100;
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_KEYDOWN)
{
// Key Down
return true; // Event handled
}
return false;
}
}
使用AddMessageFilter 方法将此消息过滤器添加到应用程序。如果您想检查是否按下了 CTRL 键以获得按键消息,请检查 lparam。
如果有任何不清楚的地方,请告诉我。
【讨论】:
请向我们提供有关您正在尝试做的事情的更多详细信息。 为了模拟 Windows 窗体中的按键,我会使用 SendKeys 类。
【讨论】: