2013-04-06 90 views
3

有沒有辦法在控制檯應用程序中使用c#捕獲鼠標滾輪事件,就像在GUI/Window應用程序中捕獲鼠標滾輪事件一樣?在控制檯應用程序中捕獲鼠標滾輪事件

我想這樣做只能在控制檯中滾動一部分文本。

我已經在谷歌搜索了這個,但我可以找到的所有是窗口應用程序中的鼠標滾輪事件。

+1

你必須調整[ReadConsoleInput](http://www.pinvoke.net/default.aspx/kernel32/ReadConsoleInput.html) – 2013-04-06 22:07:14

回答

3

你可以用「二」部分做到這一點:

  1. 創建於鼠標滾輪事件的全球系統鉤子(很好的例子 here

  2. 使用PInvoke的檢查,如果你的控制檯是活動的第二個(你可以在這裏找到一個例子: Determine if current application is activated (has focus)

  3. 你可以擴展2中的函數來獲得窗口RECT check here和 相交窗口位置

+0

謝謝,我會盡力讓這個工作。但是,也許我應該在我的文章中提供了這些信息,但是我在ubuntu上使用mono開發。鑑於Ubuntu不包含所有需要這樣做的dll文件,這可以在linux系統上工作,還是有另一種方法可以在Linux系統上執行此操作? – 2013-04-06 22:11:14

6

調用ReadConsoleInput功能的鼠標位置。當您的控制檯旋轉車輪時,您將收到一個MOUSE_WHEELED事件。