2011-08-07 38 views
2

我以前問過關於在OSX系統上更改光標的問題。我使用NSCursor來更改光標,但效果只有在應用程序處於活動狀態時纔有效。當另一個應用程序激活時,自定義光標會丟失。如何編寫一個OS X應用程序,即使它沒有激活,它也可以實現更改(自定義光標,繪製圖像)?

這是一個相關的,更一般的問題。你如何編寫一個應用程序來獲得系統妻子效應?例如,即使當你的應用程序不活動時在屏幕上繪製圖像,還有其他的東西是什麼?

我知道我可能需要比Cocoa API低一級。我只是不知道從哪裏開始尋找?我需要關注哪些特定的碳API?甚至更低?

任何指針,將不勝感激!如果您特別知道如何更改系統光標或如何繪製圖像並將其移動(無論哪個應用程序處於活動狀態),那也能解決當前的問題!我可以寫一個應用程序,當它安裝在系統上時可以實現這一點嗎?

謝謝!

回答

0

此行爲不是由Mac OS X上的任何API提供的。您必須修改操作系統中的資源文件,這是非常危險的操作,可能會阻塞目標計算機。你必須知道你在做什麼。

你想要實現一個主題的應用程序或類似的東西?你的目標是什麼?如果您告訴我們您正在嘗試做什麼,我們可能會提出其他方法。

+0

這是我正在嘗試做的一件事的一個簡單實例。我正在編寫一個演示輔助應用程序,以編程方式在屏幕上顯示「激光指針」的等效內容。我的第一個想法是使用鼠標光標本身作爲指針,並將其外觀改爲紅色圓圈。如果這不可能如你所說,我想在屏幕上畫一個紅色圓圈並以編程方式控制它,但即使應用程序本身不活動,它也應該能夠顯示(在這種情況下,當演示文稿全部運行時-屏幕)。謝謝! – AJJ

+0

我想你可能不得不重新考慮你在做什麼。激光指針是有效的,因爲它們產生的點比投影的圖像亮得多,因此在其上方突出。屏幕上的任何紅點只會與投影一樣明亮,因此不會立即可見。 –

1

你可以達到你想要的效果,但不是你想要這樣做的方式。

你說,

我寫一個演示輔助應用程序,在屏幕上顯示的「激光筆」相當於,編程。我的第一個想法是使用鼠標光標本身作爲指針,並將其外觀改爲紅色圓圈。

然後假的。根據您想要的行爲創建一個應用程序,可能不是LSUIElement類型的應用程序。創建一個無邊界窗口(鍵入NSBorderlessWindowMask)並用一個清晰​​的顏色填充它。將其窗口高度設置得足夠高,以便它可以漂浮在所有物體上(使用-[NSWindow setLevel:],儘管我想不出最好的級別是什麼),然後將其繪製。

確實,當您不是最重要的應用程序時,您無法設置光標。確實,你不能只在屏幕上塗鴉。但是如果你聰明,你可以得到相同的效果。

+0

感謝您的回答!我會嘗試這些東西。 – AJJ

相關問題