2010年7月27日 星期二

Visual Studio 2010 方案平台未出現在工具列

假設VS2010安裝完成之後,只有組態管理員沒有出現平台方案,這時候先在工具列上點選"自訂"


然後點選 "加入命令" -> "建置" -> "方案平台" 按確定這時候就會把方案平台加入到工具列

2010年4月1日 星期四

搜尋資料夾

在C#裡面往往要對檔案處理很多時候都必須用到遞迴,因為資料夾也許不只一層
但是若想要快速計算資料夾裡的檔案數量,也需可以利用下面語法會比較快得到
想要的結果,而不再需要一層一層遞迴去計算。

讀取任何資料建立Datagridview

產生報表之前必須要先建立資料集,而建立資料集必須先建立相關的資料表如下所表示

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

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的格式來儲存但是副檔名並不會更改,這時候就會產生格式上錯誤的問題,因此在圖像儲存時最好還事先設定圖像儲存格式以免造成格式與附檔名不符的情況。

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")。

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關閉~就可以使用了

2009年12月29日 星期二

C# Winform 不同語系的切換

當您所撰寫的Winform需要做語系切換時,通常有下列幾種作法

1. 資料庫切換語系 : 將Winform上的控制項與相對應的文字寫入資料庫,在做語系切換時讀取資料庫裡對應的控制項與對應的文字進行轉換。

2. XML切換語系 : 將Winform上的控制項與相對應的文字寫入XML檔案,在做語系切換時讀取控制項名稱與XML裡對應的文字進行轉換。

3. 利用資源檔切換語系 : 利用Form上的語言與對應的 *.res 進行切換

以上三種方式前面兩種方式較簡單就不在此敘述,第三種方式在設定上較繁瑣但是若要修改卻相當方便,所以我就針對第三種方法做說明。

要開發之前我們可以先到這裡下載控制項 這裡有提供現成的 Sample 程式,我們可以利用調用此控制向來完成我們要的切換語系功能。

1. 先建立一個C# Winform 表單名稱為 Mainform (配合dll命名規則)


2.將下載下來的專案建置可以得到 Infralution.Localization.dll 的控制項,在專案工具列中按右鍵 -> 選擇項目...


3.選擇剛剛建置好的dll,控制項 CultureManager 會加入到工具列


成功加入到工具列


4. 將此控制項拖拉到表單,並將其改名為 "cultureManager" 改名原因是為了要配合此項dll的命名規則,另外也拖拉一個選單將 "menustrip1" 改名為 "menustrip",在此選單下增加中文以及英文選單。


5. 接下來先加入兩個按鈕,將按鈕一的text改成"確定",按鈕二的text改成"取消",表單的text改成"更改語系"。

以上的步驟完成了 "預設" 表單配置。

6. 接下來建立中文表單的資源檔,修改表單的Language改成"中文(台灣)"和Localizable 改成 "true"


然後修改表單text為 "更改語系 (中文)" 建立完成後可以發現到多了一個表單的資源檔


7. 接著建立英文的資源檔和上面中文方法相同,將表單的Language改成"英文(美國)"
將表單名稱改為 "更改語系 (English)" 將選單和按鈕名稱改為英文,名稱可自行決定


程式碼的部分請按照下列來作修改


完成後就可以利用選單來切換語系了~

Source code Download : Change Language

2009年12月24日 星期四

Windows 7 DEP 所產生的問題

在之前因為使用TWAIN而應用程式在Windows 7上執行時會因為DEP的關係無法正常運作,DEP是什麼呢?簡單來說 DEP全名叫做「Data Execution Prevention」他是從Windows XP SP2時開始提供的功能,是一種防止數據執行的安全性服務,透過監視記憶體中是否有"不可執行的程式碼"數據,若找到此種數據系統會將其標示成"不可執行",所以當DEP啟動後便會對各種程式進行監視,防止病毒在某些暫存記憶體裡執行程式。

更簡單來說就是,當成是在windows 7上執行時,程式執行無反應或是有問題,因此我們需要將DEP這個功能關閉,因為在XP環境下我尚未碰過此問題因此我就針對windows 7 來做說明。

首先使用系統管理者開啟 "命令提示字元" :


接著輸入 bcdedit.exe /set {current} nx AlwaysOff 按下Enter


Cmd 會顯示"操作順利完成"然後將電腦重新開機


如此一來就可以關閉DEP模式順利的執行應用程式了。

推薦一個好用的Winform 控制項 (部分免費)

目前的工作內容大多是開發應用程式,而這些應用程式往往會需要一些美觀的控制項,如此才可以提高使用者的使用意願,但是天下沒有白吃的午餐,無論是控制項或是Icon大多公司都會請美工人員專門設計,原因是因為市面上所賣的Icon或是控制項,價錢皆不會很親民,所以除非是有需要產品化的應用程式,否則購買這些還真可以說是一筆不小的成本。所以我今天介紹一個還算不錯用的控制項,雖然不是全部免費不過也可以算是不錯的工具了。

首先先到此網站



右邊可以下載此安裝包



在之前是可以直接下載的~後來不知道時麼原因改版時就變成註冊Email,他會將下載位置寄到您的信箱,我想這樣做可能也是方便記錄一些資訊吧。

下載完成之後安裝您就會在 Visual Studio 200x 的控制項裡看到



安裝完也提供一些Sample給您參考 ~ 真是貼心阿~



目前來說 Ribbon、Navigator、Workspace等等都是要收費的,雖然沒有全部免費,不過也已經算是很好用的控制項了。

聲明 : 我可是沒有拿任何廣告費用喔 ~ 純屬個人推薦 ~

Windows 7 64bit 執行應用程式出現錯誤

因為目前新的電腦大多有搭載windows 7,所以在今天終於碰到一個問題,在 Windows 7 (64bit) 上安裝應用程式時無法啟動,會出現錯誤。這其實並不是windows 7的Bug,而是在應用程式編譯時組態設定錯誤,修正此錯誤的方法為 : 編譯前將 "目標平台" 設定為 "x86" ,設定方式如下

C# and VB.Net :

1. 先選擇上方的 "方案平台" 下拉選擇 "x86" 若沒有顯示 "x86" 請點選 "組態管理員"


2. 組態管理員內新增專案平台

組態管理員 :


新增專案平台 :


3.選擇您所需要的方案組態(Debug、Release)與搭配的平台這裡要選 "x86" 否則在Win 7 64bit上執行會出現程式錯誤無法開啟



從上面的設定就可以讓應用程式在win 7 64bit上被開啟,會造成此錯誤的主要原因是因為,應用程式裡有32bit的dll而在win 7 64bit上他會判斷錯誤所以必須要再編譯前先將平台改成x86如此一來即可以在win 7 64bit上執行您自己製作的應用程式。

新建立的部落格

看標題就應該很明白了 ~ 因為程式碼真的是多到難以掌控,所以建立一個空間,這裡記錄了相關的程式片段以及使用方法,當然也包含在網路上找的的Code或是技術分享的資料,也希望能夠在網路上與朋友技術交流 ~ 若有任何問題也歡迎大家一起討論~~