我不知道该怎么做,以及要搜索什么......
我想要一个“引发事件”的简单可执行文件。我知道,这听起来很疯狂,很可能用错误的术语来描述。让我们回过头来描述一下这个场景:
我刚刚买了一台漂亮的Wacom Pen + Touch。我还有一台带有一些fance按钮的罗技MX激光鼠标。而且我的键盘也有一些不错的功能按钮......所以有很多控制方法,我倾向于在.NET和WPF中做“一切”(希望在不久的将来)...
问题是,我没有时间深入研究每个驱动程序,以确保它们与.NET“原生”工作。但是大多数配置应用程序(wacom,setpoint)都允许将应用程序分配给按钮。
所以我的想法是一个简单的可执行文件,仅用于一个目的:在调用时引发事件。像“WacomButton1Pressed.exe”这样的东西。
我知道WCF,但我认为这有点矫枉过正,应用程序不需要连接到Web服务。在.NET中是否有任何其他“松散耦合”模型允许我订阅“全局事件”。我对应用程序域有一点了解,对于初学者来说,假设每个人都运行在最低安全级别(GAC关闭,我是管理员,Windows 7)......
在操作系统级别是否有一些“全局”事件代理(与PRISM中的EventAggregator相当),我可以在其中提升和收听事件。如果没有,任何想法的解决方案几乎没有“细节知识”(这是一种低优先级的游戏,所以在一方面,我想做到“正确”,另一方面,我可以'花费很多时间进行基础研究: - )
感谢您的任何提示, 克里斯
PS:欢迎使用搜索字词,事件不是谷歌最友好的词: - )
答案 0 :(得分:2)
我知道你已经考虑并解雇了 WCF ,但我建议你重新考虑一下。 WCF不仅仅是Web服务 - 基本上,只要您需要跨进程进行通信(无论是在同一台机器内部还是跨机器边界),它应该是通信堆栈的默认选择。
您可以在WCF中使用命名管道,这就是我在这种情况下的操作。
答案 1 :(得分:0)
纯粹猜测......您可以使用WMI执行此操作。订阅某些WMI事件,并在触发时以某种方式使用您的应用回复它们?
答案 2 :(得分:0)
WCF不仅仅是其他人所说的Web服务,而且可能是用于消息传递解决方案的最合适的.NET技术。
我建议:
然后只需连接鼠标/输入设备按钮即可调用应用程序(如果它是控制台应用程序,您甚至可以使用配置工具传递命令行参数 - 即“WacomButtonPressed.exe -button1”
当你想要运行时,启动监听器,然后点击它,它应该发送消息。
答案 3 :(得分:0)
除了WCF,Windows实际上还有另一个“全球”事件经纪人: MSMQ
如果你设置一个非交易的私人队列,如果它们是小邮件,它每秒可以处理数千条消息,如果不是数万条消息(因为我得到它们会在这里的印象)。
然后你只需要另一个应用程序轮询队列。
MSMQ有一个易于使用的.NET API。
唯一的缺点是你需要安装MSMQ Windows服务(它是自Windows 2000以来每个版本的Windows的免费部分,但默认情况下不安装)。