码迷,mamicode.com
首页 > Windows程序 > 详细

Delphi 常用函数记录

时间:2014-10-18 15:11:31      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:des   blog   io   os   ar   for   sp   文件   div   

//判断是否是数字  
function IsNumeric(sDestStr: string): Boolean;  
//简写多余汉字  
function SimplifyWord(sWord: string; iMaxLen: Integer): string;  
//读写取注册表中的字符串值  
function ReadRegStr(sDWName, KeyName: string; SvrBZ: TSvrOrClient; DefaultValue: string = ‘‘): string;  
procedure WriteRegStr(sDWName, KeyName, KeyValue: string; SvrBZ: TSvrOrClient;const isExpand : boolean = false);  
//取本机机器名  
function GetComputerName: string;  
//显示消息框  
procedure InfMsg(const hHandle: HWND; const sMsg: string);  
procedure ClmMsg(const hHandle: HWND; const sMsg: string);  
procedure ErrMsg(const hHandle: HWND; const sMsg: string);  
function ConfirmMsg(const hHandle: HWND; const sMsg: string): Boolean;  
//检查驱动器类型是否是CDROM  
function CheckCDRom(sPath: string): Boolean;  
//检查驱动器是否存在  
function CheckDriver(sPath: string): Boolean;  
//获得windows临时目录  
function GetWinTempDir: string;  
//取系统目录  
function GetSystemDir: string;  
//等待执行Winexe  
function WinExecAndWait32(Path: PChar; Visibility: Word; Timeout: DWORD): integer;  
//在所有子目录中查找文件  
function SearchFiles(DirName: string; //启始目录  
  Files: TStrings; //输出字符串列表  
  FileName: string = ‘*.*‘; //文件名  
  Attr: Integer = faAnyFile; //文件属性  
  FullFileName: Boolean = True; //是否返回完整的文件名  
  IncludeNormalFiles: Boolean = True; //是否包括Normal属性的文件  
  IncludeSubDir: Boolean = True): Boolean; //是否在下级目录中查找  
//查找所有子目录  
function SearchDirs(DirName: string;  
  Dirs: TStrings;  
  FullFileName: Boolean = True; //是否返回完整的文件名  
  IncludeSubDir: Boolean = True): Boolean; //是否在下级目录中查找  
//删除所有文件夹和文件  
procedure DeleteTree(sDir: string);  
//删除文件的只读属性  
procedure DelReadOnlyAttr(sFileName: string);  
//注册  
function Reg32(const sFilename: string): Integer;  
//获得桌面路径  
function GetDeskTopDir: string;  
//获得程序文件夹路径  
function GetProgramFilesDir: string;  
//获得操作系统版本 [0 windows98] [1 windowsNT] [2 Windows2000]  
function GetOSVersion: Integer;  
//创建快捷方式  
function CreateLink(aPathObj, aPathLink, aDesc: string; iIcon: Integer): Boolean;  
//文件操作,拷贝,移动,删除  
procedure FileOperator(Apphandle: HWND; Op: integer; Source, Dest: string);  
//取动态连接库版本  
procedure GetFileVersion(FileName: string; var Major1, Major2, Minor1, Minor2: Word);  
//安装新组件包  
function NewPack(const PackName, uID, pID: string): Boolean;  
//删除组件包  
function RemovePack(const PackName: string): boolean;  
//注册组件。返回结果 0--成功;1--创建新包出错  
function Install_Component(const PackName, DllFile, uID, pID: string): integer;  
//删除指定名字的组件,名字是在组件服务中看到的组件的名字  
function Remove_Component(const IIobject: string): Boolean;  
//关闭组件  
function ShutdownPack(const PackName: string): Boolean;  
//检测组件是否存在  
function PackExists(const IIobject: string): Boolean;  
  
const  
  RegpathClient = ‘\SoftWare\Your Path\Client‘;  
  RegpathServer = ‘\SoftWare\Your Path\Server\‘;  
  CntStr: string = ‘Provider=SQLOLEDB.1;Password=%s;Persist Security Info=True;User ID=%s;Initial Catalog=%s;Data Source=%s‘;  
  CrDBStr: string = ‘CREATE DATABASE %s‘  
    + #13 + ‘ON‘  
    + #13 + ‘(NAME = ‘‘%s‘‘,‘  
    + #13 + ‘FILENAME = ‘‘%s%s.mdf‘‘,‘  
    + #13 + ‘SIZE = 1,‘  
    + #13 + ‘FILEGROWTH = 10%%)‘  
    + #13 + ‘LOG ON‘  
    + #13 + ‘(NAME = ‘‘%s‘‘,‘  
    + #13 + ‘FILENAME = ‘‘%s%s.ldf‘‘,‘  
    + #13 + ‘SIZE = 1,‘  
    + #13 + ‘FILEGROWTH = 10%%)‘;  
  LocalTestSQL: string = ‘SELECT * FROM Table‘;  
  CWTestSQL: string = ‘SELECT * FROM Table‘;  
  CXTestSQL: string = ‘SELECT * FROM Table‘;  
  
implementation  
  
function IsNumeric(sDestStr: string): Boolean;  
begin  
  Result := True;  
  try  
    StrToFloat(sDestStr);  
  except  
    Result := False;  
  end;  
end;  
  
function SimplifyWord(sWord: string; iMaxLen: Integer): string;  
var iCount: Integer;  
begin  
  if Length(sWord) > iMaxLen then  
  begin  
    Result := Copy(sWord, 1, iMaxLen - 2) + ‘..‘  
  end else  
  begin  
    for iCount := 1 to (iMaxLen - Length(sWord)) do  
      sWord := ‘ ‘ + sWord;  
    Result := sWord;  
  end;  
end;  
  
function ReadRegStr(sDWName, KeyName: string; SvrBZ: TSvrOrClient; DefaultValue: string = ‘‘): string;  
var sRegPath: string;  
begin  
  Result := DefaultValue;  
  if SvrBZ = scClient then  
    sRegPath := RegpathClient  
  else  
    if SvrBZ = scServer then  
       sRegPath := RegpathServer + sDWName  
    else  
       if SvrBZ = scNone then  
          sRegPath := sDWName;  
  with TRegistry.Create do  
  try  
    RootKey := HKEY_LOCAL_MACHINE;  
    OpenKey(sRegpath, False);  
    try  
      Result := ReadString(KeyName);  
    except  
    end;  
  finally  
    Free;  
  end;  
end;  
  
procedure WriteRegStr(sDWName, KeyName, KeyValue: string; SvrBZ: TSvrOrClient;const isExpand : boolean = false);  
var sRegPath: string;  
begin  
  if SvrBZ = scClient then  
    sRegPath := RegpathClient  
  else  
    if SvrBZ = scServer then  
       sRegPath := RegpathServer + sDWName  
    else  
       if SvrBZ = scNone then  
          sRegPath := sDWName;  
  with TRegistry.Create do  
  try  
    RootKey := HKEY_LOCAL_MACHINE;  
    OpenKey(sRegpath, True);  
    if isExpand then  
      WriteExpandString(KeyName, KeyValue)  
    else  
      WriteString(KeyName, KeyValue);  
  finally  
    Free;  
  end;  
end;  
  
function GetComputerName: string;  
var  
  PComputeName: array[0..MAX_COMPUTERNAME_LENGTH] of Char;  
  Length: DWord;  
begin  
  Length := SizeOf(PComputeName);  
  if Windows.GetComputerName(PComputeName, Length) then  
    Result := StrPas(PComputeName)  
  else  
    Result := ‘‘;  
end;  
  
procedure InfMsg(const hHandle: HWND; const sMsg: string);  
var szMsg, szTitle: array[0..1023] of Char;  
begin  
  MessageBox(hHandle, StrPCopy(szMsg, sMsg),  
    StrPCopy(szTitle, ‘系统信息‘), MB_OK or MB_ICONINFORMATION); //MB_ICONEXCLAMATION  
end;  
  
procedure ClmMsg(const hHandle: HWND; const sMsg: string);  
var szMsg, szTitle: array[0..1023] of Char;  
begin  
  MessageBox(hHandle, StrPCopy(szMsg, sMsg),  
    StrPCopy(szTitle, ‘系统信息‘), MB_OK or MB_ICONEXCLAMATION); //MB_ICONEXCLAMATION  
end;  
  
procedure ErrMsg(const hHandle: HWND; const sMsg: string);  
var szMsg, szTitle: array[0..1023] of Char;  
begin  
  MessageBox(hHandle, StrPCopy(szMsg, sMsg),  
    StrPCopy(szTitle, ‘系统信息‘), MB_OK or MB_ICONERROR); //MB_ICONEXCLAMATION  
end;  
  
function ConfirmMsg(const hHandle: HWND; const sMsg: string): Boolean;  
var szMsg, szTitle: array[0..1023] of Char;  
begin  
  StrPCopy(szMsg, sMsg);  
  StrPCopy(szTitle, ‘系统信息‘);  
  Result := MessageBox(hHandle, szMsg, szTitle, MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) = IDYES;  
end;  
  
function CheckCDRom(sPath: string): Boolean;  
var sTempWord: string;  
  DriveType: TDriveType;  
begin  
  Result := False;  
  if sPath = ‘‘ then Exit;  
  sTempWord := Copy(sPath, 1, 1);  
  DriveType := TDriveType(GetDriveType(PChar(sTempWord + ‘:\‘)));  
  if DriveType = dtCDROM then Result := True  
end;  
  
function CheckDriver(sPath: string): Boolean;  
var sTempWord: string;  
  DriveType: TDriveType;  
begin  
  Result := False;  
  if sPath = ‘‘ then Exit;  
  Result := True;  
  sTempWord := Copy(sPath, 1, 1);  
  DriveType := TDriveType(GetDriveType(PChar(sTempWord + ‘:\‘)));  
  if (DriveType = dtUnknown) or (DriveType = dtNoDrive) then Result := False;  
end;  
  
function GetWinTempDir: string;  
var  
  Path: array[0..Max_Path] of Char;  
  ResultLength: Integer;  
begin  
  ResultLength := GetTempPath(SizeOf(Path), Path);  
  if (ResultLength <= Max_Path) and (ResultLength > 0) then  
    Result := StrPas(Path)  
  else  
    Result := ‘C:\‘;  
end;  
  
function GetSystemDir: string;  
var  
  Path: array[0..Max_Path] of Char;  
  ResultLength: Integer;  
begin  
  ResultLength := GetSystemDirectory(Path, SizeOf(Path));  
  if (ResultLength <= Max_Path) and (ResultLength > 0) then  
    Result := StrPas(Path)  
  else  
    Result := ‘C:\‘;  
end;  
  
function WinExecAndWait32(Path: PChar; Visibility: Word;  
  Timeout: DWORD): integer;  
var  
  WaitResult: integer;  
  StartupInfo: TStartupInfo;  
  ProcessInfo: TProcessInformation;  
begin  
  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);  
  with StartupInfo do  
  begin  
    cb := SizeOf(TStartupInfo);  
    dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;  
         { you could pass sw_show or sw_hide as parameter: }  
    wShowWindow := visibility;  
  end;  
  if CreateProcess(nil, path, nil, nil, False,  
    NORMAL_PRIORITY_CLASS, nil, nil,  
    StartupInfo, ProcessInfo) then  
  begin  
    if TimeOut = 0 then  
      WaitResult := WaitForSingleObject(ProcessInfo.hProcess, infinite)  
    else  
      WaitResult := WaitForSingleObject(ProcessInfo.hProcess, TimeOut);  
    { timeout is in miliseconds or INFINITE if you want to wait forever }  
    Result := WaitResult;  
  end  
  else  
  { error occurs during CreateProcess see help for details }  
    Result := GetLastError;  
end;  
  
function SearchFiles(DirName: string;  
  Files: TStrings;  
  FileName: string = ‘*.*‘;  
  Attr: Integer = faAnyFile;  
  FullFileName: Boolean = True;  
  IncludeNormalFiles: Boolean = True;  
  IncludeSubDir: Boolean = True): Boolean;  
  procedure AddToResult(FileName: TFileName);  
  begin  
    if FullFileName then  
      Files.Add(DirName + FileName)  
    else  
      Files.Add(FileName);  
  end;  
var  
  SearchRec: TSearchRec;  
begin  
  DirName := IncludeTrailingBackslash(DirName);  
  Result := FindFirst(DirName + FileName, Attr, SearchRec) = 0;  
  if Result then  
    repeat  
    //去掉 ‘.‘ 和 ‘..‘  
      if (SearchRec.Name = ‘.‘) or  
        (SearchRec.Name = ‘..‘) then  
        Continue;  
    //如果包括普通文件  
      if IncludeNormalFiles then  
      //添加到查找结果中  
        AddToResult(SearchRec.Name)  
      else  
      //检查文件属性与指定属性是否相符  
        if (SearchRec.Attr and Attr) <> 0 then  
        //添加到查找结果中  
          AddToResult(SearchRec.Name);  
  
    //如果是子目录,在子目录中查找  
      if IncludeSubDir then  
        if (SearchRec.Attr and faDirectory) <> 0 then  
          SearchFiles(DirName + SearchRec.Name,  
            Files, FileName, Attr,  
            FullFileName,  
            IncludeNormalFiles,  
            IncludeSubDir);  
    until FindNext(SearchRec) <> 0;  
  FindClose(SearchRec);  
end;  
  
//查找所有子目录  
  
function SearchDirs(DirName: string;  
  Dirs: TStrings;  
  FullFileName: Boolean = True;  
  IncludeSubDir: Boolean = True): Boolean;  
begin  
  Result := SearchFiles(DirName, Dirs, ‘*.*‘, faDirectory, FullFileName, False, IncludeSubDir);  
end;  
  
procedure DeleteTree(sDir: string);  
var  
  sr: TSearchRec;  
begin  
  if sDir = ‘‘ then Exit;  
{$I-}  
  try  
    if FindFirst(sDir + ‘\*.*‘, faAnyFile, sr) = 0 then  
    begin  
      if not ((sr.Name = ‘.‘) or (sr.Name = ‘..‘)) then  
      begin  
        try  
          DelReadOnlyAttr(sDir + ‘\‘ + sr.Name);  
          DeleteFile(PChar(sDir + ‘\‘ + sr.Name));  
        except  
        end;  
      end;  
      while FindNext(sr) = 0 do  
      begin  
        if not ((sr.Name = ‘.‘) or (sr.Name = ‘..‘) or (sr.Attr = faDirectory)) then  
        begin  
          DelReadOnlyAttr(sDir + ‘\‘ + sr.Name);  
          DeleteFile(PChar(sDir + ‘\‘ + sr.Name));  
        end;  
        if (sr.Attr = faDirectory) and (sr.Name <> ‘.‘) and (sr.Name <> ‘..‘) then  
        try  
          DeleteTree(sDir + ‘\‘ + sr.Name);  
        except  
        end;  
      end;  
      Sysutils.FindClose(sr);  
      RmDir(sDir);  
    end;  
  except  
  end;  
end;  
  
procedure DelReadOnlyAttr(sFileName: string);  
var Attrs: Integer;  
begin  
  if not FileExists(sFileName) then Exit;  
  Attrs := FileGetAttr(sFileName);  
  if Attrs and faReadOnly <> 0 then  
    FileSetAttr(sFileName, Attrs - faReadOnly);  
end;  
  
function Reg32(const sFilename: string): Integer;  
var res: integer;  
  exe_str: string;  
begin  
  exe_str := ‘regsvr32.exe /s "‘ + sFilename + ‘"‘;  
  res := WinExec(pchar(exe_str), SW_HIDE);  
  case res of  
    0: Result := 1; // out of memory;  
    ERROR_BAD_FORMAT: Result := 2; //The .EXE file is invalid (non-Win32 .EXE or error in .EXE image).  
    ERROR_FILE_NOT_FOUND: Result := 3; //The specified file was not found.  
    ERROR_PATH_NOT_FOUND: Result := 4; //The specified path was not found  
  else  
    Result := 0;  
  end;  
end;  
  
function GetDeskTopDir: string;  
var PIDL: PItemIDList;  
  Path: array[0..MAX_PATH] of Char;  
begin  
  SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL);  
  SHGetPathFromIDList(PIDL, Path);  
  Result := Path;  
end;  
  
function GetProgramFilesDir: string;  
var PIDL: PItemIDList;  
  Path: array[0..MAX_PATH] of Char;  
begin  
  SHGetSpecialFolderLocation(0, CSIDL_PROGRAMS, PIDL);  
  SHGetPathFromIDList(PIDL, Path);  
  Result := Path;  
end;  
  
function GetOSVersion: Integer;  
var  
  OSVer: TOSVERSIONINFO;  
begin  
  OSVer.dwOSVersionInfoSize := Sizeof(TOSVERSIONINFO);  
  GetVersionEx(OSVer);  
  if OSVer.dwPlatformId = 1 then  
    Result := 0  
  else if (OSVer.dwPlatformId = 2) and (OSVer.dwMajorVersion = 4) then  
    Result := 1  
  else if (OSVer.dwPlatformId = 2) and (OSVer.dwMajorVersion = 5) then  
    Result := 2  
  else Result := -1;  
end;  
  
function CreateLink(aPathObj, aPathLink, aDesc: string; iIcon: Integer): Boolean;  
const  
  IID_IPersistFile: TGUID = (D1: $0000010B; D2: $0000; D3: $0000; D4: ($C0, $00, $00, $00, $00, $00, $00, $46));  
var sLink: IShellLink;  
  PersFile: IPersistFile;  
begin  
  Result := false;  
  if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil,  
    CLSCTX_INPROC_SERVER, IID_IShellLinkA, sLink)) then  
  begin  
    sLink.SetPath(PChar(aPathObj));  
    sLink.SetWorkingDirectory(pChar(ExtractFilePath(aPathObj)));  
    sLink.SetDescription(PChar(aDesc));  
    if iIcon >= 0 then sLink.SetIconLocation(PChar(aPathObj), iIcon);  
    if SUCCEEDED(sLink.QueryInterface(IID_IPersistFile, PersFile)) then  
    begin  
      PersFile.Save(StringToOLEStr(aPathLink), TRUE);  
      Result := true;  
    end;  
  end;  
end;  
  
procedure FileOperator(Apphandle: HWND; Op: integer; Source, Dest: string);  
var  
  FileOperator: TSHFileOpStruct;  
  CharSetFrom, CharSetTo: array[0..1023] of char;  
begin  
  FileOperator.Wnd := Apphandle;  
  FileOperator.wFunc := Op;  
  FileOperator.fFlags := FileOperator.fFlags + FOF_NOCONFIRMATION;  
  FillChar(CharSetFrom, SizeOf(CharSetFrom), #0);  
  CopyMemory(@CharSetFrom[0], @Source[1], Length(Source));  
  FileOperator.pFrom := @CharSetFrom[0];  
  FillChar(CharSetTo, SizeOf(CharSetTo), #0);  
  CopyMemory(@CharSetTo[0], @Dest[1], Length(Dest));  
  FileOperator.pTo := @CharSetTo[0];  
  SHFileOperation(FileOperator);  
end;  
  
procedure GetFileVersion(FileName: string; var Major1, Major2, Minor1, Minor2: Word);  
var  
  Info: Pointer;  
  InfoSize: DWORD;  
  FileInfo: PVSFixedFileInfo;  
  FileInfoSize: DWORD;  
  Tmp: DWORD;  
begin  
  InfoSize := GetFileVersionInfoSize(PChar(FileName), Tmp);  
  Major1 := 0; Major2 := 0; Minor1 := 0; Minor2 := 0;  
  if InfoSize = 0 then  
    //file doesnt have version info/exist  
  else  
  begin  
    GetMem(Info, InfoSize);  
    try  
      GetFileVersionInfo(PChar(FileName), 0, InfoSize, Info);  
      VerQueryValue(Info, ‘\‘, Pointer(FileInfo), FileInfoSize);  
      Major1 := FileInfo.dwFileVersionMS shr 16;  
      Major2 := FileInfo.dwFileVersionMS and $FFFF;  
      Minor1 := FileInfo.dwFileVersionLS shr 16;  
      Minor2 := FileInfo.dwFileVersionLS and $FFFF;  
    finally  
      FreeMem(Info, FileInfoSize);  
    end;  
  end;  
end;  
  
function PackExists(const IIobject: string): Boolean;  
var  
  MTS_catalog: MTSAdmin_TLB.ICatalog;  
  MTS_catalogpack, MTS_componentsInPack: MTSAdmin_TLB.ICatalogCollection;  
  MTS_catalogobject, MTS_catalogcomponent: MTSAdmin_TLB.ICatalogObject;  
  COM_catalog: COMAdmin_TLB.ICOMAdminCatalog;  
  COM_catalogpack, COM_componentsInPack: COMAdmin_TLB.ICatalogCollection;  
  COM_catalogobject, COM_catalogcomponent: COMAdmin_TLB.ICatalogObject;  
  ww, qq: integer;  
begin  
  result := false;  
  try  
    case GetOSVersion of  
      1: begin  
          MTS_catalog := MTSAdmin_TLB.CoCatalog.Create;  
          MTS_catalogpack := MTS_catalog.GetCollection(‘Packages‘) as MTSAdmin_TLB.ICatalogCollection;  
          MTS_catalogpack.Populate;  
          for ww := 0 to MTS_catalogpack.Count - 1 do  
          begin  
            MTS_catalogobject := MTS_catalogpack.Get_Item(ww) as MTSAdmin_TLB.ICatalogObject;  
            MTS_componentsInPack := MTS_catalogpack.GetCollection(‘ComponentsInPackage‘, MTS_catalogobject.Key) as MTSAdmin_TLB.ICatalogCollection;  
            try  
              MTS_componentsInPack.Populate;  
              for qq := 0 to MTS_componentsInPack.Count - 1 do  
              begin  
                MTS_catalogcomponent := (MTS_componentsInPack.item[qq] as MTSAdmin_TLB.ICatalogObject);  
                if uppercase(MTS_catalogcomponent.name) = uppercase(IIObject) then  
                begin  
                  MTS_componentsInPack.Remove(qq);  
                  MTS_componentsInPack.SaveChanges;  
                  result := True; break;  
                end;  
              end;  
            except  
              continue;  
            end;  
            if result then break;  
          end;  
        end;  
      2: begin  
          COM_catalog := COMAdmin_TLB.CoCOMAdminCatalog.Create;  
          COM_catalogpack := COM_catalog.GetCollection(‘Applications‘) as COMAdmin_TLB.ICatalogCollection;  
          COM_catalogpack.Populate;  
          for ww := 0 to COM_catalogpack.Count - 1 do  
          begin  
            COM_catalogobject := COM_catalogpack.Get_Item(ww) as COMAdmin_TLB.ICatalogObject;  
            COM_componentsInPack := COM_catalogpack.GetCollection(‘Components‘, COM_catalogobject.Key) as COMAdmin_TLB.ICatalogCollection;  
            try  
              COM_componentsInPack.Populate;  
              for qq := 0 to COM_componentsInPack.Count - 1 do  
              begin  
                COM_catalogcomponent := (COM_componentsInPack.item[qq] as COMAdmin_TLB.ICatalogObject);  
                if uppercase(COM_catalogcomponent.name) = uppercase(IIObject) then  
                begin  
                  result := True; break;  
                end;  
              end;  
            except  
              continue;  
            end;  
            if result then break;  
          end;  
        end;  
    end;  
  finally  
    COM_catalogobject := nil;  
    COM_catalogpack := nil;  
    COM_catalog := nil;  
    MTS_catalogobject := nil;  
    MTS_catalogpack := nil;  
    MTS_catalog := nil;  
  end;  
end;  
  
function NewPack(const PackName, uID, pID: string): Boolean;  
var  
  MTS_catalog: MTSAdmin_TLB.ICatalog;  
  MTS_catalogpack: MTSAdmin_TLB.ICatalogCollection;  
  MTS_catalogobject: MTSAdmin_TLB.ICatalogObject;  
  COM_catalog: COMAdmin_TLB.ICOMAdminCatalog;  
  COM_catalogpack: COMAdmin_TLB.ICatalogCollection;  
  COM_catalogobject: COMAdmin_TLB.ICatalogObject;  
  ww: integer;  
  Pack_Name: string;  
  Pack_Existed: Boolean;  
begin  
  Pack_Existed := False;  
  Pack_Name := Trim(uppercase(PackName));  
  try  
    Result := False;    
    case GetOSVersion of  
      1: begin // winnt  
          MTS_catalog := MTSAdmin_TLB.CoCatalog.Create;  
          MTS_catalogpack := MTS_catalog.GetCollection(‘Packages‘) as MTSAdmin_TLB.ICatalogCollection;  
          MTS_catalogpack.Populate;  
          for ww := 0 to MTS_catalogpack.Count - 1 do  
          begin  
            MTS_catalogobject := MTS_catalogpack.Get_Item(ww) as MTSAdmin_TLB.ICatalogObject;  
            if uppercase(MTS_catalogobject.Value[‘Name‘]) = Pack_Name then  
            begin  
              Pack_Existed := True;  
              //MTS_catalogobject.Value[‘Activation‘] := ‘Local‘;  
              MTS_catalogpack.SaveChanges;  
              //MTS_catalogobject.Value[‘Identity‘] := uID;  
              //MTS_catalogobject.Value[‘Password‘] := pID;  
              MTS_catalogpack.SaveChanges;  
              Break;  
            end;  
          end;  
          if not Pack_Existed then  
          begin  
            MTS_catalogobject := MTS_catalogpack.Add as MTSAdmin_TLB.ICatalogObject;  
            MTS_catalogobject.Value[‘Name‘] := PackName;  
            //MTS_catalogobject.Value[‘Identity‘] := uID;  
            //MTS_catalogobject.Value[‘Password‘] := pID;  
            //MTS_catalogobject.Value[‘Activation‘] := ‘Local‘;  
            MTS_catalogpack.SaveChanges;  
          end;  
        end;  
      2: begin //win2000  
          COM_catalog := COMAdmin_TLB.CoCOMAdminCatalog.Create;  
          COM_catalogpack := COM_catalog.GetCollection(‘Applications‘) as COMAdmin_TLB.ICatalogCollection;  
          COM_catalogpack.Populate;  
          for ww := 0 to COM_catalogpack.Count - 1 do  
          begin  
            COM_catalogobject := COM_catalogpack.Get_Item(ww) as COMAdmin_TLB.ICatalogObject;  
            if uppercase(COM_catalogobject.Value[‘Name‘]) = Pack_Name then  
            begin  
              Pack_Existed := True;  
              //COM_catalogobject.Value[‘Activation‘] := ‘Local‘;  
              //COM_catalogpack.SaveChanges;  
              //COM_catalogobject.Value[‘Identity‘] := uID;  
              //COM_catalogobject.Value[‘Password‘] := pID;  
              COM_catalogpack.SaveChanges;  
              Break;  
            end;  
          end;  
          if not Pack_Existed then  
          begin  
            COM_catalogobject := COM_catalogpack.Add as COMAdmin_TLB.ICatalogObject;  
            COM_catalogobject.Value[‘Name‘] := PackName;  
            //COM_catalogobject.Value[‘Identity‘] := uID;  
            //COM_catalogobject.Value[‘Password‘] := pID;  
            //COM_catalogobject.Value[‘Activation‘] := ‘Local‘;  
            COM_catalogpack.SaveChanges;  
          end;  
        end;  
    end;  
    Result := True;  
  finally  
    COM_catalogobject := nil;  
    COM_catalogpack := nil;  
    COM_catalog := nil;  
    MTS_catalogobject := nil;  
    MTS_catalogpack := nil;  
    MTS_catalog := nil;  
  end;  
end;  
  
function RemovePack(const PackName: string): boolean;  
var  
  MTS_catalog: MTSAdmin_TLB.ICatalog;  
  MTS_catalogpack: MTSAdmin_TLB.ICatalogCollection;  
  MTS_catalogobject: MTSAdmin_TLB.ICatalogObject;  
  COM_catalog: COMAdmin_TLB.ICOMAdminCatalog;  
  COM_catalogpack: COMAdmin_TLB.ICatalogCollection;  
  COM_catalogobject: COMAdmin_TLB.ICatalogObject;  
  ww: integer;  
  Pack_Name: string;  
begin  
  Pack_Name := Trim(uppercase(PackName));  
  try  
    Result := false;    
    case GetOSVersion of  
      1: begin //winnt  
          MTS_catalog := MTSAdmin_TLB.CoCatalog.Create;  
          MTS_catalogpack := MTS_catalog.GetCollection(‘Packages‘) as MTSAdmin_TLB.ICatalogCollection;  
          MTS_catalogpack.Populate;  
          for ww := 0 to MTS_catalogpack.Count - 1 do  
          begin  
            MTS_catalogobject := MTS_catalogpack.Get_Item(ww) as MTSAdmin_TLB.ICatalogObject;  
            if uppercase(MTS_catalogobject.Value[‘Name‘]) = Pack_Name then  
            begin  
              MTS_catalogpack.Remove(ww);  
              MTS_catalogpack.SaveChanges;  
              Break;  
            end;  
          end;  
        end;  
      2: begin //win2000  
          COM_catalog := COMAdmin_TLB.CoCOMAdminCatalog.Create;  
          COM_catalogpack := COM_catalog.GetCollection(‘Applications‘) as COMAdmin_TLB.ICatalogCollection;  
          COM_catalogpack.Populate;  
          for ww := 0 to COM_catalogpack.Count - 1 do  
          begin  
            COM_catalogobject := COM_catalogpack.Get_Item(ww) as COMAdmin_TLB.ICatalogObject;  
            if uppercase(COM_catalogobject.Value[‘Name‘]) = Pack_Name then  
            begin  
              COM_catalogpack.Remove(ww);  
              COM_catalogpack.SaveChanges;  
              Break;  
            end;  
          end;  
        end;  
    end;  
    Result := True;  
  finally  
    COM_catalogobject := nil;  
    COM_catalogpack := nil;  
    COM_catalog := nil;  
    MTS_catalogobject := nil;  
    MTS_catalogpack := nil;  
    MTS_catalog := nil;  
  end;  
end;  
  
function Install_Component(const PackName, DllFile, uID, pID: string): integer;  
var  
  ww: integer;  
  keyy: OleVariant;  
  MTS_catalog: MTSAdmin_TLB.ICatalog;  
  MTS_catalogpack, MTS_componentsInPack: MTSAdmin_TLB.ICatalogCollection;  
  MTS_catalogobject: MTSAdmin_TLB.ICatalogObject;  
  MTS_util: MTSAdmin_TLB.IComponentUtil;  
  COM_catalog: COMAdmin_TLB.ICOMAdminCatalog;  
begin  
  result := 0;  
  if NewPack(PackName, uID, pID) then  
  try  
    case GetOSVersion of  
      1: begin  
          MTS_catalog := MTSAdmin_TLB.CoCatalog.Create;  
          MTS_catalogpack := MTS_catalog.GetCollection(‘Packages‘) as MTSAdmin_TLB.ICatalogCollection;  
          MTS_catalogpack.Populate;  
          for ww := 0 to MTS_catalogpack.Count - 1 do  
          begin  
            MTS_catalogobject := MTS_catalogpack.Get_Item(ww) as MTSAdmin_TLB.ICatalogObject;  
            if uppercase(MTS_catalogobject.Value[‘Name‘]) = uppercase(PackName) then  
            begin  
              keyy := MTS_catalogobject.Key;  
              Break;  
            end;  
          end;  
          MTS_componentsInPack := MTS_catalogpack.GetCollection(‘ComponentsInPackage‘, keyy) as MTSAdmin_TLB.ICatalogCollection;  
          MTS_util := MTS_componentsInPack.GetUtilInterface as MTSAdmin_TLB.IComponentUtil;  
          try  
            MTS_util.InstallComponent(DllFile, ‘‘, ‘‘);  
          except  
            Result := 1;  
          end;  
        end;  
      2: begin  
          COM_catalog := COMAdmin_TLB.CoCOMAdminCatalog.Create;  
          try  
            COM_catalog.InstallComponent(PackName, DllFile, ‘‘, ‘‘);  
          except  
            Result := 1;  
          end;  
        end;  
    end;  
  finally  
    MTS_catalogobject := nil;  
    MTS_catalogpack := nil;  
    MTS_catalog := nil;  
    MTS_componentsInPack := nil;  
    MTS_util := nil;  
    COM_catalog := nil;  
  end;  
end;  
  
function Remove_Component(const IIobject: string): Boolean;  
var  
  MTS_catalog: MTSAdmin_TLB.ICatalog;  
  MTS_catalogpack, MTS_componentsInPack: MTSAdmin_TLB.ICatalogCollection;  
  MTS_catalogobject, MTS_catalogcomponent: MTSAdmin_TLB.ICatalogObject;  
  COM_catalog: COMAdmin_TLB.ICOMAdminCatalog;  
  COM_catalogpack, COM_componentsInPack: COMAdmin_TLB.ICatalogCollection;  
  COM_catalogobject, COM_catalogcomponent: COMAdmin_TLB.ICatalogObject;  
  ww, qq: integer;  
begin  
  result := false;  
  try  
    case GetOSVersion of  
      1: begin  
          MTS_catalog := MTSAdmin_TLB.CoCatalog.Create;  
          MTS_catalogpack := MTS_catalog.GetCollection(‘Packages‘) as MTSAdmin_TLB.ICatalogCollection;  
          MTS_catalogpack.Populate;  
          for ww := 0 to MTS_catalogpack.Count - 1 do  
          begin  
            MTS_catalogobject := MTS_catalogpack.Get_Item(ww) as MTSAdmin_TLB.ICatalogObject;  
            MTS_componentsInPack := MTS_catalogpack.GetCollection(‘ComponentsInPackage‘, MTS_catalogobject.Key) as MTSAdmin_TLB.ICatalogCollection;  
            try  
              MTS_componentsInPack.Populate;  
              for qq := 0 to MTS_componentsInPack.Count - 1 do  
              begin  
                MTS_catalogcomponent := (MTS_componentsInPack.item[qq] as MTSAdmin_TLB.ICatalogObject);  
                if uppercase(MTS_catalogcomponent.name) = uppercase(IIObject) then  
                begin  
                  MTS_componentsInPack.Remove(qq);  
                  MTS_componentsInPack.SaveChanges;  
                  result := True;  
                  break;  
                end;  
              end;  
            except  
              continue;  
            end;  
            if result then break;  
          end;  
        end;  
      2: begin  
          COM_catalog := COMAdmin_TLB.CoCOMAdminCatalog.Create;  
          COM_catalogpack := COM_catalog.GetCollection(‘Applications‘) as COMAdmin_TLB.ICatalogCollection;  
          COM_catalogpack.Populate;  
          for ww := 0 to COM_catalogpack.Count - 1 do  
          begin  
            COM_catalogobject := COM_catalogpack.Get_Item(ww) as COMAdmin_TLB.ICatalogObject;  
            COM_componentsInPack := COM_catalogpack.GetCollection(‘Components‘, COM_catalogobject.Key) as COMAdmin_TLB.ICatalogCollection;  
            try  
              COM_componentsInPack.Populate;  
              for qq := 0 to COM_componentsInPack.Count - 1 do  
              begin  
                COM_catalogcomponent := (COM_componentsInPack.item[qq] as COMAdmin_TLB.ICatalogObject);  
                if uppercase(COM_catalogcomponent.name) = uppercase(IIObject) then  
                begin  
                  COM_componentsInPack.Remove(qq);  
                  COM_componentsInPack.SaveChanges;  
                  result := True;  
                  break;  
                end;  
              end;  
            except  
              continue;  
            end;  
            if result then break;  
          end;  
        end;  
    end;  
    Result := True;  
  finally  
    COM_catalogobject := nil;  
    COM_catalogpack := nil;  
    COM_catalog := nil;  
    MTS_catalogobject := nil;  
    MTS_catalogpack := nil;  
    MTS_catalog := nil;  
  end;  
end;  
  
function ShutdownPack(const PackName: string): Boolean;  
var  
  ww: integer;  
  MTS_catalog: MTSAdmin_TLB.ICatalog;  
  MTS_catalogpack: MTSAdmin_TLB.ICatalogCollection;  
  MTS_catalogobject: MTSAdmin_TLB.ICatalogObject;  
  MTS_PackageUtil: MTSAdmin_TLB.IPackageUtil;  
  COM_catalog: COMAdmin_TLB.ICOMAdminCatalog;  
begin  
  Result := False;  
  try  
    case GetOSVersion of  
      1: begin  
          // IPackageUtil.ShutdownPackage 的参数是 ID 不是 NAME ,所以要通过 NAME 找到 ID  
          MTS_catalog := MTSAdmin_TLB.CoCatalog.Create;  
          MTS_catalogpack := MTS_catalog.GetCollection(‘Packages‘) as MTSAdmin_TLB.ICatalogCollection;  
          MTS_catalogpack.Populate;  
          ww := 0;  
          while ww < MTS_catalogpack.Count do  
          begin  
            MTS_catalogobject := MTS_catalogpack.Get_Item(ww) as MTSAdmin_TLB.ICatalogObject;  
            if uppercase(MTS_catalogobject.Value[‘Name‘]) = uppercase(PackName) then break;  
            inc(ww);  
          end;  
          if ww < MTS_catalogpack.Count then  
          begin  
            MTS_PackageUtil := MTS_catalogpack.GetUtilInterface as MTSAdmin_TLB.IPackageUtil;  
            MTS_PackageUtil.ShutdownPackage(MTS_catalogobject.Value[‘ID‘]);  
            sleep(5000);  
            Result := True;  
          end;  
        end;  
      2: begin  
          COM_catalog := COMAdmin_TLB.CoCOMAdminCatalog.Create;  
          try  
            COM_catalog.ShutdownApplication(PackName);  
            Result := True;  
          except  
            Result := False;  
          end;  
        end;  
    end;  
  finally  
    COM_catalog := nil;  
    MTS_catalog := nil;  
    MTS_catalogpack := nil;  
    MTS_PackageUtil := nil;  
  end;  
end;  

  

Delphi 常用函数记录

标签:des   blog   io   os   ar   for   sp   文件   div   

原文地址:http://www.cnblogs.com/qingsong/p/4033156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!