Android 刷機包(卡刷) 中 system.new.dat 的 re-pack工具: rimg2sdat

2013年鸚鵡買了人生第一隻 Android 手機:小米2S 32GB
新機入手就開始刷機和ROOT,從 JLB15.0 玩到 JLB21.0 時就開始動手改卡刷包

就這樣一路改一路玩到了換小米5
搶到陶瓷尊享版後很開心的下載官方卡刷包準備動刀,點開卡刷包時卻矇了

沒有 system 資料夾! 沒有 system 資料夾! 沒有 system 資料夾!

看了一下檔名和檔案大小,大概就是它了: system.new.dat
經過 Google 大神介紹到 xda 論壇拜碼頭,找到了這篇文章 Unpack/re-pack android DAT files
馬上下載工具並安裝 Python ,終於順利的 unpack 了一個 raw image

mount 起來修修改改完準備 re-pack 的時候卡關了
要先用 img2simg 將 raw image 轉換成 Android sparse image 之後才能再轉成 system.new.dat
又不想 git 一堆 andorid source 回來編譯,只為了取得 img2simg 這工具

心想,既然 system.new.dat 可以直接轉 raw image,那直接反向轉回去就好啦!?

完全沒接觸過 Python 還是把 sdat2img.py 開起來,只是閱讀起來異常艱澀
邊看邊對照 unpack 時輸出的資訊,大概抓到原理後就用 PHP 開始土砲

繼續閱讀 “Android 刷機包(卡刷) 中 system.new.dat 的 re-pack工具: rimg2sdat”

設定 WebBrowser 控制項在執行階段模擬的 IE(Internet Explorer) 版本

Microsoft Virtual Studio 中的 WebBrowser 在使用上有蠻多的應用方式

然而有時候開啟某些網站時,卻會提示更換使用較新瀏覽器版本
即使已將 IE 更新的提示較新的版本,透過 WebBrowser 開啟依舊還是跳出提示,這點還真是讓人有點困擾

WebBrowser控制項 在執行階段中預設套用的IE版本,是系統上的註冊機碼定義的
這個註冊機碼的預設值會受到 安裝的系統、IE版本 和 .NET Framework 版本 所影響

繼續閱讀 “設定 WebBrowser 控制項在執行階段模擬的 IE(Internet Explorer) 版本”

VB.NET 跨執行緒作業無效,使用委派(Delegates)來解決

問題是這樣來了
鸚鵡在一個 Form 當中使用了一個自己寫的 Class Controller_A
Controller_A 再以多執行緒的方式用來控制其他的 Class Node_A, Class Node_B 到 Class Node_N

其中 Controller_A 會監聽 Node_N 的自定義事件,除了做各別處理外也會視需求觸發(RaiseEvent)自己的事件
Form 再監聽這些事件來控制 OvalShape 達到燈號的功能

但是當 Form 裡監聽事件的副程式嘗試變更 Form 上其他控制項時,就錯誤惹…

VB_NET例外(委派處理)
因為上一次使用 VB 來開發程式已經是 VB6.0時代了,所以只能慢慢爬官方文件
找到微軟 MSDN 關於 VB.NET 的委派(Delegates) 的相關說明,實在有點咬文嚼字讓我看了很久還是一樣看很不懂

爬文到最後自己好像有點懂了又還是不太懂 =.=
不過至少鸚鵡找到解決方法了

 

當 Ctrl_StatusChanged() 被 其他執行緒呼叫 或是 用來監聽其他執行緒觸發的事件 時會透過 Invoke() 委派的方式執行我們定義的委派 Ctrl_StatusChanged_CallBack()
然後直接跳出副程式

目前鸚鵡透過這樣的方式沒有在遇到 未處理的例外 了