我正在创建一个用于操纵鼠标移动的服务,我需要我的应用程序能够与该服务进行通信,以告诉其如何移动鼠标。
旁注,我这样做是在服务中进行的,因为我相信这也将使其能够在提升的应用程序上工作,因为当提升的应用程序具有焦点时,无法从普通桌面应用程序使用SendInputs
。 >
我已经进行了一些初步的研究,看到人们说命名管道是与服务进行通信的最佳方式,但是它将每秒能够处理约500条消息(我希望鼠标移动尽可能流畅) )?
我对命名管道有一些基本经验,但是没有什么能处理如此快速的数据。
下面是我在应用程序其他区域中使用的基本代码;无需任何修改即可在服务中正常工作吗?正在将数据解析为字符串,然后从该字符串中反序列化我的数据是最有效的方法,以我的经验,使用字符串可以以这种速度降低速度。
NamedPipeServerStream s = new NamedPipeServerStream("MyPipe", PipeDirection.In, 2);
Action<NamedPipeServerStream> a = callBack;
a.BeginInvoke(s, ar => { }, null);
private void callBack(NamedPipeServerStream pipe)
{
while (!SharedProperties.IsClosing)
{
pipe.WaitForConnection();
StreamReader sr = new StreamReader(pipe);
string message = sr.ReadToEnd();
processPipeMessage(message);
pipe.Disconnect();
}
}