在C#裡面往往要對檔案處理很多時候都必須用到遞迴,因為資料夾也許不只一層
但是若想要快速計算資料夾裡的檔案數量,也需可以利用下面語法會比較快得到
想要的結果,而不再需要一層一層遞迴去計算。
2010年4月1日 星期四
Setup Factory 7 將.Net Framework 嵌入安裝程式裡
因為最近許多專案都會有.NET Framework不對或者是沒有的狀況下,因此我想乾脆把它包進去安裝程式以避免類似的情況發生。
操作步驟
1. 在"資源"裡的"引導檔案"的項目中加入.Net Framework 2.0 (例如dotnetfx2.0.exe)
2. 在"動作"底下的"啟動時"中加入下列的語法
**.Net Framework 2.0**
result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\.NETFramework\\policy\\v2.0");
if (result == false) then
result = File.Run(SessionVar.Expand("%TempLaunchFolder%\\dotnetfx2.0.exe"), "", "", SW_SHOWNORMAL, true);
end
**.Net Framework 3.5**
result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\.NETFramework\\AssemblyFolders\\v3.5");
if (result == false) then
result = File.Run(SessionVar.Expand("%TempLaunchFolder%\\dotnetfx3.5.exe"), "", "", SW_SHOWNORMAL, true);
end
操作步驟
1. 在"資源"裡的"引導檔案"的項目中加入.Net Framework 2.0 (例如dotnetfx2.0.exe)
2. 在"動作"底下的"啟動時"中加入下列的語法
**.Net Framework 2.0**
result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\.NETFramework\\policy\\v2.0");
if (result == false) then
result = File.Run(SessionVar.Expand("%TempLaunchFolder%\\dotnetfx2.0.exe"), "", "", SW_SHOWNORMAL, true);
end
**.Net Framework 3.5**
result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\.NETFramework\\AssemblyFolders\\v3.5");
if (result == false) then
result = File.Run(SessionVar.Expand("%TempLaunchFolder%\\dotnetfx3.5.exe"), "", "", SW_SHOWNORMAL, true);
end
2010年3月10日 星期三
2010年2月9日 星期二
C# Image 的解析度與格式轉換的設定
之前因為常常用到圖像轉換,或是透過C#來進行一些圖像處理~但是最近發現到一個現象就是轉換後的圖像在檔案資訊裡的解析度(DPI)都變為96,後來上了Google大神查證之後發現只要在處理或式轉換時有用到 New Bitmap 而且您沒有設定解析度,這時候Bbitmap就會採用螢幕預設的解析度96DPI,所以檔案在儲存之後當案資訊裡的解析度也會變成96DPI。
另外也發現到不只是Bitmap會有這種情況,連影像編輯軟體也有舉例來說 : 透過ACDSEE進行轉檔不過格式轉換後發現到檔案資訊理的解析度也變成了96DPI,這實在是很困擾的一件事,或許有人會認為變成96DPI也沒什麼影響,不過對於那些需要將影像輸出的使用者可能就很麻煩,因為DPI被改變所以無法得知原來的DPI相對來說在圖像輸出時可能就會造成品質不好,所以為了預防這種狀況,我們可以利用下面的方法來改善。
另外就是若影像在儲存時您未設定任何的格式,通常在C#裡他會以PNG的格式來儲存但是副檔名並不會更改,這時候就會產生格式上錯誤的問題,因此在圖像儲存時最好還事先設定圖像儲存格式以免造成格式與附檔名不符的情況。
另外也發現到不只是Bitmap會有這種情況,連影像編輯軟體也有舉例來說 : 透過ACDSEE進行轉檔不過格式轉換後發現到檔案資訊理的解析度也變成了96DPI,這實在是很困擾的一件事,或許有人會認為變成96DPI也沒什麼影響,不過對於那些需要將影像輸出的使用者可能就很麻煩,因為DPI被改變所以無法得知原來的DPI相對來說在圖像輸出時可能就會造成品質不好,所以為了預防這種狀況,我們可以利用下面的方法來改善。
另外就是若影像在儲存時您未設定任何的格式,通常在C#裡他會以PNG的格式來儲存但是副檔名並不會更改,這時候就會產生格式上錯誤的問題,因此在圖像儲存時最好還事先設定圖像儲存格式以免造成格式與附檔名不符的情況。
2010年1月28日 星期四
C# 偵測(Detection)USB的插入(Insert)以及HID的插入和拔除(Remove)
好久沒有上來發表文章了 ~ 最近都在coding到沒時間寫 ~掉入無盡的Debug深淵,回頭驚醒時沒想到已經一月底了~~我竟然錯過新春第一砲~~ㄜ.....不是,是新春第一帖~~算了,來分享一下最近遇到的問題。
因為最近有專案上的需要,所以必須在應用程式理自動偵測是否有USB插入以及拔除,當然其擴充應用相當多例如您可以利用此段程式來辨識使用者插入哪種USB裝置,簡單一點則可以利用偵測USB來達到移除裝置的效果。
在網路上也Google相當多的語法不過還是以偵測"硬碟"的code比較多,不過對於我來說我需要控制到最前方也就是說插入時....(好像有點色~~還是我想太多~"~)..,Insert時我就要得到此即時訊息以方便我來判斷裝置,所以說偵測硬碟或USB隨身碟的code比較不適合,因此我找到了這段程式是可以即時偵測USB的狀態,Insert時或是Remove時,以下就是程式碼分享給大家。
其中若想要修改偵測裝置或是增加可以修改這兩行,USB為GUID_DEVINTERFACE_USB_DEVICE =new Guid("A5DCBF10-6530-11D2-901F-00C04FB951ED");HID為GUID_DEVINTERFACE_HID = new
Guid("4D1E55B2-F16F-11CF-88CB-001111000030")。
因為最近有專案上的需要,所以必須在應用程式理自動偵測是否有USB插入以及拔除,當然其擴充應用相當多例如您可以利用此段程式來辨識使用者插入哪種USB裝置,簡單一點則可以利用偵測USB來達到移除裝置的效果。
在網路上也Google相當多的語法不過還是以偵測"硬碟"的code比較多,不過對於我來說我需要控制到最前方也就是說插入時....(好像有點色~~還是我想太多~"~)..,Insert時我就要得到此即時訊息以方便我來判斷裝置,所以說偵測硬碟或USB隨身碟的code比較不適合,因此我找到了這段程式是可以即時偵測USB的狀態,Insert時或是Remove時,以下就是程式碼分享給大家。
其中若想要修改偵測裝置或是增加可以修改這兩行,USB為GUID_DEVINTERFACE_USB_DEVICE =new Guid("A5DCBF10-6530-11D2-901F-00C04FB951ED");HID為GUID_DEVINTERFACE_HID = new
Guid("4D1E55B2-F16F-11CF-88CB-001111000030")。
2009年12月30日 星期三
Windows 7 XP Mode 的測試方法
由於最近年底到了,許多人都換筆電,當然我也不例外 ~"~ 為了要提高工作的效率這是必須的阿 ~~ 跳回正提,因為 Windows 7才剛剛上市沒多久而大多數新筆電都安裝windows 7的作業系統,所以有時候部分東西不支援就會需要使用XP的作業系統,這時候有幾種方式
1. 重新安裝XP作業系統 (需要原版XP光碟)
2. 利用虛擬機器如 VMWare 或 Vitural PC來安張XP作業系統等 (需要原版XP光碟)
3. 利用 Windows 7 專業版或是旗艦版的 XP Mode (不需要原版光碟)
以方便性來說當然是3最方便不過有兩個前提
1. Windows 7 必須是專業版或是旗艦版
2. CPU必須有支援硬體虛擬化
首先先下載 測試硬體虛擬化程式
將此程式開啟會出現下列幾種訊息
1. This tool does not run on this operating system
代表你的作業系統並不支援硬體虛擬化~~支援的作業系統如下
* Windows 7 (Home Basic、Home Premium、Professional、Enterprise、Ultimate)
* Windows Vista SP 1, 2 (Home Basic、Home Premium、Business、Enterprise、Ultimate)
* Windows XP SP 3 (Professional)、Windows XP SP 2 (Professional)
2. This computer does not have hardware-assisted virtualization
此電腦不含硬體虛擬化功能~到表您不能使用 XP Mode 殘念 @@
3. Hardware-assisted virtualization is not enabled on this computer
硬體虛擬化技術是可以在此電腦上執行~不過必須到BIOS把他打開
4. This computer is configured with hardware-assisted virtualization
此電腦硬體虛擬化已經開啟可以正常使用XP Mode
5. The configuration of this computer is not compatible with Windows Virtual PC
電腦的Intel Trust Execution Technology(Intel TXT)與 Windows Virtual PC 不相容
所以要進到BIOS把IntelTXT關閉~就可以使用了
1. 重新安裝XP作業系統 (需要原版XP光碟)
2. 利用虛擬機器如 VMWare 或 Vitural PC來安張XP作業系統等 (需要原版XP光碟)
3. 利用 Windows 7 專業版或是旗艦版的 XP Mode (不需要原版光碟)
以方便性來說當然是3最方便不過有兩個前提
1. Windows 7 必須是專業版或是旗艦版
2. CPU必須有支援硬體虛擬化
首先先下載 測試硬體虛擬化程式
將此程式開啟會出現下列幾種訊息
1. This tool does not run on this operating system
代表你的作業系統並不支援硬體虛擬化~~支援的作業系統如下
* Windows 7 (Home Basic、Home Premium、Professional、Enterprise、Ultimate)
* Windows Vista SP 1, 2 (Home Basic、Home Premium、Business、Enterprise、Ultimate)
* Windows XP SP 3 (Professional)、Windows XP SP 2 (Professional)
2. This computer does not have hardware-assisted virtualization
此電腦不含硬體虛擬化功能~到表您不能使用 XP Mode 殘念 @@
3. Hardware-assisted virtualization is not enabled on this computer
硬體虛擬化技術是可以在此電腦上執行~不過必須到BIOS把他打開
4. This computer is configured with hardware-assisted virtualization
此電腦硬體虛擬化已經開啟可以正常使用XP Mode
5. The configuration of this computer is not compatible with Windows Virtual PC
電腦的Intel Trust Execution Technology(Intel TXT)與 Windows Virtual PC 不相容
所以要進到BIOS把IntelTXT關閉~就可以使用了
訂閱:
文章 (Atom)