Delphi 常用函数记录
来源:互联网 发布:ubuntu安装gnome2 编辑:程序博客网 时间:2024/05/20 12:24
//判断是否是数字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;//检查驱动器类型是否是CDROMfunction CheckCDRom(sPath: string): Boolean;//检查驱动器是否存在function CheckDriver(sPath: string): Boolean;//获得windows临时目录function GetWinTempDir: string;//取系统目录function GetSystemDir: string;//等待执行Winexefunction 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';implementationfunction 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_ICONEXCLAMATIONend;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_ICONEXCLAMATIONend;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_ICONEXCLAMATIONend;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 := Trueend;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;
0 0
- Delphi 常用函数记录
- Delphi 常用函数记录
- delphi 常用函数
- Delphi常用函数
- Delphi常用函数应用
- Delphi 常用函数
- Delphi常用函数
- Delphi常用日期函数
- Delphi常用函数参考
- Delphi 常用函数
- delphi常用函数
- delphi常用函数
- Delphi 常用API 函数
- Delphi 常用函数
- Delphi 一些常用函数
- [Delphi] 常用日期函数
- Delphi 常用API 函数
- delphi常用函数
- mysql简单备份与恢复
- 动态规划之01背包问题(最易理解的讲解)
- C查看分配给用户的内存及分配给系统的内存大小
- 使用hibernate运行产生的红字解决方法,虽然不影响,但是看着不爽
- VS2013(Win10X64)-配置编译Caffe
- Delphi 常用函数记录
- [LeetCode]Evaluate Reverse Polish Notation
- C字节对齐详解
- DNS BIND之nsupdate介绍和使用
- Java Socket重要参数讲解
- 第六周项目六(1)(2)
- Python字符串和字典相关操作
- Euresys eVision 加载和保存图像
- jquery为动态生成的元素添加点击事件