2009-09-28 66 views
0

如何將枚舉類型(手形,箭頭等)作爲enum(int)或Bitmap?如何獲取全局鼠標光標類型?

它應該在全球範圍內工作,不僅在應用程序的形式。我相信,如果鼠標不在應用程序範圍內,則Cursor.Current不起作用。我查看了Win32 GetCursorInfo()和GetCursor()之間的交互,但不明白如何使用它們來獲取遊標類型。

在此先感謝。

+1

澄清:您希望能夠確定用戶的光標是什麼。不管它在哪裏?當其他程序使用自定義光標時,您可能會遇到問題。 – 2009-09-28 22:40:49

+0

啊,這就是爲什麼Cursor.Current或GetCursorInfo()可能沒有光標類型信息。好點子!至少,你可以把當前的位圖,並將它們與已知的光標位圖進行比較呢?怎麼樣?是的,無論用戶的光標在哪裏,它都可以工作。 – 2009-09-28 23:05:09

回答

0

如果您可以獲取光標位圖,則可以輕鬆地將其與已知系統光標的標準位圖進行比較。只需檢查並查看它們是否具有相同的尺寸 - 如果它們是,則循環顯示像素,如果任何不相同,則退出。如果你能夠遍歷整個位圖,並且所有像素匹配,那麼你知道你有兩個相同的光標。遊標通常是24x24的東西,所以這不應該是一個巨大的性能問題 - 有可能是比較位圖平等比較快的方式,但這是你可能會問的另一個問題。

有這種方法的一些可能出現的問題:

  • 光標可能是一個自定義光標(認爲Photoshop的工具)
  • 光標可能是動畫,因爲它移動有關屏幕
  • 光標可能會迅速改變

作爲一個附錄,你希望在這個過程中完成什麼?很可能有一個完全正交的方法,你可能沒有考慮過。