在控制台应用程序中检测系统范围滚动

问题描述:

我想知道如何让控制台应用程序检测用户是否用他的鼠标滚轮(屏幕上的任何位置)滚动。在控制台应用程序中检测系统范围滚动

我希望它成为控制台应用程序的原因是我可以在后台运行它。我现在搜索了很多,我似乎无法找到我需要的东西。

+3

这不是一个_REAL question_。你有什么尝试?在这里展示你的努力。请阅读[常见问题]和[问] – 2013-03-13 08:31:33

+0

我似乎无法开始,我尝试搜索一些代码片段,但它们似乎都被绑定到窗口或仅在窗体应用程序中工作。 – 2013-03-13 08:34:53

+0

控制台应用程序在控制台中运行,而不在后台运行。也许你想要一个Windows服务。但“检测鼠标滚轮”已经危险地接近键盘记录...... – Corak 2013-03-13 08:41:31

你可以阅读这个话题:如果你有自己的控件

Mouse Wheel Event (C#)

,你可以设置这样的事情很容易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); 
     } 
    } 
} 
+0

非常感谢! :)隐藏的Windows窗体是一个不错的额外!我认为这是我需要的。 – 2013-03-13 08:44:38

+0

你好,欢迎光临。您可以查看我提供的链接。应该很容易实现。如果用户滚动,你可以从这里调用一些东西: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

+0

谢谢,这也是非常有趣的研究:)我会研究它。 – 2013-03-13 08:46:43