VB讀寫磁盤分區表

有沒有人知道的?怎麼沒有人告訴我怎麼恢復分區信息呢?
我重新描述我的問題
現在我的電腦有C盤:主分區
D,E,F盤擴展分區
然後我寫了上面的代碼,用於破壞擴展分區的信息!
運行結果是D,E,F盤都不見了
最後我想要的結果是
1:如何能夠恢復D,E,F盤
2:如果我只想隱藏D盤,那麼我的程序應該如何寫?
實在是汗死,你用Call ReadFile(hDevice, Buffer(1), 512, hadRead, ByVal 0&)讀取了原先的MBR記錄之後竟然沒有保存,就直接將DPT區塊給置爲了0
在這種悲慘的情況下你要想自己恢復原先分區表的話,我推薦你使用Easy Recovery的Raw模式,讓它幫你查找分區的起始結束信息。然後你就有兩種選擇,一、是你直接用Easy Recovery將整個硬盤恢復之後再把文件拷回去;二、你根據分區信息,然後人工修改DPT記錄,這樣做可以讓硬盤數據還原如初,但前提是你必須對硬盤的分區記錄結構有相當的瞭解
剛纔發現的手工恢復分區表的文章,你參考下就知道該怎麼弄了
這種危險的工作偶都在vm上進行。。。像分區表被覆寫就只能全盤掃描,根據數據特徵來恢復。。。。LZ的做法實在讓人無語

樓上的各位,何必這麼咄咄逼人呢,人家是新手,是來求教的。人家寫了代碼,還沒動手,先來問問。經過這麼一折騰,人家不就會了嗎?
我暈,我是用哪個硬盤測試的!所以我不備份,現在你們只需要告訴我怎麼區別邏輯D,E,F盤,因爲我現在把整個D,E,F盤都隱藏了,但是我的目的是隱藏D盤
如果非要動硬盤的話,應該是將分區設置爲未格式化分區,這樣纔不影響後面的分區。
樓上說的用註冊表是不行的,因爲用註冊表隱藏的邏輯分區,在磁盤管理裏頭看的到,而且在運行的時候輸入盤符照樣看的到,而且把硬盤拆到別人電腦裏頭照樣看的到該邏輯分區,哎,怎麼就沒有人會寫程序弄嗎?
沒研究過 好象很有意思
其實你自己代碼已經寫的很明白了 

第一個問題
如果是因爲你把463 To 478 都置0了 D,E,F盤不見了的話  
那麼只要恢復463到478的數據應該就可以恢復了。

第二個問題 
你把463到478位 置0 也就是把分區2結構信息都置0 導致D,E,F盤消失
可能幾個分區表間都有一定聯繫 中間的斷了,所以後面的也沒用了吧。

你把原始信息讀出來 保存到一個512字節的BIN文件 恢復時不就可以拿這個BIN來還原了? 
然後在一個一個字節的抹 看看能否實現你要的效果 。。

不過你這種方法 確實只適用於 硬盤數據可有可無的情況下。。。
rt

窗口內容是在不停變化的,不要想着先恢復窗口,再截圖到內存,或者最小化前先截屏之類的方法。

所有方法請先驗證可行後再回復。

謝謝!

我的實驗結果是,最小化以後DC中沒有保留位圖信息,所以不管取哪個點都是返回的 -1

那麼,OS中肯定有地方保留了這個窗口的顏色信息,否則不可能恢復窗口的時候可以重畫。

問題是,保存在哪裏,如何取到保存的信息?

如果可以根據窗口句柄取到這些信息 那就可以自己創建內存位圖來獲取顏色了。
有結果了,答案是可以的。窗體的圖像其實就放在Picture屬性裏面,不過獲取起來的確比較麻煩,需要用到一些GDI相關的方法
樓主你應該可通過webbrowser控件的接口獲得那圖像吧,就是不少軟件提供的那個保存網頁到圖片的功能使用的.你用"保存網頁到圖片"大約能搜索到
用VB的窗體來舉例子可能會理解的快一點,我們知道窗口有一個AutoDraw屬性,當它爲真時,無論窗口是否可見,OS都爲其開闢一塊內存來保存窗口中的圖像,當然,這樣會很浪費系統資源,因此,絕大多數窗口的這個屬性都是Flase,這樣,當窗口最小化時,用來繪製窗口的內存就被釋放了。所以,你是不會得到窗口中的圖像的。
  當窗口恢復時,其實是重繪了整個窗口,重繪窗口的依據是根據程序的當前狀態來繪製的。我們可以舉一個簡單的示例:
  第一種,窗口的AutoRedaw爲False,如果想保持窗口最小化,或被其他窗口摭擋後再恢復上面的圖形,則需要將繪圖語句寫在Paint事件中。
來源:英超直播
致樓主:什麼窗口都是一樣的,IE窗口的話你用spy++抓到窗體的句柄,然後用API拿到窗體的DC句柄,然後代入我那段代碼去試試看。
發佈了45 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章