在控制台应用程序中检测系统范围滚动
我想知道如何让控制台应用程序检测用户是否用他的鼠标滚轮(屏幕上的任何位置)滚动。在控制台应用程序中检测系统范围滚动
我希望它成为控制台应用程序的原因是我可以在后台运行它。我现在搜索了很多,我似乎无法找到我需要的东西。
你可以阅读这个话题:如果你有自己的控件
,你可以设置这样的事情很容易throught设计师,或动态代码。但是,鼠标需要位于您的控制之上,以便您能够收到该事件。所以在你的情况下,你需要在消息过滤器上注册。保重,你在那里做的不多。这可能整个应用程序变慢,如果你在这个地方做多:
public bool PreFilterMessage(ref Message m)
您也可以设置不显示任何形式的Windows窗体项目。这是一个Windows窗体项目的Program.cs中的代码:实现它通过P/Invoke的使用原始输入
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new WindowlessApplicationContext());
}
}
/// <summary>
/// The window less application context.
/// </summary>
internal class WindowlessApplicationContext : ApplicationContext
{
/// <summary>
/// Standard constructor.
/// </summary>
public WindowlessApplicationContext()
{
try
{
//Your code
}
// you mayy add catch here
finally
{
//Close process
Environment.Exit(0);
}
}
}
非常感谢! :)隐藏的Windows窗体是一个不错的额外!我认为这是我需要的。 – 2013-03-13 08:44:38
你好,欢迎光临。您可以查看我提供的链接。应该很容易实现。如果用户滚动,你可以从这里调用一些东西:if(m.Msg == 0x20a) – Patrick 2013-03-13 09:12:29
的一种方式。从这里开始:
http://msdn.microsoft.com/en-us/library/ms645543(v=vs.85).aspx,
http://msdn.microsoft.com/en-us/library/ms645536(v=vs.85).aspx.
从推介:http://www.codeproject.com/Questions/217948/I-need-to-capture-mouse-events-in-Console
谢谢,这也是非常有趣的研究:)我会研究它。 – 2013-03-13 08:46:43
这不是一个_REAL question_。你有什么尝试?在这里展示你的努力。请阅读[常见问题]和[问] – 2013-03-13 08:31:33
我似乎无法开始,我尝试搜索一些代码片段,但它们似乎都被绑定到窗口或仅在窗体应用程序中工作。 – 2013-03-13 08:34:53
控制台应用程序在控制台中运行,而不在后台运行。也许你想要一个Windows服务。但“检测鼠标滚轮”已经危险地接近键盘记录...... – Corak 2013-03-13 08:41:31