项目的快速背景......我正在运行一个Web应用程序,允许用户控制和读取连接到服务器计算机的设备(在我的情况下是Intel NUC)中的数据。
我的问题是我正在尝试检测在后台线程中运行的System.Windows.Form内的全局鼠标事件。
EXEC msdb..sp_help_job @job_name = 'mySQLJob', @job_aspect = 'JOB'
现在,当我通过Visual Studio 2017(在Debug或Release中)通过IIS Express运行应用程序时,它会启动我的应用程序,打开一个Chrome实例,并成功创建一个Windows窗体,我能够听取任何鼠标事件(在这种情况下,鼠标按下并滚动)并用它做我想做的事。
但是,当我将其发布到我在本地运行的IIS管理器时,Windows窗体永远不会显示,我无法收听鼠标事件。
任何建议都会有所帮助!
答案 0 :(得分:1)
我不认为这是可能的。在Visual Studio中iisexpress
下运行您的网站时,它在普通应用程序中作为托管环境运行。普通应用程序可以随时显示窗口,因此没有问题。
与此相反,iis
(以及asp.net
工作进程)作为服务运行。服务应该在后台运行,无需任何用户交互。此外,为了维护服务器的安全性,工作进程在受限制的用户帐户下运行。
最后,使用默认设置,工作进程在第一个http请求进入时启动,并在一些空闲时间后停止。与此同时,您的所有鼠标移动都将丢失,因为您的Web应用程序根本无法运行。
我建议您尝试其他解决方案,可能是:
winforms
程序获取鼠标坐标,将传递给网络服务器(例如使用命名管道)api
访问外部设备,而不是鼠标坐标要阅读的其他资源(可能还有更多):