有沒有人知道的?怎麼沒有人告訴我怎麼恢復分區信息呢?
我重新描述我的問題
現在我的電腦有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的做法實在讓人無語
其實你自己代碼已經寫的很明白了
第一個問題
如果是因爲你把463 To 478 都置0了 D,E,F盤不見了的話
那麼只要恢復463到478的數據應該就可以恢復了。
第二個問題
你把463到478位 置0 也就是把分區2結構信息都置0 導致D,E,F盤消失
可能幾個分區表間都有一定聯繫 中間的斷了,所以後面的也沒用了吧。
你把原始信息讀出來 保存到一個512字節的BIN文件 恢復時不就可以拿這個BIN來還原了?
然後在一個一個字節的抹 看看能否實現你要的效果 。。
不過你這種方法 確實只適用於 硬盤數據可有可無的情況下。。。
窗口內容是在不停變化的,不要想着先恢復窗口,再截圖到內存,或者最小化前先截屏之類的方法。
所有方法請先驗證可行後再回復。
謝謝!
我的實驗結果是,最小化以後DC中沒有保留位圖信息,所以不管取哪個點都是返回的 -1
那麼,OS中肯定有地方保留了這個窗口的顏色信息,否則不可能恢復窗口的時候可以重畫。
問題是,保存在哪裏,如何取到保存的信息?
如果可以根據窗口句柄取到這些信息 那就可以自己創建內存位圖來獲取顏色了。
有結果了,答案是可以的。窗體的圖像其實就放在Picture屬性裏面,不過獲取起來的確比較麻煩,需要用到一些GDI相關的方法
當窗口恢復時,其實是重繪了整個窗口,重繪窗口的依據是根據程序的當前狀態來繪製的。我們可以舉一個簡單的示例:
第一種,窗口的AutoRedaw爲False,如果想保持窗口最小化,或被其他窗口摭擋後再恢復上面的圖形,則需要將繪圖語句寫在Paint事件中。
來源:英超直播