用任何螢幕抓取程式抓 Media Player 畫面的靈異現象 |
尚未結案
|
superIPT
一般會員 發表:2 回覆:6 積分:1 註冊:2003-10-30 發送簡訊給我 |
最近寫了一個自動抓取用 TMedia Player 播放的全部 Frame 的畫面的程式, 發現只要是 .mpg 檔, 畫面就抓到全黑. 其餘都沒問題. 我再用 Windows Media Player 播放 .mpg 影像, 用任"何螢幕抓取程式"抓畫面, 螢幕的任何位置都可抓的下來, 但是唯獨影片的部份也是全黑. 再一個更玄的現象, 抓下的圖, 我分析內容, R,G及B 的內容分別是 0x10, 0x0, 0x10, 所以看起來全黑, 事實上並不是, 玄的是這個 "數值" 是有 "特殊的地方", 只要螢幕上只要有這個色彩的地方, 所播放的 Mpeg 影片都會畫到上面來, 例如在Windows最底層用 Windows Media Player 播放影片, 上面再開幾個程式蓋住畫面, 最上面再開一個秀圖程式, 例如ACDsee, 小畫家, Photoshop等皆可, 秀一個RGB為 0x10, 0x0, 0x10,的黑色圖 (一定要這個顏色, 否則就不行), 你會發現, Mpeg 影片畫面會透到最上層來, 顯示在黑色這個圖上. 請問各位高手, 有人知道為什麼嗎?
再請問, 那要如何才能抓得到, 這些畫面, 而不是黑色?
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
superIPT
一般會員 發表:2 回覆:6 積分:1 註冊:2003-10-30 發送簡訊給我 |
|
aquarius
資深會員 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
superIPT
一般會員 發表:2 回覆:6 積分:1 註冊:2003-10-30 發送簡訊給我 |
引言: 我想你要的是直接由顯卡抓 不是由Media Player 我說速度 是因為 顯卡的加速 請關係 因為這會讓你只抓黑色 HyperSnap-DX Pro 查查KTOP下的資料把 理面有 不過不好找感謝上面兩位專家的回答, 照您們所說, 我試了 HyperSnap-DX 最新版, 及關掉顯示器的加速功能. 結果如下 1. 在 Windows 2K : 我找不到關掉顯示卡加速的地方, 所以沒有改變這個設定, 用 HyperSnap, 即使Enable Direct X,Direct 3D, Glide 等各種 Special Setting, 所抓到的影像依然是"黑色", 都無法成功抓到影像 2. 在 Windows 98 a. 關閉繪圖加速 : HyperSnap 不管有無 Enable Special Setting, 都可以抓到影像 (我的程式也可以抓到) b. 打開繪圖加速 b-1.若沒有Enable Special Setting, 就抓到黑色影像 (我的程式也抓到黑色) b-2.若有Enable Special Setting, 就抓得到影像(我的程式也可以抓到) 所以我懷疑, 能不能抓到影像與作業系統或是顯示卡設定都有關係. 不過我主要的問題是, 要如何寫出自動抓到 Mpeg 影片的每一個 Frame的程式, 因為我寫了一個影像處理的程式, 需要能讀入一個 Mpeg 檔, 再自動做分析. 我希望能在Windows 2K或XP 下執行. 還有一個我好奇的問題是 0x10, 0x00, 0x10這個顏色, 是有何特殊意義, 在最底層的影片會透過多層覆蓋的Windows 畫在這黑色的畫面上. |
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
能不能抓到影像與作業系統或是顯示卡設定都有關係
答對了 不過2000 w2k是可以的 不用設定 你再試試 努力總有方向 需要能讀入一個 Mpeg 檔, 再自動做分析. 我希望能在Windows 2K或XP 下執行
這是要圖片嗎 使用xp的傳真編輯器 (縮圖)
xp以上2003才有 還有一個我好奇的問題是 0x10, 0x00, 0x10這個顏色, 是有何特殊意義, 在最底層的影片會透過多層覆蓋的Windows 畫在這黑色的畫面上
其實 顯卡可以直接抓影像 不過要全螢幕才是你要的 如果你是要其中的一個
流格 使用暫停方式 截取之後釋放設定值
其實抓dc值還有方式 不過你要再問問 KTOP還是有資料
不過不好找就是 忘記告訴你 HyperSnap 除了gui介面未導入前的dos抓不到 我來沒試過抓不到的
除了 快速鍵 被攔截
就算是玩game也是照抓不勿 所以如果你使用 Direct X方式抓顯卡
應該就不遠了 這樣把 去安装DSPACK成功 之後如果你還是抓不到重點 那我幫不上了
不過divx的mpeg DSPACK是無法開啟的 這方面要使用其他的dll方式
還是不知道你的需求點 所以應該不會再給你其他答案
必竟太難答了 這是 回憶錄 還是 全都錄 呵呵 發表人 - ab 於 2003/11/02 00:49:14
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
回應AB:
DSPACK並非不能解DIVX,而是看你有沒有裝DIVX的DECODER,以及你裝的DIVX DECODER支不支援DIRECT SHOW並成為其中Filters的一員..如果全符合以上條件,你的WindowsMediaPlayer就能播divx,當然,用dspack寫的directshow的播放器,當然也能播divx囉~
我手上有一支ax檔,就是用來解realplayer的rm,rmvb等等聲音影像格式,你或許會懷疑,是不是得安裝realplayer或者安裝realone,再借用里面的ActiveX元件呢?答案是完全不用,就只需要用REGSVR32注冊那個AX檔進系統,就可以播放RM、RA、RAM、RMVB等等格式的檔案了。 回應superIPT:
使用dspack,你想要做的功能,全在那個套件里頭的demo\SampleGrabber裡面,底下是我用DSPACK套件裡的SAMPLEGRABBERS元件從ktv伴唱帶中抓出來的~~~mpeg1的規格~~當然,dspack可以放的格式很多,幾乎都能grab得到你想要的圖~
DSPACK的下載點,安裝方法,使用方法如下http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34844 利用範例所示將你的第一個播放器寫好後,請加入SAMPLEGRABBER的元件,你可以利用一個BUTTON,ONCLICK里加入 Samplegrabber1.GetBitmap(Image1.picture.bitmap) ****當然這個image1是系統內建的啦****,就可以看到你要的圖囉~~~~~ (DSPACK把很多人的寫多媒体的夢給實現了,當然那夢是惡夢) 我不懂,不懂,不懂....所以我才來ktop學工夫
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
對了,我這支RealMediaSplitter.AX在ktop上http://delphi.ktop.com.tw/topic.php?TOPIC_ID=39960 我不懂,不懂,不懂....所以我才來ktop學工夫
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
引言:japhenchen 三星兄 說的不錯 能使用其他的DLL來解是沒錯 也許這只也是治標之法 divx的格式 沒錯是也可透過dll來解碼 不過我會這樣說是庵自己的考量 雖然有所差異 但每個人解答的角度不同不是另外呼叫DLL來解碼,而是使用DIRECTX裡面的DIRECTSHOW來播放剪輯視訊及音訊,既然微軟已經在系統內建了這麼多編、解碼器供大家自由控制使用,寫程式出去賣錢(WINDVD、CYBERDVD、REALPLAYER、三國志九都在利用DS了..)那又何苦自己辛苦學習各大音訊格式的編解碼方式?萬一遇上像REAL那樣死要錢又捨不得公開演算法的公司,不就慢慢等,等到花兒都謝了,CASE都跑了~ 這不是治標,而是微軟的体貼,跟DIRECTSHOW的母系統DIRECTX一樣,不外乎是不想讓各家系統的播放規格的不統一,而導至整体系統的相容性,如果微軟不這樣做出大一統的規則,那可能你會看到一種事情,播放RM需要安裝REALPLAYER,放MOV需要裝QUICKTIME,播SWF需要用FLASHPLAYER,播MP3要用WINAMP,播DVD要用WINDVD,播WMA要裝WINDOWSMEDIAPLAYER,放個MID要裝東,放個ASX要裝西,東裝西裝光是網上常見的播放媒体就有十幾二十套播放器,少裝一套就有點不太正常,有的還要網上付費,不付錢就限制使用日期,不然就像REAMPLAYER一樣一天到晚丟廣告視窗,我不知道大家會不會覺得煩,我個人已經是煩到不知所云啦 至於AB所說,真要治標,是不是非得要自己學視訊音像演算法,自已寫DECODER才行?也行啊,只是這樣做,想要解決問題可能漫漫長路,在微軟的框架下,我也會想辦法寫成一套可供DIRECTSHOW使用的過濾器版本,因為,模組化的設計,才能使我的工具,能在團隊工作的環境中能被重覆被調用,而不需要重新編寫程式碼。 一句題外話,懂得使用WINDOWS裡提供的API並不是丟臉的事,真正強的程式設計師並不是一定要懂得 asm cli @@WaitOutReady: in al,64h test al,00000010b jnz @@WaitOutReady mov al,0FEh out 64h,al End;才算是高手,而是懂得拿隨手可得的知識資源來快速解決問題的人才算得上! 引言: 不論是ActiveX元件或引用dll這理有個重點 想要一魚通ㄘ 必須要有基本認知 是否公開許可 也是潛在的問題那拿HyperSnap-DX Pro來讀圖就一定合法嗎?想要用自己的程式來控制而非手動抓圖,好像也不簡單吧! DirectShow是DirectX里面的一個子系統,當然,使用DirectShow做的程式,當然不會牽扯到版權合不合法的問題,有空請去參考MSDN吧!這里有微軟提供的DIRECTSHOW的SDKhttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/htm/directshow.asp 我不懂,不懂,不懂....所以我才來ktop學工夫 |
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
真是誤會了,真是誤會了~~如果是口水仗,就此打住,讓這裡只有學習,好不~? 至於我刪帳號?我可沒那權力,我既非版主,更非站長,我只有參與討論的意原,並無任何對AB大人的指責之意,我只對事不對人,至於我的是與非,就給其他先進們來判斷吧 樓主的意思,是想要利用wmp的activex元件來抓mpeg的影片,結果抓出來的是一塊黑幕,大家提出自己的意見來幫忙解決問題,看是要用別人寫好的工具程式呢,還是學著如何直接存取顯示卡上的記憶体,或是透過DIRECTX來擷取畫面,或者是利用DIRECTSHOW的FILTER來擷取,就此討論何種方法最能最簡化的解決問題,速度也要快,當然要用最合版權法的方式來處理,還能操作自如,這才是我們討論的本意吧 如果單純的使用DIRECTSHOW SDK,在不使用THIRD PARTY的付費過濾器的情況下,是完全可以達到樓主的要求,而那些過濾器,只是這個WINDOWS DIRECTX下的一個小小的配件,M$從來沒禁止系統開發者使用這堆配件,更在網上的MSDN站中留下了SDK,許多輔助開發文件,範例,還有工具,我真不知道,使用DIRECTX來開發工具,何來的合不合法的問題? 至於DSPACK套件,作者的網頁中已經開宗明義的表明,是完全FREE,不僅給你全部的功能,所有的使用說明文件,一堆足以用來寫出跟CYBERLINK DVD一樣的DEMO及PACKAGE的所有原始程式碼,還有一堆HEADER文件,不需要付費,你如果真的付了錢,他也不過是拿去付WEB空間的租金罷了
引言:(DSPACK)What does it cost ? Nothing, DSPack is distributed under the MPL 1.1, but I accept money to pay web hosting.MPL(Mozilla Public License :MPL )在這個公約下,開發者使用,可以修改源代碼或者開發應用程式該開放源碼公約適用於所有平臺。 至於我半路提到的REALPLAYER的DLL及AX,只是我以此為題延伸出來的話題,裝不裝這玩意兒,並不會影響本題的解決,裝了,只會多了一些附加的功能罷了~如果看了覺得礙眼,當成沒看到就成~OK? 我稍候幾小時內會將我寫的DSPACK播MPEG、AVI影片檔和支援抓圖的程式放到作品分享區中,大家有興趣可以去看看 我不懂,不懂,不懂....所以我才來ktop學工夫 發表人 - japhenchen 於 2003/11/04 21:50:34 |
superIPT
一般會員 發表:2 回覆:6 積分:1 註冊:2003-10-30 發送簡訊給我 |
感謝上面各位專家的解答, K. Top 真是高手如雲, 各有各的見解, 都值得我來參考學習, 我現在真是苦惱要將分數給誰,我再想想再決定. 不知是否可以同時給多位專家分數. 我剛剛再測試了一下 Hyper Snap,
在 Win98 下 關閉顯示卡加速功能, Hyper Snap 不管有無 Enable Special Setting 都可以抓到畫面.打開顯示卡加速功能時, Hyper Snap 若不 Enable Special Setting, 就無法抓到畫面, 但如果有Enable Special Setting 就可以抓到畫面了. 在 Win2K 下用 ATI Rage Fury Pro 顯示卡, 不管有無 Enable Special Setting(試過各種選項及組合) 都"無法"抓到影像.
在 Win2K 下, 改用 Sis 6326 顯示卡(這個顯示卡有加速與否功能), 關閉顯示卡加速功能時, 不管有 無 Enable Special Setting, 都"可以"抓到畫面,
但是打開顯示卡加速功能時, 即使Enable Special Setting(試過各種選項及組合) 也都"無法"抓到影像 所以顯然, 在Win2k 下Hyper Snap未必能夠抓到畫面(與顯示卡有關), 那是否我的程式若不用 DC, 而改使用 Direct X 的方式, 也未必一定能抓到畫面? 因為我拿 Hyper Snap 只是用來測試是否有方法一定可以抓到畫面. 另外我也抓了 DSPack 下來研究了, 謝謝各位專家的不吝指導.
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
在 Win2K 下用 ATI Rage Fury Pro 顯示卡, 不管有無 Enable Special Setting(試過各種選項及組合) 都"無法"抓到影像 這我沒試過 但是6326或N牌系列的產品 是都ok的 Direct X 的方式, 也未必一定能抓到畫面
我是不敢說 是或不是 但是如果是我的話 我是相信一定可以的 因為他
仍在記憶體上的區塊 而這區塊雖然和顯卡有關 顯示卡上的記憶體 是以高樓大夏的方式 堆疊上去的 就像以dos的640k一層一層
的推上所謂的32mb或64mb等來突破原來的限制 但是缺的是你對顯卡的熟稀運用 要一時找這資料 我想 問者 自己找更能了解
自己要的部份 因為這真的不好找 也很難真正找到你要的點
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
我剛發表了剛承諾的作品~~~~~一時間寫完,有一些BUG沒抓到,大家有興趣可以自己拿來玩玩看吧
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40050 我懂的不多,懂的也不盡然是最佳的寫法,但求我懂的東西,能在大家的討論中,愈辯愈明~
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
我剛發表了剛承諾的作品~~~~~一時間寫完,有一些BUG沒抓到,大家有興趣可以自己拿來玩玩看吧
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40050 我懂的不多,懂的也不盡然是最佳的寫法,但求我懂的東西,能在大家的討論中,愈辯愈明~
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
還是老話一句,善用微軟所給予系統開發者方便的平台吧~~DIRECTX DIRECTX不僅僅解決了各家廠牌顯示卡、音效卡還有CPU的相容性的問題,還讓系統開發者可以不用再為了各家的顯示卡音效卡做設定及最佳化管理(老人們肯定還記得DOS時代的GAME是怎麼裝的吧),設計師想展現畫面的流暢和速度,也不用再去學習顯示卡的記憶体存取的做法(現在想做,WINDOWS還可能不給你碰呢),想要抓圖,只要CALL個API,GETBMP一下,即可完成,什麼32、64、128MB的定址問題啊,MAP到主憶体的定址問題啊,各家顯示卡的PAGE頁的大小的問題啊,65536色,1677萬色,4G色~~~啥的都不用管.......(這都管?程式設計師會累死) DIRECTSHOW不過是DIRECTX里的一套子系統......說他跟DX無關~~~~可是聲音跟畫面全都是透過DX來呈現~~~.......說他有關嘛~~~在寫DS時好像也沒碰到DX的東西~~(DS跟DX合作無奸啊).... 交朋友啊,有空想來大陸深圳玩時,我一定可以當個好導遊的~~
我是不是阿六仔?放心,不是,我是台勞~~~~~我、老婆、小孩都是正港台灣人 我懂的不多,懂的也不盡然是最佳的寫法,但求我懂的東西,能在大家的討論中,愈辯愈明~
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
japhenchen 兄
我也上傳一個範例 不過是DSPack 2.31的範例之一
它撥放時不會有抓不到的情況 就算使用 強制列印的鍵盤熱鍵 貼於小畫家也ok
這樣使用dc抓應該是可以的
至於修改的源碼 就在word內容下有官方網址 這樣的方式 也可以不過修改的篇幅會比較大一點
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40053
這個DSPack 2.31的範例之一的簡單測試 在開啟.wmv時不知是否是我的pc問題
它居然嚴重的 ( 淚可 )哈哈
引言:交朋友啊,有空想來大陸深圳玩時,我一定可以當個好導遊的~~ 我是不是阿六仔?放心,不是,我是台勞~~~~~我、老婆、小孩都是正港台灣人哈哈 真正是不打不相識 不過我去大陸的機會可能很少 在KTOP認識 也不錯 網路粉發達 有機會po些大陸的美景來KTOP給看看把 japhenchen 兄 今天的事 庵先向你說對不起 庵誤會了 多謝指正 謝謝 發表人 - ab 於 2003/11/05 01:53:18 |
superIPT
一般會員 發表:2 回覆:6 積分:1 註冊:2003-10-30 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
以下全是口水,沒有技術~ 謝謝superIPT的認同我的答題,至於DIRECT SHOW的實作方法我也是剛學不久,很多學習文件除了MSDN上的以外,其他的皆是來自於對岸的簡体網站,台灣人不知為何似乎不重視這塊領域(還是台灣人比較會藏步?),在GOOGLE上怎麼找都找不到繁体的討論群在講這些東西,連在KTOP上搜尋DIRECTX大多都是輕描淡寫或者是翻譯文,實際有提到實作或作品共享的少之又少,連WEBCAM的作品我看到的大概都還是WDM,鮮少人使用DIRECTX來實作這些影音媒体項目,更別提將媒体轉成串流放在網路上的工程.......我不想去藏步,也可以說是現學現賣,不管是不是會招來破壞技術門檻行情的非議,我只想把這領域帶出一個討論熱潮,讓多點人學習多媒体的領域,別讓台灣人的技術變得落後了~~ 我懂的不多,懂的也不盡然是最佳的寫法,但求我懂的東西,能在大家的討論中,愈辯愈明~
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
japhenchen 兄
說的不錯 贊聲啦 哈哈 有關影音部份 國內是粉少沒錯的
上面的話 讓安想起 當年開發 Photoshop 的創始者 台灣人
因為在台灣賣不出去 就把整個技術賣給 阿豆比
從此之後 阿豆比 就賣給全世界 最ez的影像軟體 哈哈
台灣的封閉 來至 眼光較近利 這是很多玩專業的人 要台灣比
殺咪都沒福利 應該是 國會叫囂世界第一 哈哈
不論 資訊 體育 社福 等 台灣總是 看別人診摸玩 再學學 上面都這樣了 好加在 台灣還有 KTOP 與 深度論談 這個些delphi論壇
不然連 在網路上 說話的餘地都找不到人喔 也多謝 superIPT 多日的忍耐
必竟 陰陽師AB 是來這搗亂的 感恩啦 發表人 -
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
http://community.borland.com/article/0,1410,10365,00.html
http://wdirectx.no-ip.com/
http://www.minfos.de/delphi/directx.html
http://clootie.narod.ru/articles/HowToCompile_FusionCPascal.html
http://www.freedownloadscenter.com/Programming/Delphi_Tools_and_Components/DirectX_for_Delphi.html
http://dolgov.hut.ru/programming/directx/
http://www.totalshareware.com/asp/detail_view.asp?application=1977
http://forum.softpedia.com/showthread/t-14129.html
http://www.freedownloadscenter.com/Programming/Delphi_Tools_and_Components/DirectX_for_Delphi_Screenshot.html
http://www.fee.vutbr.cz/~marusin/directx/originalni/
http://www.programmersheaven.com/zone10/cat98/2716.htm
http://www.kcat.zaq.ne.jp/takao/qd4bcb/
http://www.bolton-heaton.freeserve.co.uk/directx.htm
http://www.gamehippo.com/gamedev/tools.shtml
http://www.neobrothers.de/
http://www.khalab.republika.pl/programy.html
http://www.cloneensemble.com/ddx_sdk.htm
|
poyulin
一般會員 發表:10 回覆:24 積分:6 註冊:2002-11-25 發送簡訊給我 |
引言: 樓主的意思,是想要利用wmp的activex元件來抓mpeg的影片,結果抓出來的是一塊黑幕,大家提出自己的意見來幫忙解決問題,看是要用別人寫好的工具程式呢,還是學著如何直接存取顯示卡上的記憶体,或是透過DIRECTX來擷取畫面,或者是利用DIRECTSHOW的FILTER來擷取,就此討論何種方法最能最簡化的解決問題,速度也要快,當然要用最合版權法的方式來處理,還能操作自如,這才是我們討論的本意吧 japhenchen 於 2003/11/04 21:50:34Hi japhenchen兄, 看到你上面提到可利用DIRECTSHOW的FILTER來擷取畫面,想請教是否也可擷取整個桌面或某個視窗並將其透過網路傳送給其他電腦,小弟剛摸索DIRECTSHOW中,看到您對DIRECTSHOW的FILTER的運用,非常有見解,是否可給個意見...謝謝.. |
ywang
一般會員 發表:0 回覆:1 積分:0 註冊:2004-12-10 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
這篇老文章還有人挖出來啊 到WindowsMediaPlayer主程式上面的選單中,找到工具->選項->性能->高級,里面有一項是use overlay(使用覆疊,大陸叫使用覆蓋),把這個選項拿掉,就可以以全性能且不關掉directx的方法抓到畫面了(使用printscreen鍵或什麼snap的軟体都可以),不就是把overlay於windows上的畫面給弄成實體寫入畫面記憶体中嘛,只關掉wmp的設定,不影響其他的game或mediaplayer的運作 不過呢,用這種方法,還要搭配抓圖程式或自己慢慢按print screen鍵,實在不痛快 許下第一千零一個願望
有一天幸福會聽我的話
|
AaronTu
一般會員 發表:0 回覆:1 積分:0 註冊:2005-02-17 發送簡訊給我 |
引言: 這篇老文章還有人挖出來啊 到WindowsMediaPlayer主程式上面的選單中,找到工具->選項->性能->高級,里面有一項是use overlay(使用覆疊,大陸叫使用覆蓋),把這個選項拿掉,就可以以全性能且不關掉directx的方法抓到畫面了(使用printscreen鍵或什麼snap的軟体都可以),不就是把overlay於windows上的畫面給弄成實體寫入畫面記憶体中嘛,只關掉wmp的設定,不影響其他的game或mediaplayer的運作 不過呢,用這種方法,還要搭配抓圖程式或自己慢慢按print screen鍵,實在不痛快 許下第一千零一個願望 有一天幸福會聽我的話請問怎樣在程式中,直接控制user overlay選項,這樣就不用讓使用者自己去調整了,麻煩高手指導一下 |
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
對不起,我又將這篇挖出來了
想當初在VBQA和豬頭小瓜瓜的討論區很多人問到關於DirectX的問題 如在遊戲裡面顯示自己的視窗,擷取遊戲畫面,抓Media Player的播放畫面(如本篇) http://delphi.ktop.com.tw/board.php?cid=168&fid=919&tid=31439 http://delphi.ktop.com.tw/board.php?cid=168&fid=919&tid=47473 為什麼我的Mediaplayer 無法抓圖 http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=90986 會問這類問題的人大都是看到遊戲外掛可以作到,自己也想寫一個 只不過這類問題最後都成了懸案,討論到最後也不了了之 小弟那時候也到google找資料,也沒有找到確切的答案 最近又重起爐灶到google找資料,網路上有比較多的資料了 發現其中的道理就是使用System global hook,這技術在螢幕抓字也用過 甚至在ktop掀起極大的波瀾http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=48753 感覺大家對hook似乎很有興趣 更詳細的原理討論在 http://www.programmer-club.com/pc2020v5/forum/ShowSameTitleN.asp?URL=N&board_pc2020=directx&id=3868 http://topic.csdn.net/t/20051106/11/4374651.html# HyperSnap-DX也是使用相同的技術,下載軟體後解壓縮注意到dxsnap.dll這個檔案 利用bcb,Delphi\bin目錄底下的tdump.exe 下指令tdump.exe dxsnap.dll > C:\output.txt後,開啟output.txt可以看到 Section: Exports Flags: 00000000 Time Stamp: 45C73D54 : Mon Feb 05 22:21:08 2007 Major Version: 0000 Minor Version: 0000 Exports from DXSNAP.dll 7 exported name(s), 7 export addresse(s). Ordinal base is 1. Sorted by Name: RVA Ord. Hint Name -------- ---- ---- ---- 00004520 1 0000 ActivateCapture 00004420 2 0001 CBTHookProc 00004210 3 0002 DoCapture 000044B0 4 0003 GetShData 00004440 5 0004 InstallSysMsgHook 00004290 6 0005 KeyboardProc 000044C0 7 0006 ReleaseSysMsgHook 有興趣的網友不妨從我提供的線索再去google找資料,寫成完整的程式 將執行檔放上來(還不用原始碼)我想這將會引起另一波高潮
編輯記錄
bugmans 重新編輯於 2007-12-16 07:40:53, 註解 無‧
|
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
又發現用direct hook的軟體,將原本是全螢幕的畫面轉成視窗
DxWnd http://forum.gamer.com.tw/C.php?bsn=07650&snA=93578&locked=F&tnum=56&subbsn=0&Bpage=1 有程式碼可以研究 D3DWindower http://forum.gamebase.com.tw/content.jsp?l=2002&no=5682&cno=56820002&sno=72825077 用BCB寫的軟體 |
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
過了這麼久沒人回應,只好公佈解答
我當初在網路找到開放原始碼的軟體taksi 我花了很多時間閱讀程式碼(有圖有真相),逐漸了解其中的原理和了解什麼是hook com 再回頭看底下這篇討論,發覺其中的關鍵已經講出來了,有興趣的網友可以看看 http://www.programmer-club.com/pc2020v5/forum/ShowSameTitleN.asp?URL=N&board_pc2020=directx&id=3868 相關問題 使用dspack抓取遊戲畫面 http://delphi.ktop.com.tw/board.php?cid=30&fid=74&tid=45827
編輯記錄
bugmans 重新編輯於 2007-11-17 12:10:57, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |