1 回答

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
在 Java 中,在鎖屏期間便攜式捕獲底層應(yīng)用程序是不可能的,也許在任何屏幕捕獲解決方案中也是如此。文檔說(shuō)Robot.createScreenCapture
:
“[它]創(chuàng)建一個(gè)包含從屏幕讀取的像素的圖像。......”
這意味著它Robot
只能捕獲正在呈現(xiàn)到屏幕上的任何內(nèi)容,并且沒(méi)有概念/理解/編程能力來(lái)檢測(cè)其內(nèi)容,例如單個(gè)應(yīng)用程序、通知、小部件等。當(dāng)呈現(xiàn)的內(nèi)容是鎖屏?xí)r,那就是被捕獲。
這也意味著,當(dāng)沒(méi)有向其發(fā)送任何內(nèi)容時(shí)(假設(shè)監(jiān)視器/屏幕被操作系統(tǒng)的能源策略關(guān)閉,因此不一定會(huì)被渲染),則不會(huì)捕獲任何內(nèi)容(但可能是黑屏)。
為了實(shí)現(xiàn)您正在嘗試的目標(biāo),您需要應(yīng)用程序特定的掛鉤(例如通過(guò)它公開(kāi)的某些 API - 極不可能)或操作系統(tǒng)特定的調(diào)用或進(jìn)程探測(cè)。前者取決于應(yīng)用程序,后者則破壞可移植性。
關(guān)于一般不可能的備注:視頻會(huì)議/流媒體/屏幕錄制/遠(yuǎn)程訪問(wèn)應(yīng)用程序通常會(huì)在用戶之間共享應(yīng)用程序特定的屏幕。然而,應(yīng)用程序(“記錄器”)對(duì)其他應(yīng)用程序(“記錄器”)的與應(yīng)用程序無(wú)關(guān)的感知和訪問(wèn)必然由操作系統(tǒng)來(lái)調(diào)節(jié),從而破壞了可移植性。更不用說(shuō)它在鎖屏期間停止了。
對(duì)于音頻捕獲或任何其他數(shù)據(jù)流來(lái)說(shuō)同樣如此。作為格言,那么:
跨應(yīng)用程序數(shù)據(jù)捕獲要么由目標(biāo)應(yīng)用程序公開(kāi),要么由操作系統(tǒng)介導(dǎo)。
添加回答
舉報(bào)