上一個主題: 運算子下一個主題: 範例:建立本土化的設定樹狀目錄


一般指令

下列是用於 CA DMM 指令檔中的「一般」指令:

break

將控制流跳到立即迴圈的結尾並執行迴圈之後的第一個指令。 這與傳回不同,傳回會離開所有迴圈及函數範圍。 Break 只在迴圈中有意義。

範例:
function Foo()
{
     while (true)
     {
          while (z < 5)
          {
               ...
               if (x == false)
               {
               break;     // 跳到 while (z < 5) {} 之後的那一行
               }
               if (y == true)
               {
          return 5;     // 立即從 Foo() 返回
               }
          }
          if (x == false)
          {
               break;     // 跳到 while (true) {} 之後的那一行
          }
     }
     ...
     return -1;	// 立即從 Foo() 返回
}
ConvertBinaryToString

將二進位字串轉換為 ASCII 字串。 它有一個必要的參數,即包含要轉換的二進位資料的字串。 第二個參數是選擇性參數,而且是二進位。 如果布林值為真,則會將它轉換為 UNICODE 字串。 但是,如果為假,則會將它轉換為 ASCII 字串。

第一個參數:

二進位字串

第二個參數:

布林值

使用方式:
ConvertBinaryToString(<值>,[布林]);
範例:
var result = ConvertBinaryToString("000FFFDCB709E")
ConvertStringToBinary

將 ASCII 字串轉換為二進位字串。 它有一個必要的參數,即要轉換的 ASCII 字串。 第二個參數是選擇性參數。 如果此參數為真,則會將它轉換為 UNICODE 二進位。

第一個參數:

ASCII 字串

第二個參數:

布林值

使用方式:
ConvertStringToBinary(<值>,[布林]);
範例:
var result = ConvertStringToBinary("將這個字串轉換為二進位")
Detect

指定與指令檔相關聯的應用程式。 只有一個應用程式可以跟指令檔相關聯。 在來源電腦上,會從 Detection 函數呼叫它。 在目的地電腦上,可以從任何位置呼叫它來解析應用程式路徑。 解譯器會解析 APPLICATIONPATH 關鍵字,它是無效的,且不應該在發出此呼叫之前使用。 指令檔應會在 Detection 函數中呼叫 Detect 來避免不必要的處理。

Detect 的參數是執行檔名稱及選擇性的登錄機碼值。 這兩個參數都是字串值。 登錄值路徑參數是登錄值的完整路徑,其中包含執行檔的路徑。 如果登錄值是預設參數,路徑應以機碼名稱及斜線結尾 (請參閱下列範例)。 在 Detection 函數中,指令檔必須檢查 Detect 的傳回值來判斷要繼續處理指令檔還是要終止指令檔。

第一個參數:

執行檔名稱 (字串值)

第二個參數:

登錄值路徑 (字串值)

使用方式:
Detect ( <執行檔名稱>, [Registry path] );
範例:
if( Detect( "MyApp.exe", "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\MyApp.exe\\"  ) == false)
{
     return;
}
if (Detect ( <執行檔名稱>) == false)
return;
Execute

執行執行檔或 dll。 如果 execute 找不到要呼叫的檔案或 dll,函數會傳回假。

第一個參數:

第一個參數是要執行的項目的路徑。 如果是 dll 的路徑,API 函數必須在兩個冒號之後。 dll 呼叫的格式為 PATH::APIFunctionName。 dll 的「執行」只會尋找兩種函數類型中的呼叫:

    int FunctionName();
    int FunctionName( const char * );
第二個參數:

如果呼叫使用指令行引數,請輸入引數或輸入空白字串。

第三個參數:

指示指令碼是否將等待「執行檔」完成的「布林」值。 dll 呼叫會忽略此參數。

範例:
/*對下列檔案執行 notepad,myfile.txt,並等待處理結束。*/
Execute( "c:\\windows\\notepad.exe", "myfile.txt", true );

/*執行 Notepad 但不加任何參數也不等待。*/
Execute( "c:\\windows\\notepad.exe" );

/* 用參數呼叫 dll*/
Execute( "c\\windows\\Somelib.dll::CheckNetwork", "000d1");

**注意 dll PATH::APIFunctionName 的格式
結束

結束指令檔。 如果此關鍵字後面有一個值,會將它寫入到「除錯」及「錯誤記錄」中。 圓括號是選擇性的選項。

範例:
Exit ("Exiting because MS Word does not exist on machine.");
ExpandString

在指定字串中延伸所有環境並傳回結果。

第一個參數:

包含環境變數的字串。

使用方式:
ExpandString(<字串>);
範例:
var result = ExpandString("%WinDir%")
GetEngineData

依據 CommandID 傳回引擎相關的資料。 它會在傳遞錯誤的 CommandID 時傳回錯誤。 您可以在移轉的兩端 (儲存和套用) 使用此指令。

注意:您無法在舊版本的產品中使用此指令。 如果您嘗試在舊版本的 CA DMM 中使用此指令,該指令會出現語法錯誤。

第一個參數:

CommandID (例如,GET_CUR_SEL),可取得目前選取的節點名稱 (應用程式或系統設定) 進行移轉。

使用方式:
GetEngineData(<CommandID>);
範例:
var strNewPath = GetEngineData(GET_CUR_SEL)
GetMappedPath

傳回對映至新電腦的新「檔案」路徑。 此指令也能夠使用採用不同分隔字元 (非一般的 \\ 字元) 的路徑。

第一個參數:

舊檔案路徑 (字串值)

第二個參數:

路徑分隔符號 (字串值)

使用方式:
GetMappedPath( <舊檔案路徑>, [<路徑分隔符號>] );
範例:
newPath = GetMappedPath("c:\\old path\\file.txt");
/* newPath 將等於新檔案路徑。*/		
oldPath = "c:_old path_file.txt";
newPath = GetMappedPath( oldPath, "_" );
/* newPath 將等於含有分隔字元的新檔案路徑*/
/* 例如 newPath 可能等於 e:_new path_file.txt*/
GetPlatform

傳回電腦的平台。 傳回值為:WIN2000、WINXP、 WINVI 或 WIN7 (請參閱「定義清單」)。 需要用一個參數來指示要取得來源電腦還是目的地電腦的平台。 此參數是選擇性的選項,且為「布林」值。 預設為假,表示目的地;真表示目前電腦。

附註:「布林」參數只能在 General 與 Apply 函數期間使用。 若以其他方法使用,參數會導致語法錯誤或執行時期錯誤。

第一個參數:

電腦 (布林值)

使用方式:
GetPlatform( [Boolean] );
範例:
if (GetPlatform(DESTINATION) == WINXP)
    ApplyWinXPWord();
IsLikeNT

查詢作業系統以決定這是 Windows 2000、Windows XP、Windows Vista 或 Windows 7。 此參數為選擇性的選項。 如為 [真],CA DMM 會取得來源電腦的 OS,否則會取得目的地電腦的 OS。 預設為假。

附註:在 General 與 Apply 函數期間,參數只能設定為 [真]。 如果用於 Store 函數中,參數會導致語法錯誤或執行時期錯誤。

第一個參數:

電腦 (布林值)

使用方式:
值 = IsLikeNT([布林]);
範例:
IsLikeNT(SOURCE);
MapPath

在指令檔期間將一個路徑對映至另一個路徑。 此路徑對映適用於目前指令檔中的 MapPath 關鍵字之後的所有「套用」作業。 此關鍵字具有在下列作業中以 <新路徑> 取代符合 <舊路徑> 的所有路徑的效果:ApplyDirectory、ApplyFile 和 ApplyMappedValue。

第一個參數:

舊路徑 (字串值)

第二個參數:

新路徑 (字串值)

使用方式:
MapPath(<舊路徑>, <新路徑>);
範例:
MapPath("c:\\winword\\data", "c:\\winword\\Application Data");
Message

為使用者顯示訊息。 此指令使用一個參數,且為字串值。 圓括號是選擇性的選項。

第一個參數:

訊息文字 (字串值)

使用方式:
Message ( <字串> );
範例:
Message ("help!");
Option

建立在設定頁面上顯示的選項。 它也會針對選項與 Store 及 Apply 函數相關聯。 如果使用者選擇選項,解譯器會叫用與選項相關聯的函數。 要顯示的敘述式可以使用斜線來指定階層。 例如,Microsoft Word\\Toolbar 選項會將 Microsoft Word 顯示在一行上,「工具列」則以縮排顯示在選項樹狀目錄檢視的下一行上。

第一個參數:

選項路徑 (字串值)

第二個參數:

Store 函數名稱 (字串值)

第三個參數:

Apply 函數名稱 (字串值)

第四個參數:

請參閱範例:建立本土化的設定樹狀目錄

使用方式:
Option( <option path>, [Store function name], [Apply function name], [LanguageIndependentPath]);
範例:
Option ( "Microsoft Word\\Toolbar");
Option( "MicrosoftWord\\Toolbar\\Tooltips", "StoreTooltips", "ApplyTooltips", "msword\\toolbar\\tooltips");

如果使用者選取此項目,則解譯器會呼叫 Store 與 Apply 函數。 如果使用者選取選項,也會叫用選項的母函數。

列印

將訊息列印至「活動記錄」與「除錯記錄」。 圓括號是選擇性的選項。 此指令使用一個參數,它是字串值。 針對選擇性的第二參數資訊,請參閱「列印層級」。 若未指定「列印層級」,參數會預設為 GENERAL。

第一個參數:

string (string value)

使用方式:
print  (<字串>);
範例:
Print ("警告:檔案 win.ini 將被覆寫");
PrintException

將字串列印至「例外記錄」。 「例外記錄」可用來檢視 CA DMM 無法移動或張貼移轉指令的項目。 例如,Netscape Communicator 指令檔會將說明升級程序的詳細指令列印到「例外記錄」。 MS Word 指令檔會列印出無法升級的設定。 PrintException 指令只能在 ApplyFunction 中使用。 如需選擇性的第二參數資訊,請參閱〈列印層級〉。 若未指定「列印層級」,參數會預設為 GENERAL。

第一個參數:

string (string value)

使用方式:
PrintException (<字串>);
範例:
PrintException ("請移除檔案 c:\\windows\\netscapecommunication.ttt");
RetrieveValue

從來源電腦或目的地電腦中擷取登錄機碼值。 它可能會用到三個參數:機碼路徑、值名稱及「布林」。 前兩個參數是必要項目,且為字串值。 第三個參數是選擇性的選項。 如果第三個參數為 [真],CA DMM 會查看來源電腦,否則會查看目的地電腦。 預設為假。 如果無法擷取值,指令會傳回假。

附註:第三個「布林」參數只能在 General 與 Apply 函數期間使用。 若以其他方法使用,第三個「布林」參數將會導致語法錯誤或執行時期錯誤。

第一個參數:

機碼路徑 (字串值)

第二個參數:

值名稱 (字串值)

第三個參數:

電腦 (布林值)

使用方式:
Value = RetrieveValue(<機碼路徑>, <值名稱>, [布林]);
範例:
RetrieveValue( "HKCU\\Software\\Microsoft\\Office\\8.0\\Common\\Toolbar", "Tooltips", SOURCE);
RetrieveValue( "HKCU\\Software\\Microsoft\\Office\\8.0\\Common\", "Tooltips", DESTINATION);
RestartRequired

指示 CA DMM 在移轉結束時顯示必須重新啟動的對話方塊。 此函數用於需要重新啟動才能成功移轉的指令檔。 唯一的必要參數是指示指令檔是否需要重新啟動的「布林」。

第一個參數:

(布林值)

使用方式:
RestartRequired(<布林>);
範例:
RestartRequired(true);