2010年11月21日 星期日

Form快速鍵

假設你在程式執行的時候,需要按"tab"、"Shift"、"Ctrl"、"F1"等按鍵來執行特殊的事情,可以使用Form的OnShortCut的event。如下圖:





裡面Code的寫法可以如下:

if(Msg.Result){

switch(Msg.CharCode){

case VF_F1:

ShowMessage("Press F1");

default:

break;

}

}

當使用者按下"F1"按鍵時,會出現訊息框顯示"Press F1"。

Virtual Key Table可以參考底下的連結:

msdn.microsoft.com/en-us/library/ms927178.aspx

2010年11月18日 星期四

BCB設定

1.
BCB會使用pre-compiler headers在第一次編譯時將#pragma hdrstop 前面的header檔存在*.pch , *.#00, *.#01,...這些檔案。如果不想產生這些檔案,可以點選Project->Options,出現的設定中,在C++ Compiler->Precompiled headers中的Use Precompiled Headers選擇"Do not use"就可以。如下圖:
2.
在編譯的過程中,會產生*.obj檔案,可以放在一個資料夾內,之後再一起刪除。若要設定資料夾,可以點選Project->Options,出現的設定中,在C++ Compiler->Paths and Defines中的.obj output directory選擇資料夾就可以。如下圖:

3.
BCB將Source Code儲存後,會將之前的檔案備份在__history資料夾內,若不要存備份檔,可以點選Tools->Options,出現的設定中,在Editor Options的Create backup files中不要勾選。如下圖:


4.
若要讓程式在沒有BCB環境下執行,(1)可以點選Project->Options,出現的設定中,在Linker->Linking中的Dynamic RTL不要勾選就可以,如下圖:

(2)可以點選Project->Options,出現的設定中,在Packages中的Build with runtime packages不要勾選就可以,如下圖:


在BCB使用VC的Lib

可以用BCB的Tool將VC的Lib轉換為BCB可用的Lib
在有安裝BCB的環境下,在Command Line中打
coff2omf vc.lib bcb.lib
即可

coff2omf的解釋如下:
COFF2OMF will convert a COFF import library file (InputFile)
to the corresponding OMF type import library file (OutputFile).

COFF格式解釋如下:

OMF格式在底下 的連結有解釋:




2010年6月14日 星期一

NSIS - 新增程式連結到控制台

寫法可以參考:

主要寫在Registry的地方有兩個地方:
(1)HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\${GUID}
(2)HKCR\CLSID\${GUID}

產生GUID的方法可以參考:

移除的方法,如果使用NSIS的方法,則如下:
(1)DeleteRegKey HKCR "CLSID\${GUID}"
(2)DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\${GUID}"

如果用程式移除,在32bit OS的位置相同,在64bit OS的位置則如下:
(1)HKCR\Wow6432Node\CLSID\GUID
(2)HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\GUID

2010年6月2日 星期三

CMMI-建構管理

流程領域:支援類
目的:
使用建構識別、建構控制、建構狀態紀錄及建構稽核,來達到建立與維護工作產品之完整性。
包含的活動:
(1)界定所選定之工作產品的建構,這些工作產品在特定的時間點會組成基準。
(2)管制建構項目的變更。
(3)建立或提供規格,以便從建構管理系統建造工作產品。
(4)維護基準的完整性。
(5)提供正確的狀態和目前的建構資料給發展人員、最終使用者及客戶。

特定目標與實務如下:
SG1建立工作產品基準
SP1.1 界定建構項目、元件、相關工作產品
SP1.2 建立建構管理系統、變更管理系統
SP1.3 建立或發行基準
SG2追蹤並管制變更
SP2.1 追蹤變更申請
SP2.2 管制建構項目、控制變更狀況
SG3建立基準完整性
SP3.1 建立建構管理紀錄
SP3.2 實施建構稽核,維護建構基準的完整性

特定目標與實務的關係如下圖:



NSIS .NET Version

方法一:
使用GetCORVersion
可參考:
用法如下:
System::Call "mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1 ?u"
Pop $0
此用法為判斷C:\WINDOWS\Microsoft.NET\Framework裡面的.NET版本資訊。
但僅限於到2.0的版本。
我的電腦已安裝到4.0的版本如下:

但使用此方法顯示出來的版本號碼為:

方法二:
利用Registry來做判斷
可參考:
用法如下:(判斷是否有安裝3.0)
StrCpy $R1 "SOFTWARE\Microsoft\.NETFramework"
StrCpy $R2 0
StartEnum:
EnumRegKey $R3 HKLM "$R1" $R2
StrCmp $R3 "" noDotNet notEmpty
notEmpty:
StrCpy $R4 $R3 1 0
StrCmp $R4 "v" +1 goNext

StrCpy $R4 $R3 1 1
StrCmp $R4 "3" +1 goNext

StrCpy $R4 $R3 1 3
StrCmp $R4 "0" +1 goNext
MessageBox MB_OK $R3
Return
goNext:
IntOp $R2 $R2 + 1
goto StartEnum

noDotNet:
MessageBox MB_OK "You must have the 3.0 or newer .NET Framework installed!"
Quit
我的電腦在Registry的.NET資訊如下:

可取得有3.0的版本資訊

此方法可用於判斷是否已安裝需要的.NET版本。

2010年6月1日 星期二

NSIS Sections

NSIS的安裝與移除由許多的Sections所構成。Section的名稱若是安裝的部份,則用一般名稱即可,例如:"Section1"。若為移除的部份,則名稱前面加"un.",例如:"un.Section1"。
在自訂頁面的選項加入Page components即出現Section選取的畫面。

若要使Section3消失在頁面,可在名稱中加"-",
例如:
Section "-Section3"
SectionEnd


即消失在頁面中,且在執行Installer中會執行Section3的部份。

若要使Section1必勾選,則加入"SectionIn RO"。如下:
Section "Section1"
SectionIn RO #Read Only
SectionEnd


若要使Section2預設沒勾選,則在Section後加"/o"。如下:
Section /o "Section2"
SectionEnd