From 690f5e6d29d1c85c4be72638eb22843964c2f512 Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Fri, 24 Apr 2015 08:21:28 +0000 Subject: All non-working stuff moved from trunk git-svn-id: http://svn.miranda-ng.org/main/trunk@13071 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- .../HistoryToDBUpdater/Global.pas | 1583 -------------------- .../HistoryToDBUpdater/HistoryToDBUpdater.dpr | 32 - .../HistoryToDBUpdater/HistoryToDBUpdater.dproj | 197 --- .../HistoryToDBUpdater/HistoryToDBUpdater.manifest | 21 - .../HistoryToDBUpdater/HistoryToDBUpdater.mes | 163 -- .../HistoryToDBUpdater/HistoryToDBUpdater.otares | Bin 96 -> 0 bytes .../HistoryToDBUpdater/HistoryToDBUpdater.res | Bin 146856 -> 0 bytes .../HistoryToDBUpdater/HistoryToDBUpdater_Icon.ico | Bin 144763 -> 0 bytes .../HistoryToDBUpdater/Main.dfm | 530 ------- .../HistoryToDBUpdater/Main.pas | 1497 ------------------ .../HistoryToDBUpdater/NTNative.pas | 210 --- .../HistoryToDBUpdater/jedi.inc | 1430 ------------------ .../HistoryToDBUpdater/readme-dev.txt | 38 - 13 files changed, 5701 deletions(-) delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Global.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dpr delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dproj delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.manifest delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.mes delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.otares delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.res delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater_Icon.ico delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.dfm delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/NTNative.pas delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/jedi.inc delete mode 100644 plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/readme-dev.txt (limited to 'plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater') diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Global.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Global.pas deleted file mode 100644 index f3f68e7ea2..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Global.pas +++ /dev/null @@ -1,1583 +0,0 @@ -{ ################################################################################ } -{ # # } -{ # Обновление и установка набора программ IM-History - HistoryToDBUpdater v1.0 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ################################################################################ } - -unit Global; - -{$I jedi.inc} - -interface - -uses - Windows, Forms, Classes, SysUtils, IniFiles, DCPcrypt2, DCPblockciphers, DCPsha1, - DCPdes, DCPmd5, TypInfo, Messages, XMLIntf, XMLDoc, StrUtils, Types, TLHELP32, PsAPI, NTNative; - -type - TWinVersion = (wvUnknown,wv95,wv98,wvME,wvNT3,wvNT4,wvW2K,wvXP,wv2003,wvVista,wv7,wv2008,wv8); - TCopyDataType = (cdtString = 0, cdtImage = 1, cdtRecord = 2); - TDelim = set of Char; - TArrayOfString = Array of String; - TArrayOfCardinal = Array of Cardinal; - TProcessInfo = packed record - ProcessName: String; - PID: DWord; - ProcessFullCmd: String; - ProcessPath: String; - ProcessParamCmd: String; - end; - TProcessInfoArray = Array of TProcessInfo; - -const - ProgramsName = 'HistoryToDBUpdater'; - ProgramsVer : WideString = '2.5.0.0'; - DefaultDBAddres = 'db01.im-history.ru'; - DefaultDBName = 'imhistory'; - ININame = 'HistoryToDB.ini'; - ErrLogName = 'HistoryToDBUpdaterErr.log'; - DebugLogName = 'HistoryToDBUpdaterDebug.log'; - // Начальная дата (01/01/1970) Unix Timestamp для функций конвертации - UnixStartDate: TDateTime = 25569.0; - // Ключь для расшифровки параметра DBPasswd из конфига - EncryptKey = 'jsU6s2msoxghsKsn7'; - // Для мультиязыковой поддержки - WM_LANGUAGECHANGED = WM_USER + 1; - dirLangs = 'langs\'; - dirSQLUpdate = 'update\'; - defaultLangFile = 'English.xml'; - // End - WM_MSGBOX = WM_USER + 2; - uURL = 'http://im-history.ru/update/get.php?file=HistoryToDB-Update'; - {$IFDEF WIN32} - PlatformType = 'x86'; - {$ELSE} - PlatformType = 'x64'; - {$ENDIF} -var - WriteErrLog: Boolean; - EnableDebug, AlphaBlendEnable: Boolean; - MaxErrLogSize, AlphaBlendEnableValue: Integer; - DBType, DefaultLanguage, IMClientType: String; - PluginPath, ProfilePath: WideString; - Global_MainForm_Showing, Global_AboutForm_Showing: Boolean; - Global_IMProcessPID: DWORD; - // Прокси - IMUseProxy, IMProxyAuth: Boolean; - IMProxyAddress, IMProxyPort, IMProxyUser, IMProxyUserPagsswd: String; - DBUserName, MyAccount: String; - IMClientPlatformType: String; - UpdateServer: String; - // Шифрование - Cipher: TDCP_3des; - Digest: Array[0..19] of Byte; - Hash: TDCP_sha1; - // Для мультиязыковой поддержки - CoreLanguage: String; - MainFormHandle: HWND; - AboutFormHandle: HWND; - LangDoc: IXMLDocument; - -function BoolToIntStr(Bool: Boolean): String; -function IsNumber(const S: String): Boolean; -function DateTimeToUnix(ConvDate: TDateTime): Longint; -function UnixToDateTime(USec: Longint): TDateTime; -function PrepareString(const Source : PWideChar) : AnsiString; -function EncryptStr(const Str: String): String; -function DecryptStr(const Str: String): String; -function EncryptMD5(Str: String): String; -function MatchStrings(source, pattern: String): Boolean; -function ExtractFileNameEx(FileName: String; ShowExtension: Boolean): String; -function ReadCustomINI(INIPath, CustomSection, CustomParams, DefaultParamsStr: String): String; -function GetSystemDefaultUILanguage: UINT; stdcall; external kernel32 name 'GetSystemDefaultUILanguage'; -function GetSysLang: AnsiString; -function Tok(Sep: String; var S: String): String; -function GetMyFileSize(const Path: String): Integer; -function SearchMainWindow(MainWindowName: pWideChar): Boolean; -function StrContactProtoToInt(Proto: AnsiString): Integer; -function IsProcessRun(ProcessName: String): Boolean; overload; -function IsProcessRun(ProcessName, WinCaption: String): Boolean; overload; -function GetProcessID(ExeFileName: String): Cardinal; -//function GetProcessIDMulti(ExeFileName: String): TArrayOfString; -function GetProcessIDMulti2(ExeFileName: String): TArrayOfCardinal; -function GetThreadsOfProcess(APID: Cardinal): TIntegerDynArray; -function KillTask(ExeFileName: String): Integer; overload; -function KillTask(ExeFileName, WinCaption: String): Integer; overload; -function ProcessTerminate(dwPID: Cardinal): Boolean; -function ProcCloseEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -function ProcQuitEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -function GetProcessFileName(PID: DWord; FullPath: Boolean=True): String; -function GetProcessCmdLine(dwProcessId : DWORD): String; -function SetProcessDebugPrivelege: Boolean; -function EndProcess(IMClientExeName: String; EndType: Integer; EndProcess: Boolean): TProcessInfoArray; -function GetUserTempPath: WideString; -//function ProcGetCaptionForHandleEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -function EnumThreadWndProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall; -function StringToParts(sString:String; tdDelim:TDelim): TArrayOfString; -function ExtractWord(const AString: string; const ADelimiter: Char; const ANumber: integer): string; -procedure EncryptInit; -procedure EncryptFree; -procedure WriteInLog(LogPath: String; TextString: String; LogType: Integer); -procedure LoadINI(INIPath: String; NotSettingsForm: Boolean); -procedure WriteCustomINI(INIPath, CustomSection, CustomParams, ParamsStr: String); -procedure MakeTransp(winHWND: HWND); -procedure OnSendMessageToAllComponent(Msg: String); -procedure IMDelay(Value: Cardinal); -procedure OnSendMessageToOneComponent(WinName, Msg: String); -function DetectWinVersion: TWinVersion; -function DetectWinVersionStr: String; -// Для мультиязыковой поддержки -procedure MsgDie(Caption, Msg: WideString); -procedure MsgInf(Caption, Msg: WideString); -function GetLangStr(StrID: String): WideString; - -implementation - -function BoolToIntStr(Bool: Boolean): String; -begin - if Bool then - Result := '1' - else - Result := '0' -end; - -function IsNumber(const S: string): Boolean; -begin - Result := True; - try - StrToInt(S); - except - Result := False; - end; -end; - -// Функция конвертации DateTime в Unix Timestamp -function DateTimeToUnix(ConvDate: TDateTime): Longint; -begin - Result := Round((ConvDate - UnixStartDate) * 86400); -end; - -// Функция конвертации Unix Timestamp в DateTime -function UnixToDateTime(USec: Longint): TDateTime; -begin - Result := (Usec / 86400) + UnixStartDate; -end; - -// Функция для экранирования спецсимволов в строке -function PrepareString(const Source : PWideChar) : AnsiString; -var - SLen,i : Cardinal; - WSTmp : WideString; - WChar : WideChar; -begin - Result := ''; - SLen := Length(WideString(Source)); - if (SLen>0) then - begin - for i:=1 to SLen do - begin - WChar:=WideString(Source)[i]; - case WChar of - #$09 :{tab} WSTmp:=WSTmp+'\t'; - #$0A :{line feed} WSTmp:=WSTmp+'\n'; - #$0D :{carriage return} WSTmp:=WSTmp+'\r'; - #$27 :{single quote mark aka apostrophe?} WSTmp:=WSTmp+WChar+WChar; - #$22, {double quote mark aka inch sign?} - #$5C, {backslash itself} - #$60 :{another single quote mark} WSTmp:=WSTmp+'\'+WChar; - else WSTmp := WSTmp + WChar; - end; - end; - Result := AnsiString(WSTmp); - end; -end; - -// Инициируем криптование -procedure EncryptInit; -begin - Hash:= TDCP_sha1.Create(nil); - try - Hash.Init; - Hash.UpdateStr(EncryptKey); - Hash.Final(Digest); - finally - Hash.Free; - end; - Cipher := TDCP_3des.Create(nil); - Cipher.Init(Digest,Sizeof(Digest)*8,nil); -end; - -// Освобождаем ресурсы -procedure EncryptFree; -begin - if Assigned(Cipher) then - begin - Cipher.Burn; - Cipher.Free; - end; -end; - -// Зашифровываем строку -function EncryptStr(const Str: String): String; -begin - Result := ''; - if Str <> '' then - begin - Cipher.Reset; - Result := Cipher.EncryptString(Str); - end; -end; - -// Расшифровываем строку -function DecryptStr(const Str: String): String; -begin - Result := ''; - if Str <> '' then - begin - Cipher.Reset; - Result := Cipher.DecryptString(Str); - end; -end; - -// Подсчет MD5 строки -function EncryptMD5(Str: String): String; -var - Hash: TDCP_md5; - Digest: Array[0..15] of Byte; - I: Integer; - P: String; -begin - if Str <> '' then - begin - Hash:= TDCP_md5.Create(nil); - try - Hash.HashSize := 128; - Hash.Init; - Hash.UpdateStr(Str); - Hash.Final(Digest); - P := ''; - for I:= 0 to 15 do - P:= P + IntToHex(Digest[I], 2); - finally - Hash.Free; - end; - Result := P; - end - else - Result := 'MD5'; -end; - -// LogType = 0 - ошибки добавляются в файл ErrLogName -// LogType = 1 - сообщения добавляются в файл DebugLogName -procedure WriteInLog(LogPath: String; TextString: String; LogType: Integer); -var - Path: WideString; - TF: TextFile; -begin - if LogType = 0 then - begin - Path := LogPath + ErrLogName; - if (GetMyFileSize(Path) > MaxErrLogSize*1024) then - DeleteFile(Path); - end - else - Path := LogPath + DebugLogName; - {$I-} - try - Assign(TF,Path); - if FileExists(Path) then - Append(TF) - else - Rewrite(TF); - Writeln(TF,TextString); - CloseFile(TF); - except - on e : - Exception do - begin - CloseFile(TF); - Exit; - end; - end; - {$I+} -end; - -// Загружаем настройки -procedure LoadINI(INIPath: String; NotSettingsForm: Boolean); -var - Path: WideString; - Temp: String; - INI: TIniFile; -begin - // Проверяем наличие каталога - if not DirectoryExists(INIPath) then - CreateDir(INIPath); - Path := INIPath + ININame; - if FileExists(Path) then - begin - INI := TIniFile.Create(Path); - try - DBType := INI.ReadString('Main', 'DBType', 'Unknown'); - DBUserName := INI.ReadString('Main', 'DBUserName', 'username'); - DefaultLanguage := INI.ReadString('Main', 'DefaultLanguage', 'English'); - IMClientType := INI.ReadString('Main', 'IMClientType', 'Unknown'); - MyAccount := INI.ReadString('Main', 'MyAccount', DBUserName); - - Temp := INI.ReadString('Main', 'WriteErrLog', '0'); - if Temp = '1' then WriteErrLog := True - else WriteErrLog := False; - - MaxErrLogSize := INI.ReadInteger('Main', 'MaxErrLogSize', 20); - - Temp := INI.ReadString('Main', 'EnableDebug', '0'); - if Temp = '1' then EnableDebug := True - else EnableDebug := False; - - Temp := INI.ReadString('Main', 'AlphaBlend', '0'); - if Temp = '1' then AlphaBlendEnable := True - else AlphaBlendEnable := False; - AlphaBlendEnableValue := INI.ReadInteger('Main', 'AlphaBlendValue', 255); - - Temp := INI.ReadString('Proxy', 'UseProxy', '0'); - if Temp = '1' then IMUseProxy := True - else IMUseProxy := False; - - IMProxyAddress := INI.ReadString('Proxy', 'ProxyAddress', '127.0.0.1'); - IMProxyPort := INI.ReadString('Proxy', 'ProxyPort', '3128'); - - Temp := INI.ReadString('Proxy', 'ProxyAuth', '0'); - if Temp = '1' then IMProxyAuth := True - else IMProxyAuth := False; - - IMProxyUser := INI.ReadString('Proxy', 'ProxyUser', ''); - IMProxyUserPagsswd := INI.ReadString('Proxy', 'ProxyUserPasswd', ''); - if IMProxyUserPagsswd <> '' then - IMProxyUserPagsswd := DecryptStr(IMProxyUserPagsswd); - - IMClientPlatformType := INI.ReadString('Main', 'IMClientPlatformType', PlatformType); - UpdateServer := INI.ReadString('Updater', 'UpdateServer', uURL); - finally - INI.Free; - end; - end - else - begin - INI := TIniFile.Create(path); - try - // Значения по-умолчанию - DBType := 'Unknown'; - DefaultLanguage := 'English'; - IMClientType := 'Unknown'; - WriteErrLog := True; - MaxErrLogSize := 20; - EnableDebug := False; - AlphaBlendEnable := False; - AlphaBlendEnableValue := 255; - IMUseProxy := False; - IMProxyAddress := '127.0.0.1'; - IMProxyPort := '3128'; - IMProxyAuth := False; - IMProxyUser := ''; - IMProxyUserPagsswd := ''; - // Сохраняем настройки - INI.WriteString('Main', 'DBType', DBType); - INI.WriteString('Main', 'DefaultLanguage', DefaultLanguage); - INI.WriteString('Main', 'IMClientType', IMClientType); - INI.WriteString('Main', 'WriteErrLog', BoolToIntStr(WriteErrLog)); - INI.WriteInteger('Main', 'MaxErrLogSize', MaxErrLogSize); - INI.WriteString('Main', 'EnableDebug', BoolToIntStr(EnableDebug)); - INI.WriteString('Main', 'AlphaBlend', BoolToIntStr(AlphaBlendEnable)); - INI.WriteInteger('Main', 'AlphaBlendValue', AlphaBlendEnableValue); - INI.WriteString('Proxy', 'UseProxy', BoolToIntStr(IMUseProxy)); - INI.WriteString('Proxy', 'ProxyAddress', IMProxyAddress); - INI.WriteString('Proxy', 'ProxyPort', IMProxyPort); - INI.WriteString('Proxy', 'ProxyAuth', BoolToIntStr(IMProxyAuth)); - INI.WriteString('Proxy', 'ProxyUser', IMProxyUser); - INI.WriteString('Proxy', 'ProxyUserPasswd', IMProxyUserPagsswd); - INI.WriteString('Updater', 'UpdateServer', uURL); - finally - INI.Free; - end; - end; -end; - -{Функция осуществляет сравнение двух строк. Первая строка -может быть любой, но она не должна содержать символов соответствия (* и ?). -Строка поиска (искомый образ) может содержать абсолютно любые символы. -Для примера: MatchStrings('David Stidolph','*St*') возвратит True. -Автор оригинального C-кода Sean Stanley -Автор портации на Delphi David Stidolph} -function MatchStrings(source, pattern: String): Boolean; -var - pSource: array[0..255] of Char; - pPattern: array[0..255] of Char; - - function MatchPattern(element, pattern: PChar): Boolean; - - function IsPatternWild(pattern: PChar): Boolean; - begin - Result := StrScan(pattern, '*') <> nil; - if not Result then - Result := StrScan(pattern, '?') <> nil; - end; - - begin - if 0 = StrComp(pattern, '*') then - Result := True - else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then - Result := False - else if element^ = Chr(0) then - Result := True - else - begin - case pattern^ of - '*': if MatchPattern(element, @pattern[1]) then - Result := True - else - Result := MatchPattern(@element[1], pattern); - '?': Result := MatchPattern(@element[1], @pattern[1]); - else - if element^ = pattern^ then - Result := MatchPattern(@element[1], @pattern[1]) - else - Result := False; - end; - end; - end; -begin - StrPCopy(pSource, source); - StrPCopy(pPattern, pattern); - Result := MatchPattern(pSource, pPattern); -end; - -{ Функция для получения имени файла из пути без или с его расширением. - Возвращает имя файла, без или с его расширением. - Входные параметры: - FileName - имя файла, которое надо обработать - ShowExtension - если TRUE, то функция возвратит короткое имя файла - (без полного пути доступа к нему), с расширением этого файла, иначе, возвратит - короткое имя файла, без расширения этого файла. } -function ExtractFileNameEx(FileName: String; ShowExtension: Boolean): String; -var - I: Integer; - S, S1: string; -begin - I := Length(FileName); - if I <> 0 then - begin - while (FileName[i] <> '\') and (i > 0) do - i := i - 1; - S := Copy(FileName, i + 1, Length(FileName) - i); - i := Length(S); - if i = 0 then - begin - Result := ''; - Exit; - end; - while (S[i] <> '.') and (i > 0) do - i := i - 1; - S1 := Copy(S, 1, i - 1); - if s1 = '' then - s1 := s; - if ShowExtension = True then - Result := s - else - Result := s1; - end - else - Result := ''; -end; - -{ Прозрачность окна MessageBox } -procedure MakeTransp(winHWND: HWND); -var - exStyle: Longint; -begin - exStyle := GetWindowLong(winHWND, GWL_EXSTYLE); - if (exStyle and WS_EX_LAYERED = 0) then - begin - exStyle := exStyle or WS_EX_LAYERED; - SetwindowLong(winHWND, GWL_EXSTYLE, exStyle); - end; - SetLayeredWindowAttributes(winHWND, 0, AlphaBlendEnableValue, LWA_ALPHA); -end; - -// Для мультиязыковой поддержки -procedure MsgDie(Caption, Msg: WideString); -begin - if AlphaBlendEnable then - PostMessage(GetForegroundWindow, WM_USER + 2, 0, 0); - MessageBoxW(GetForegroundWindow, PWideChar(Msg), PWideChar(Caption), MB_ICONERROR); -end; - -// Для мультиязыковой поддержки -procedure MsgInf(Caption, Msg: WideString); -begin - if AlphaBlendEnable then - PostMessage(GetForegroundWindow, WM_USER + 2, 0, 0); - MessageBoxW(GetForegroundWindow, PWideChar(Msg), PWideChar(Caption), MB_ICONINFORMATION); -end; - -// Для мультиязыковой поддержки -function GetLangStr(StrID: String): WideString; -begin - if (not Assigned(LangDoc)) or (not LangDoc.Active) then - begin - Result := ''; - Exit; - end; - if LangDoc.ChildNodes['strings'].ChildNodes.FindNode(StrID) <> nil then - Result := LangDoc.ChildNodes['strings'].ChildNodes[StrID].Text - else - Result := 'String not found.'; -end; - -function GetSysLang: AnsiString; -var - WinLanguage: Array [0..50] of Char; -begin - //Result := Lo(GetSystemDefaultUILanguage); - VerLanguageName(GetSystemDefaultLangID, WinLanguage, 50); - Result := StrPas(WinLanguage); -end; - -{ Функция разбивает строку S на слова, разделенные символами-разделителями, -указанными в строке Sep. Функция возвращает первое найденное слово, при -этом из строки S удаляется начальная часть до следующего слова } -function Tok(Sep: String; var S: String): String; - - function isoneof(c, s: string): Boolean; - var - iTmp: integer; - begin - Result := False; - for iTmp := 1 to Length(s) do - begin - if c = Copy(s, iTmp, 1) then - begin - Result := True; - Exit; - end; - end; - end; - -var - c, t: String; -begin - if s = '' then - begin - Result := s; - Exit; - end; - c := Copy(s, 1, 1); - while isoneof(c, sep) do - begin - s := Copy(s, 2, Length(s) - 1); - c := Copy(s, 1, 1); - end; - t := ''; - while (not isoneof(c, sep)) and (s <> '') do - begin - t := t + c; - s := Copy(s, 2, length(s) - 1); - c := Copy(s, 1, 1); - end; - Result := t; -end; - -{ Процедура записи значения параметра в файл настроек } -procedure WriteCustomINI(INIPath, CustomSection, CustomParams, ParamsStr: String); -var - Path: String; - IsFileClosed: Boolean; - sFile: DWORD; - INI: TIniFile; -begin - Path := INIPath + ININame; - if FileExists(Path) then - begin - // Ждем пока файл освободит антивирь или еще какая-нибудь гадость - IsFileClosed := False; - repeat - sFile := CreateFile(PChar(Path),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); - if (sFile <> INVALID_HANDLE_VALUE) then - begin - CloseHandle(sFile); - IsFileClosed := True; - end; - until IsFileClosed; - // End - INI := TIniFile.Create(Path); - try - INI.WriteString(CustomSection, CustomParams, ParamsStr); - finally - INI.Free; - end; - end - else - MsgDie(ProgramsName, GetLangStr('SettingsErrSave')); -end; - -{ Функция чтения значения параметра из файла настроек } -function ReadCustomINI(INIPath, CustomSection, CustomParams, DefaultParamsStr: String): String; -var - Path: String; - INI: TIniFile; -begin - Path := INIPath + ININame; - INI := TIniFile.Create(Path); - if FileExists(Path) then - begin - try - Result := INI.ReadString(CustomSection, CustomParams, DefaultParamsStr); - finally - INI.Free; - end; - end - else - MsgDie(ProgramsName, GetLangStr('SettingsErrRead')); -end; - -// Если файл не существует, то вместо размера файла функция вернёт -1 -function GetMyFileSize(const Path: String): Integer; -var - FD: TWin32FindData; - FH: THandle; -begin - FH := FindFirstFile(PChar(Path), FD); - Result := 0; - if FH = INVALID_HANDLE_VALUE then - Exit; - Result := FD.nFileSizeLow; - if ((FD.nFileSizeLow and $80000000) <> 0) or - (FD.nFileSizeHigh <> 0) then - Result := -1; - //FindClose(FH); -end; - -{ Поиск окна программы } -function SearchMainWindow(MainWindowName: pWideChar): Boolean; -var - HToDB: HWND; -begin - // Ищем окно - HToDB := FindWindow(nil, MainWindowName); - if HToDB <> 0 then - Result := True - else - Result := False -end; - -{ Процедура для отправки сообщений программе } -{ Стандартные команды: - 001 - Перечитать настройки из файла HistoryToDB.ini - 002 - Синхронизация истории - 003 - Закрыть все компоненты плагина - 0040 - Показать все окна плагина (Режим AntiBoss) - 0041 - Скрыть все окна плагина (Режим AntiBoss) - 0050 - Запустить перерасчет MD5-хешей - 0051 - Запустить перерасчет MD5-хешей и удаления дубликатов - 0060 - Запущен импорт истории - 0061 - Импорт истории завершен - 007 - Обновить контакт-лист в БД - 008 - Показать историю контакта/чата - Формат команды: - для истории контакта: - 008|0|UserID|UserName|ProtocolType - для истории чата: - 008|2|ChatName - 009 - Экстренно закрыть все компоненты плагина. -} -procedure OnSendMessageToAllComponent(Msg: String); -var - HToDB: HWND; - copyDataStruct : TCopyDataStruct; - EncryptMsg, WinName: String; -begin - EncryptMsg := EncryptStr(Msg); - WinName := 'HistoryToDBViewer for ' + IMClientType; - // Ищем окно HistoryToDBViewer и посылаем ему команду - HToDB := FindWindow(nil, pChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := Integer(cdtString); - copyDataStruct.cbData := 2*Length(EncryptMsg); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, Integer(@copyDataStruct)); - end; - WinName := 'HistoryToDBSync for ' + IMClientType; - // Ищем окно HistoryToDBSync и посылаем ему команду - HToDB := FindWindow(nil, pChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := Integer(cdtString); - copyDataStruct.cbData := 2*Length(EncryptMsg); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, Integer(@copyDataStruct)); - end; - WinName := 'HistoryToDBImport for ' + IMClientType; - // Ищем окно HistoryToDBImport и посылаем ему команду - HToDB := FindWindow(nil, pChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := Integer(cdtString); - copyDataStruct.cbData := 2*Length(EncryptMsg); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, Integer(@copyDataStruct)); - end; -end; - -procedure OnSendMessageToOneComponent(WinName, Msg: String); -var - HToDB: HWND; - copyDataStruct : TCopyDataStruct; - EncryptMsg: String; -begin - EncryptMsg := EncryptStr(Msg); - // Ищем окно HistoryToDBViewer и посылаем ему команду - HToDB := FindWindow(nil, pChar(WinName)); - if HToDB <> 0 then - begin - copyDataStruct.dwData := Integer(cdtString); - copyDataStruct.cbData := 2*Length(EncryptMsg); - copyDataStruct.lpData := PChar(EncryptMsg); - SendMessage(HToDB, WM_COPYDATA, 0, Integer(@copyDataStruct)); - end; -end; - -function StrContactProtoToInt(Proto: AnsiString): Integer; -var - ProtoType: Integer; -begin - { Протоколы - 0 - ICQ - 1 - Google Talk - 2 - MRA - 3 - Jabber - 4 - QIP.Ru - 5 - Facebook - 6 - VKontacte - 7 - Twitter - 8 - Social (LiveJournal) - 9 - AIM - 10 - IRC - 11 - MSN - 12 - YAHOO - 13 - GADU - 14 - SKYPE - 15 - Unknown - } - if MatchStrings(LowerCase(Proto), 'icq*') then - ProtoType := 0 - else if MatchStrings(LowerCase(Proto), 'google talk*') then - ProtoType := 1 - else if MatchStrings(LowerCase(Proto), 'mra*') then - ProtoType := 2 - else if MatchStrings(LowerCase(Proto), 'jabber*') then - ProtoType := 3 - else if (LowerCase(Proto) = 'qip.ru') then - ProtoType := 4 - else if MatchStrings(LowerCase(Proto), 'facebook*') then - ProtoType := 5 - else if MatchStrings(LowerCase(Proto), 'vkontakte*') then - ProtoType := 6 - else if MatchStrings(Proto, 'ВКонтакте*') then - ProtoType := 6 - else if MatchStrings(Proto, 'вконтакте*') then - ProtoType := 6 - else if MatchStrings(LowerCase(Proto), 'twitter*') then - ProtoType := 7 - else if MatchStrings(LowerCase(Proto), 'livejournal*') then - ProtoType := 8 - else if MatchStrings(LowerCase(Proto), 'aim*') then - ProtoType := 9 - else if MatchStrings(LowerCase(Proto), 'irc*') then - ProtoType := 10 - else if MatchStrings(LowerCase(Proto), 'msn*') then - ProtoType := 11 - else if MatchStrings(LowerCase(Proto), 'yahoo*') then - ProtoType := 12 - else if MatchStrings(LowerCase(Proto), 'gadu*') then - ProtoType := 13 - else if MatchStrings(LowerCase(Proto), 'skype*') then - ProtoType := 14 - else - ProtoType := 15; - Result := ProtoType; -end; - -{ Задержка не грузящая процессор } -procedure IMDelay(Value: Cardinal); -var - F, N: Cardinal; -begin - N := 0; - while N <= (Value div 10) do - begin - SleepEx(1, True); - Application.ProcessMessages; - Inc(N); - end; - F := GetTickCount; - repeat - Application.ProcessMessages; - N := GetTickCount; - until (N - F >= (Value mod 10)) or (N < F); -end; - -{ Закрытие программы через WM_CLOSE по её PID } -function ProcCloseEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -var - Pid: DWORD; -begin - Result := True; - GetWindowThreadProcessId(hwnd, pid); - if Pid = DWORD(data) then - begin - PostMessage(hwnd, WM_CLOSE, 0, 0); - end; -end; - -{ Закрытие программы через WM_QUIT по её PID } -function ProcQuitEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -var - Pid: DWORD; -begin - Result := True; - GetWindowThreadProcessId(hwnd, pid); - if Pid = DWORD(data) then - begin - PostMessage(hwnd, WM_QUIT, 0, 0); - end; -end; - -{function ProcGetCaptionForHandleEnum(hwnd: THandle; data: Pointer):BOOL;stdcall; -var - Pid: DWORD; - WinCaption: Array [0 .. 255] of Char; -begin - Result := True; - GetWindowThreadProcessId(hwnd, pid); - if Pid = DWORD(data) then - begin - //PostMessage(hwnd, WM_QUIT, 0, 0); - GetWindowText(hwnd, WinCaption, SizeOf(WinCaption)); - if WinCaption <> '' then - MsgInf('ProcGetCaptionForHandleEnum', WinCaption); - end; -end;} - -{ Функция отправляет WM_QUIT процессу - и возвращает TArrayOfString со списком полных путей + параметры запуска - этих процессов - EndType = 0 - WM_CLOSE - EndType = 1 - WM_QUIT - } -function EndProcess(IMClientExeName: String; EndType: Integer; EndProcess: Boolean): TProcessInfoArray; -var - I: Integer; - ProcessPIDListArray: TArrayOfCardinal; - MyFullCMD, MyCMD, ProcessCmdLine: String; -begin - SetLength(Result, 0); - SetLength(ProcessPIDListArray, 0); - ProcessPIDListArray := GetProcessIDMulti2(IMClientExeName); - for I := 0 to High(ProcessPIDListArray) do - begin - SetLength(Result, Length(Result)+1); - Result[Length(Result)-1].ProcessName := IMClientExeName; - Result[Length(Result)-1].PID := ProcessPIDListArray[I]; - ProcessCmdLine := GetProcessCmdLine(ProcessPIDListArray[I]); - if ProcessCmdLine = '' then - begin - - if (IMClientExeName = 'qip.exe') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\QIP 2012\qip.exe"' - else if (IMClientExeName = 'qip.exe') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files (x86)\QIP 2012\qip.exe"' - - else if (IMClientExeName = 'miranda32.exe') and (IMClientType = 'Miranda') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda IM\miranda32.exe"' - else if (IMClientExeName = 'miranda32.exe') and (IMClientType = 'Miranda') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files (x86)\Miranda IM\miranda32.exe"' - else if (IMClientExeName = 'miranda64.exe') and (IMClientType = 'Miranda') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda IM\miranda32.exe"' - else if (IMClientExeName = 'miranda64.exe') and (IMClientType = 'Miranda') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda IM\miranda32.exe"' - - else if (IMClientExeName = 'miranda32.exe') and (IMClientType = 'MirandaNG') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda NG\miranda32.exe"' - else if (IMClientExeName = 'miranda32.exe') and (IMClientType = 'MirandaNG') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files (x86)\Miranda NG\miranda32.exe"' - else if (IMClientExeName = 'miranda64.exe') and (IMClientType = 'MirandaNG') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda NG\miranda32.exe"' - else if (IMClientExeName = 'miranda64.exe') and (IMClientType = 'MirandaNG') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Miranda NG\miranda32.exe"' - - else if (IMClientExeName = 'skype.exe') and (DetectWinVersionStr = 'Windows 7') then - ProcessCmdLine := '"C:\Program Files (x86)\Skype\Phone\skype.exe"' - else if (IMClientExeName = 'skype.exe') and (DetectWinVersionStr <> 'Windows 7') then - ProcessCmdLine := '"C:\Program Files\Skype\Phone\skype.exe"' - else - ProcessCmdLine := IMClientExeName; - end; - Result[Length(Result)-1].ProcessFullCmd := ProcessCmdLine; - //MsgInf('EndProcess', 'ProcessName: ' + Result[Length(Result)-1].ProcessName + #13 + 'PID: ' + IntToStr(Result[Length(Result)-1].PID) + #13 + 'ProcessFullCmd: ' + Result[Length(Result)-1].ProcessFullCmd); - //Result[Length(Result)-1] := GetProcessFileName(StrToInt(ProcessListArray[I]), True); - // Если в полном CMD вида - // "C:/Program Files/PostgreSQL/9.1/bin/postgres.exe" "--forklog" "244" "248" - // или - // "C:\Program Files\Microsoft Firewall Client 2004\FwcAgent.exe" - if Result[Length(Result)-1].ProcessFullCmd[1] = '"' then - begin - MyFullCMD := Result[Length(Result)-1].ProcessFullCmd; - Delete(MyFullCMD, 1, 1); - MyCMD := Copy(MyFullCMD, 1, Pos('"', MyFullCMD)-1); - Delete(MyFullCMD, 1, Pos('"', MyFullCMD)+1); - Result[Length(Result)-1].ProcessPath := MyCMD; - Result[Length(Result)-1].ProcessParamCmd := MyFullCMD; - end - else - begin - MyFullCMD := Result[Length(Result)-1].ProcessFullCmd; - // Если в полном CMD вида - // C:\WINDOWS\system32\svchost -k DcomLaunch - if Pos(' ', MyFullCMD) > 0 then - begin - MyCMD := Copy(MyFullCMD, 1, Pos(' ', MyFullCMD)-1); - Delete(MyFullCMD, 1, Pos(' ', MyFullCMD)); - Result[Length(Result)-1].ProcessPath := MyCMD; - Result[Length(Result)-1].ProcessParamCmd := MyFullCMD; - end - // Если в полном CMD вида - // C:\WINDOWS\system32\lsass.exe - else - begin - Result[Length(Result)-1].ProcessPath := MyFullCMD; - Result[Length(Result)-1].ProcessParamCmd := ''; - end; - end; - // Завершение процесса - if EndProcess then - begin - if EndType = 0 then //WM_CLOSE - EnumWindows(@ProcCloseEnum, ProcessPIDListArray[I]) - else //WM_QUIT - EnumWindows(@ProcQuitEnum, ProcessPIDListArray[I]); - end; - end; -end; - -function EnumThreadWndProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall; -var - WindowClassName: String; - WindowClassNameLength: Integer; - WinCaption: Array [0 .. 255] of Char; - ThreadProcessWinCaption: String; - PID: DWORD; -begin - Result := True; - ThreadProcessWinCaption := String(LPARAM); - GetWindowThreadProcessId(hwnd, pid); - SetLength(WindowClassName, MAX_PATH); - WindowClassNameLength := GetClassName(hwnd, PChar(WindowClassName), MAX_PATH); - GetWindowText(hwnd, WinCaption, SizeOf(WinCaption)); - if MatchStrings(LeftStr(WindowClassName, WindowClassNameLength), 'TMain*') and (WinCaption = ThreadProcessWinCaption) then - begin - Global_IMProcessPID := PID; - //MsgInf('EnumThreadWndProc', 'PID процесса родителя: ' + IntToStr(PID) + #10#13 + 'Класс: ' + LeftStr(WindowClassName, WindowClassNameLength) + #10#13 + 'Заголовок окна: ' + WinCaption); - end; - // Получим дочерние окна. - //EnumChildWindows(hwnd, @EnumThreadWndProc, lParam); -end; - -{ Получение ID всех потоков указанного процесса } -function GetThreadsOfProcess(APID: Cardinal): TIntegerDynArray; -var - lSnap: DWord; - lThread: TThreadEntry32; -begin - Result := nil; - if APID <> INVALID_HANDLE_VALUE then - begin - lSnap := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); - if (lSnap <> INVALID_HANDLE_VALUE) then - begin - lThread.dwSize := SizeOf(TThreadEntry32); - if Thread32First(lSnap, lThread) then - repeat - if lThread.th32OwnerProcessID = APID then - begin - SetLength(Result, Length(Result) + 1); - Result[High(Result)] := lThread.th32ThreadID; - end; - until not Thread32Next(lSnap, lThread); - CloseHandle(lSnap); - end; - end; -end; - -{ Проверка процесса на наличие в памяти по его имени } -function IsProcessRun(ProcessName: String): Boolean; overload; -var - Snapshot: THandle; - Proc: TProcessEntry32; -begin - Result := False; - Snapshot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if Snapshot = INVALID_HANDLE_VALUE then - Exit; - Proc.dwSize := SizeOf(TProcessEntry32); - if Process32First(Snapshot, Proc) then - repeat - if Proc.szExeFile = ProcessName then - begin - Result := True; - Break; - end; - until not Process32Next(Snapshot, Proc); - CloseHandle(Snapshot); -end; - -function IsProcessRun(ProcessName, WinCaption: String): Boolean; overload; -var - Snapshot: THandle; - Proc: TProcessEntry32; - lThreads: TIntegerDynArray; - J: Integer; -begin - Result := False; - Snapshot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if Snapshot = INVALID_HANDLE_VALUE then - Exit; - Proc.dwSize := SizeOf(TProcessEntry32); - if Process32First(Snapshot, Proc) then - repeat - if ((UpperCase(ExtractFileName(Proc.szExeFile)) = UpperCase(ProcessName)) - or (UpperCase(Proc.szExeFile) = UpperCase(ProcessName))) then - begin - // Получение Заголовков окон процесса - //EnumWindows(@ProcGetCaptionForHandleEnum, FProcessEntry32.th32ProcessID); - // Получение ClassName и Заголовков окон всех потоков процесса - Global_IMProcessPID := 0; - lThreads := GetThreadsOfProcess(Proc.th32ProcessID); - for J := Low(lThreads) to High(lThreads) do - EnumThreadWindows(lThreads[J], @EnumThreadWndProc, LPARAM(WinCaption)); - if Global_IMProcessPID = Proc.th32ProcessID then - //MsgInf('IsProcessRun', 'Найден нужный процесс'); - Result := True; - // Ends - end; - until not Process32Next(Snapshot, Proc); - CloseHandle(Snapshot); -end; - -{ Завершение процесса по имени } -function KillTask(ExeFileName: String): Integer; -const - PROCESS_TERMINATE=$0001; -var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; -begin - Result := 0; - FSnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := Sizeof(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); - while Integer(ContinueLoop) <> 0 do - begin - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) - or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then - Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0), - FProcessEntry32.th32ProcessID), 0)); - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - end; - CloseHandle(FSnapshotHandle); -end; - -{ Завершение процесса по имени и заголовку окна } -function KillTask(ExeFileName, WinCaption: String): Integer; overload; -const - PROCESS_TERMINATE=$0001; -var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; - lThreads: TIntegerDynArray; - J: Integer; -begin - Result := 0; - FSnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := Sizeof(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); - while Integer(ContinueLoop) <> 0 do - begin - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) - or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then - begin - // Получение Заголовков окон процесса - //EnumWindows(@ProcGetCaptionForHandleEnum, FProcessEntry32.th32ProcessID); - // Получение ClassName и Заголовков окон всех потоков процесса - Global_IMProcessPID := 0; - lThreads := GetThreadsOfProcess(FProcessEntry32.th32ProcessID); - for J := Low(lThreads) to High(lThreads) do - EnumThreadWindows(lThreads[J], @EnumThreadWndProc, LPARAM(WinCaption)); - if Global_IMProcessPID = FProcessEntry32.th32ProcessID then - //MsgInf('KillTask', 'Найден нужный процесс'); - Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0)); - // Ends - end; - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - end; - CloseHandle(FSnapshotHandle); -end; - -{ Получение PID программы в памяти } -function GetProcessID(ExeFileName: String): Cardinal; -var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; -begin - Result := 0; - FSnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := Sizeof(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); - repeat - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) - or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then - begin - Result := FProcessEntry32.th32ProcessID; - Break; - end; - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - until not ContinueLoop; - CloseHandle(FSnapshotHandle); -end; - -{ Получение PID для нескольких процессов с одинаковым именем } -{function GetProcessIDMulti(ExeFileName: String): TArrayOfString; -var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; -begin - SetLength(Result, 0); - //Result := 0; - FSnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := Sizeof(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); - repeat - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) - or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then - begin - SetLength(Result, Length(Result)+1); - Result[Length(Result)-1] := IntToStr(FProcessEntry32.th32ProcessID); - end; - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - until not ContinueLoop; - CloseHandle(FSnapshotHandle); -end;} - -{ Получение PID для нескольких процессов с одинаковым именем } -function GetProcessIDMulti2(ExeFileName: String): TArrayOfCardinal; -var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; -begin - SetLength(Result, 0); - //Result := 0; - FSnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := Sizeof(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); - repeat - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) - or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then - begin - SetLength(Result, Length(Result)+1); - Result[Length(Result)-1] := FProcessEntry32.th32ProcessID; - end; - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - until not ContinueLoop; - CloseHandle(FSnapshotHandle); -end; - -{ Получаем полный путь до приложения по его PID } -function GetProcessFileName(PID: DWord; FullPath: Boolean=True): String; -var - Handle: THandle; -begin - Result := ''; - Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, PID); - try - if Handle <> 0 then - begin - SetLength(Result, MAX_PATH); - if FullPath then - begin - if GetModuleFileNameEx(Handle, 0, PChar(Result), MAX_PATH) > 0 then - SetLength(Result, StrLen(PChar(Result))) - else - Result := ''; - end - else - begin - if GetModuleBaseNameA(Handle, 0, PAnsiChar(Result), MAX_PATH) > 0 then - SetLength(Result, StrLen(PChar(Result))) - else - Result := ''; - end; - end; - finally - CloseHandle(Handle); - end; -end; - -{ Получаем команду запуска программы с полным путем по её PID } -function GetProcessCmdLine(dwProcessId : DWORD): String; -const - STATUS_SUCCESS = $00000000; - SE_DEBUG_NAME = 'SeDebugPrivilege'; - ProcessWow64Information = 26; -var - ProcessHandle : THandle; - ProcessBasicInfo : PROCESS_BASIC_INFORMATION; - ReturnLength : DWORD; - lpNumberOfBytesRead : ULONG_PTR; - TokenHandle : THandle; - lpLuid : TOKEN_PRIVILEGES; - OldlpLuid : TOKEN_PRIVILEGES; - Rtl : RTL_USER_PROCESS_PARAMETERS; - Peb : _PEB; - IsProcessx64 : Boolean; - {$IFDEF CPUX64} - PEBBaseAddress32 : Pointer; - Peb32 : _PEB32; - Rtl32 : RTL_USER_PROCESS_PARAMETERS32; - {$ENDIF} - Ws: WideString; -begin - Result:=''; - if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TokenHandle) then - begin - try - if not LookupPrivilegeValue(nil, SE_DEBUG_NAME, lpLuid.Privileges[0].Luid) then - RaiseLastOSError - else - begin - lpLuid.PrivilegeCount := 1; - lpLuid.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; - ReturnLength := 0; - OldlpLuid := lpLuid; - // Включаем себе SeDebugPrivilege - if not AdjustTokenPrivileges(TokenHandle, False, lpLuid, SizeOf(OldlpLuid), OldlpLuid, ReturnLength) then RaiseLastOSError; - end; - - ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, dwProcessId); - if ProcessHandle = 0 then RaiseLastOSError - else - try - IsProcessx64 := ProcessIsX64(ProcessHandle); - - {$IFNDEF CPUX64} - if IsProcessx64 then - raise Exception.Create('Only 32 bits processes are supported'); - {$ENDIF} - - {$IFDEF CPUX64} - if IsProcessx64 then - begin - {$ENDIF} - // Получаем доступ к PROCESS_BASIC_INFORMATION по адресу PEB - if (NtQueryInformationProcess(ProcessHandle,0{=>ProcessBasicInformation},@ProcessBasicInfo, SizeOf(ProcessBasicInfo), @ReturnLength)=STATUS_SUCCESS) and (ReturnLength=SizeOf(ProcessBasicInfo)) then - begin - // Читаем PEB структуру - if not ReadProcessMemory(ProcessHandle, ProcessBasicInfo.PEBBaseAddress, @Peb, sizeof(Peb), lpNumberOfBytesRead) then - RaiseLastOSError - else - begin - // Читаем RTL_USER_PROCESS_PARAMETERS структуру - if not ReadProcessMemory(ProcessHandle, Peb.ProcessParameters, @Rtl, SizeOf(Rtl), lpNumberOfBytesRead) then - RaiseLastOSError - else - begin - SetLength(ws,(Rtl.CommandLine.Length div 2)); - if not ReadProcessMemory(ProcessHandle,Rtl.CommandLine.Buffer,PWideChar(ws),Rtl.CommandLine.Length,lpNumberOfBytesRead) then - RaiseLastOSError - else - Result := String(ws); - end; - end; - end - else - RaiseLastOSError; - {$IFDEF CPUX64} - end - else - begin - // Получаем PEB адрес - if NtQueryInformationProcess(ProcessHandle, ProcessWow64Information, @PEBBaseAddress32, SizeOf(PEBBaseAddress32), nil)=STATUS_SUCCESS then - begin - // Читаем PEB структуру - if not ReadProcessMemory(ProcessHandle, PEBBaseAddress32, @Peb32, sizeof(Peb32), lpNumberOfBytesRead) then - RaiseLastOSError - else - begin - // Читаем RTL_USER_PROCESS_PARAMETERS структуру - if not ReadProcessMemory(ProcessHandle, Pointer(Peb32.ProcessParameters), @Rtl32, SizeOf(Rtl32), lpNumberOfBytesRead) then - RaiseLastOSError - else - begin - SetLength(ws,(Rtl32.CommandLine.Length div 2)); - if not ReadProcessMemory(ProcessHandle, Pointer(Rtl32.CommandLine.Buffer), PWideChar(ws), Rtl32.CommandLine.Length, lpNumberOfBytesRead) then - RaiseLastOSError - else - Result := String(Ws); - end; - end; - end - else - RaiseLastOSError; - end; - {$ENDIF} - finally - CloseHandle(ProcessHandle); - end; - finally - CloseHandle(TokenHandle); - end; - end - else - RaiseLastOSError; -end; - -{ Включаем себе SeDebugPrivilege } -function SetProcessDebugPrivelege: Boolean; -var - hToken: THandle; - tp: TTokenPrivileges; - rl: Cardinal; -begin - Result := False; - if not OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,hToken) then - Exit; - try - if not LookupPrivilegeValue(nil,'SeDebugPrivilege', tp.Privileges[0].Luid) then - Exit; - tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; - tp.PrivilegeCount := 1; - Result := AdjustTokenPrivileges(hToken,false,tp,0,nil,rl) and (GetLastError=0); - finally - CloseHandle(hToken); - end -end; - -// Завершение любых процессов в том числе системных. -// Включение, приминение и отключения привилегии. -// Для примера возьмем привилегию отладки приложений 'SeDebugPrivilege' -// необходимую для завершения ЛЮБЫХ процессов в системе (завершение процесов -// созданных текущим пользователем привилегия не нужна. -// Название добавление/удаление привилгии немного неправильные. Привилегия или -// есть в токене процесса или ее нет. Если привилегия есть, то она может быть в -// двух состояниях - или включеная или отключеная. И в этом примере мы только -// включаем или выключаем необходимую привилегию, а не добавляем ее. -function ProcessTerminate(dwPID: Cardinal): Boolean; -var - hToken:THandle; - SeDebugNameValue:Int64; - tkp:TOKEN_PRIVILEGES; - ReturnLength:Cardinal; - hProcess:THandle; -begin - Result := False; - // Включаем привилегию SeDebugPrivilege - // Для начала получаем токен нашего процесса - if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken ) then - Exit; - // Получаем LUID привилегии - if not LookupPrivilegeValue(nil, 'SeDebugPrivilege', SeDebugNameValue) then - begin - CloseHandle(hToken); - Exit; - end; - tkp.PrivilegeCount := 1; - tkp.Privileges[0].Luid := SeDebugNameValue; - tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; - // Добавляем привилегию к нашему процессу - AdjustTokenPrivileges(hToken, False, tkp, SizeOf(tkp), tkp, ReturnLength); - if GetLastError() <> ERROR_SUCCESS then - Exit; - // Завершаем процесс. Если у нас есть SeDebugPrivilege, то мы можем - // завершить и системный процесс - // Получаем дескриптор процесса для его завершения - hProcess := OpenProcess(PROCESS_TERMINATE, FALSE, dwPID); - if hProcess = 0 then - Exit; - // Завершаем процесс - if not TerminateProcess(hProcess, DWORD(-1)) then - Exit; - CloseHandle( hProcess ); - // Отключаем привилегию - tkp.Privileges[0].Attributes := 0; - AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), tkp, ReturnLength); - if GetLastError() <> ERROR_SUCCESS then - Exit; - Result := True; -end; - -function StringToParts(sString: String; tdDelim: TDelim): TArrayOfString; -var - iCounter,iBegin:Integer; -begin - if length(sString)>0 then - begin - include(tdDelim, #0); - iBegin:=1; - SetLength(Result, 0); - for iCounter:=1 to Length(sString)+1 do - begin - if(sString[iCounter] in tdDelim) then - begin - SetLength(Result, Length(Result)+1); - Result[Length(Result)-1] := Copy(sString, iBegin, iCounter-iBegin); - iBegin := iCounter+1; - end; - end; - end; -end; - -{ Edit1.Text := ExtractWord(ExtractWord('admin:login:password', ':', 3)); //'password' } -function ExtractWord(const AString: string; const ADelimiter: Char; const ANumber: integer): string; -var - i, j, k: integer; -begin - i := 1; - k := 1; - while k <> ANumber do - begin - if AString[i] = ADelimiter then - begin - Inc(k); - end; - Inc(i); - end; - j := i + 1; - while (j <= Length(AString)) and (AString[j] <> ADelimiter) do - Inc(j); - Result := Copy(AString, i, j - i); -end; - -{ Функция возвращает путь до пользовательской временной папки } -function GetUserTempPath: WideString; -var - UserPath: WideString; -begin - Result := ''; - SetLength(UserPath, MAX_PATH); - GetTempPath(MAX_PATH, PChar(UserPath)); - GetLongPathName(PChar(UserPath), PChar(UserPath), MAX_PATH); - SetLength(UserPath, StrLen(PChar(UserPath))); - Result := UserPath; -end; - -{ -DwMajorVersion:DWORD - старшая цифра версии Windows - - Windows 95 - 4 - Windows 98 - 4 - Windows Me - 4 - Windows NT 3.51 - 3 - Windows NT 4.0 - 4 - Windows 2000 - 5 - Windows XP - 5 - -DwMinorVersion: DWORD - младшая цифра версии - - Windows 95 - 0 - Windows 98 - 10 - Windows Me - 90 - Windows NT 3.51 - 51 - Windows NT 4.0 - 0 - Windows 2000 - 0 - Windows XP - 1 - - -DwBuildNumber: DWORD - Win NT 4 - номер билда - Win 9x - старший байт - старшая и младшая цифры версии / младший - номер -билда - -dwPlatformId: DWORD - - VER_PLATFORM_WIN32s Win32s on Windows 3.1. - VER_PLATFORM_WIN32_WINDOWS Win32 on Windows 9x - VER_PLATFORM_WIN32_NT Win32 on Windows NT, 2000 - - -SzCSDVersion:DWORD - NT - содержит PСhar с инфо о установленном ServicePack - 9x - доп. инфо, может и не быть -} -function DetectWinVersion: TWinVersion; -var - OSVersionInfo : TOSVersionInfo; -begin - Result := wvUnknown; // Неизвестная версия ОС - OSVersionInfo.dwOSVersionInfoSize := sizeof(TOSVersionInfo); - if GetVersionEx(OSVersionInfo) - then - begin - case OSVersionInfo.DwMajorVersion of - 3: Result := wvNT3; // Windows NT 3 - 4: case OSVersionInfo.DwMinorVersion of - 0: if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT - then Result := wvNT4 // Windows NT 4 - else Result := wv95; // Windows 95 - 10: Result := wv98; // Windows 98 - 90: Result := wvME; // Windows ME - end; - 5: case OSVersionInfo.DwMinorVersion of - 0: Result := wvW2K; // Windows 2000 - 1: Result := wvXP; // Windows XP - 2: Result := wv2003; // Windows 2003 - 3: Result := wvVista; // Windows Vista - end; - 6: case OSVersionInfo.DwMinorVersion of - 0: Result := wv2008; // Windows 2008 - 1: Result := wv7; // Windows 7 - end; - 7: case OSVersionInfo.DwMinorVersion of - 1: Result := wv8; // Windows 8 - end; - end; - end; -end; - -function DetectWinVersionStr: String; -const - VersStr : Array[TWinVersion] of String = ( - 'Unknown OS', - 'Windows 95', - 'Windows 98', - 'Windows ME', - 'Windows NT 3', - 'Windows NT 4', - 'Windows 2000', - 'Windows XP', - 'Windows Server 2003', - 'Windows Vista', - 'Windows 7', - 'Windows Server 2008', - 'Windows 8'); -begin - Result := VersStr[DetectWinVersion]; -end; - -begin -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dpr b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dpr deleted file mode 100644 index 62b3039fd9..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dpr +++ /dev/null @@ -1,32 +0,0 @@ -{ ################################################################################ } -{ # # } -{ # Обновление и установка набора программ IM-History - HistoryToDBUpdater v1.0 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ################################################################################ } - -program HistoryToDBUpdater; - -uses - madExcept, - madLinkDisAsm, - madListHardware, - madListProcesses, - madListModules, - Forms, - Main in 'Main.pas' {MainForm}, - Global in 'Global.pas'; - -{$R *.res} - -begin - Application.Initialize; - Application.MainFormOnTaskbar := True; - Application.Title := 'HistoryToDBUpdater'; - Application.CreateForm(TMainForm, MainForm); - if MainForm.RunAppDone then - Application.Run; -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dproj b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dproj deleted file mode 100644 index 72aa3a5ce1..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.dproj +++ /dev/null @@ -1,197 +0,0 @@ -п»ї - - {939BF92A-9B69-4A14-B992-518631C54279} - HistoryToDBUpdater.dpr - True - Release - 3 - Application - VCL - 14.4 - Win32 - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_1 - true - true - - - true - Cfg_1 - true - true - - - true - Base - true - - - false - false - 1049 - false - 00400000 - false - false - Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=;CFBundleDisplayName=;CFBundleIdentifier=;CFBundleVersion=;CFBundlePackageType=;CFBundleSignature=;CFBundleAllowMixedLocalizations=;CFBundleExecutable= - - - System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - 1033 - true - HistoryToDBUpdater_Icon1.ico - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - $(BDS)\bin\default_app.manifest - - - System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - 1033 - true - HistoryToDBUpdater_Icon1.ico - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - $(BDS)\bin\default_app.manifest - - - false - RELEASE;$(DCC_Define) - false - 0 - - - true - true - madExcept;$(DCC_Define) - true - 3 - HistoryToDBUpdater_Icon.ico - ..\..\..\bin10\Release\Plugins\ - ..\..\..\bin10\Release\Plugins\ - ..\..\..\bin10\Release\Obj\hpp\ - ..\..\..\bin10\Release\Obj\hpp\ - true - 1033 - 5 - CompanyName=http://www.im-history.ru;FileDescription=HistoryToDBUpdater;FileVersion=2.5.0.0;InternalName=HistoryToDBUpdater;LegalCopyright=Michael Grigorev;LegalTrademarks=http://www.im-history.ru;OriginalFilename=HistoryToDBUpdater.exe;ProductName=HistoryToDBUpdater;ProductVersion=1.0.0.0;Comments=http://www.im-history.ru - 2 - - - true - 2 - madExcept;$(DCC_Define) - true - 5 - true - HistoryToDBUpdater_Icon.ico - 3 - ..\..\..\bin10\Release64\Plugins\ - ..\..\..\bin10\Release64\Plugins\ - 1033 - true - ..\..\..\bin10\Release64\Obj\hpp\ - CompanyName=http://www.im-history.ru;FileDescription=HistoryToDBUpdater;FileVersion=2.5.0.0;InternalName=HistoryToDBUpdater;LegalCopyright=Michael Grigorev;LegalTrademarks=http://www.im-history.ru;OriginalFilename=HistoryToDBUpdater.exe;ProductName=HistoryToDBUpdater;ProductVersion=1.0.0.0;Comments=http://www.im-history.ru - ..\..\..\bin10\Release64\Obj\hpp\ - - - DEBUG;$(DCC_Define) - true - false - - - - MainSource - - -
MainForm
-
- - - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - -
- - Delphi.Personality.12 - - - - - HistoryToDBUpdater.dpr - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1049 - 1251 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - - - - - - - - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - - - - True - True - - - 12 - - - -
diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.manifest b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.manifest deleted file mode 100644 index 812068c2ab..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.manifest +++ /dev/null @@ -1,21 +0,0 @@ - - - -HistoryToDBUpdater - - - - - - diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.mes b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.mes deleted file mode 100644 index 1fcb334c1d..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.mes +++ /dev/null @@ -1,163 +0,0 @@ -[GeneralSettings] -MesVersion=4 -HandleExceptions=1 -LinkInCode=1 -AppendMapFileToBinary=1 -NoOwnMadExceptSettings=0 -CheckFileCrc=1 -CheckForFrozenMainThread=0 -FreezeTimeout=60000 -ReportLeaks=0 -WindowsLogo=0 -CrashOnBuffer=0 -CrashOnUnderrun=0 -AutomaticallySaveBugReport=1 -AutoSaveBugReportIfNotSent=1 -AutomaticallyMailBugReport=0 -AutoMailProgressBox=0 -CopyBugReportToClipboard=0 -SuspendAllRunningThreads=0 -ShowPleaseWaitBox=1 -PleaseWaitIcon=plwait1 -AutomaticallyContinueApplication=0 -AutomaticallyRestartApplication=0 -AutomaticallyCloseApplication=0 -SendInBackground=1 -SendHelper=196608 -Send32Icon=send321 -UploadViaHttp=0 -HttpServer= -HttpSsl=0 -HttpPort=0 -HttpAccount= -HttpPassword= -UploadToFogBugz=0 -UploadToBugZilla=0 -UploadToMantis=0 -BugTrackerAccount= -BugTrackerPassword= -BugTrackerProject= -BugTrackerArea= -BugTrackerAssignTo= -MailAsSmtpServer=0 -MailAsSmtpClient=0 -SmtpServer= -SmtpSsl=0 -SmtpTls=0 -SmtpPort=0 -SmtpAccount= -SmtpPassword= -MailViaMapi=1 -MailViaMailto=1 -MailAddress=sleuthhound@gmail.com -BugReportFile=bugreport.txt -AttachBugReport=1 -AttachBugReportFile=1 -DeleteBugReportFile=1 -BugReportSendAs=bugreport.txt -BugReportZip= -ScreenShotDepth=8 -ScreenShotAppOnly=0 -ScreenShotSendAs=screenshot.png -ScreenShotZip= -AdditionalAttachments= -AppendBugReports=1 -BugReportFileSize=100000 -DontSaveDuplicateExceptions=1 -DontSaveDuplicateFreezings=1 -DuplicateExceptionDefinition=1 -DuplicateFreezeDefinition=2 -ShowExceptionBox=1 -OkBtnText=&OK -DetailsBtnText=&Details -PleaseWaitTitle=Information -PleaseWaitText=Please wait a moment... -BugTrackerTitle=%25appname%25, %25exceptMsg%25 -BugTrackerDescr=error details: %0d%0a%25errorDetails%25 -MailSubject=bug report -MailBody=please find the bug report attached -SendBoxTitle=Sending bug report... -PrepareAttachMsg=Preparing attachments... -MxLookupMsg=Searching for mail server... -ConnectMsg=Connecting to server... -SendMailMsg=Sending mail... -FieldsMsg=Setting fields... -SendAttachMsg=Sending attachments... -SendFinalizeMsg=Finalizing... -MailFailureMsg=Sorry, sending the bug report didn't work. -VersionVariable= -[ExceptionBox] -ShowButtonMailBugReport=1 -ShowButtonSaveBugReport=0 -ShowButtonPrintBugReport=0 -ShowButtonShowBugReport=1 -ShowButtonContinueApplication=1 -ShowButtonRestartApplication=1 -ShowButtonCloseApplication=1 -IconButtonSendBugReport=send1 -IconButtonSaveBugReport=save1 -IconButtonPrintBugReport=print1 -IconButtonShowBugReport=show1 -IconButtonContinueApplication=continue1 -IconButtonCantContinueApplication=cantContinue1 -IconButtonRestartApplication=restart1 -IconButtonCloseApplication=close1 -FocusedButton=0 -SendAssistant=SendAssistant -SaveAssistant=SaveAssistant -PrintAssistant=PrintAssistant -AutomaticallyShowBugReport=0 -NoOwnerDrawButtons=0 -BigExceptionIcon=big1 -TitleBar=%25appname%25 -ExceptionMessage=An error occurred in the application. -FrozenMessage=The application seems to be frozen. -BitFaultMsg=The file "%25modname%25" seems to be corrupt! -MailBugReportText=send bug report -SaveBugReportText=save bug report -PrintBugReportText=print bug report -ShowBugReportText=show bug report -ContinueApplicationText=continue application -RestartApplicationText=restart application -CloseApplicationText=close application -[BugReport] -ListThreads=1 -ListModules=1 -ListHardware=1 -ShowCpuRegisters=1 -ShowStackDump=1 -Disassembly=1 -HideUglyItems=0 -ShowRelativeAddrs=1 -ShowRelativeLines=1 -FormatDisassembly=0 -LimitDisassembly=5 -EnabledPlugins=modules|processes|hardware -[Filters] -Filter1ExceptionClasses=EDBEditError -Filter1DontCreateBugReport=1 -Filter1DontCreateScreenshot=1 -Filter1DontSuspendThreads=1 -Filter1DontCallHandlers=1 -Filter1ShowBox=3 -Filter1Assis= -Filter2ExceptionClasses= -Filter2DontCreateBugReport=0 -Filter2DontCreateScreenshot=0 -Filter2DontSuspendThreads=0 -Filter2DontCallHandlers=0 -Filter2ShowBox=0 -Filter2Assis= -GeneralDontCreateBugReport=0 -GeneralDontCreateScreenshot=0 -GeneralDontSuspendThreads=0 -GeneralDontCallHandlers=0 -GeneralShowBox=0 -GeneralAssis= -[Assistants] -Assistant1=SendAssistant|Send Assistant|ContactForm|DetailsForm|ScrShotForm -Assistant2=SaveAssistant|Save Assistant|ContactForm|DetailsForm -Assistant3=PrintAssistant|Print Assistant|ContactForm|DetailsForm -Forms1=TPF0%0eTMEContactForm%0bContactForm%07Message%0c%13%00%00%00Contact Information%08MinWidth%04%00%00%00%00%08OnAction%0c%1b%00%00%00madExcept.HandleContactForm%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c%0a%00%00%00your name:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%08NameEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%09%0aOutputName%0c%0c%00%00%00contact name%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%08INVLabel%06Label2%07Caption%0c%0b%00%00%00your email:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%09EmailEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00contact email%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%0bINVCheckBox%08MemCheck%07Caption%0c%0b%00%00%00remember me%07Checked%08%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%00 -Forms2=TPF0%0eTMEDetailsForm%0bDetailsForm%07Message%0c%0d%00%00%00Error Details%08MinWidth%04%00%00%00%00%08OnAction%0c%00%00%00%00%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c'%00%00%00in which situation did the error occur?%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%0bDetailsMemo%07Colored%09%07Enabled%09%05Lines%04%09%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00error details%0aOutputType%07%0dnvoOwnSection%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%00 -Forms3=TPF0%0eTMEScrShotForm%0bScrShotForm%0dActiveControl%07%0bContinueBtn%07Message%0c%18%00%00%00Screenshot Configuration%08MinWidth%04%00%00%00%00%08OnAction%0c%1e%00%00%00madExcept.HandleScreenshotForm%05Timer%04%fa%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%0bINVCheckBox%0bAttachCheck%07Caption%0c%25%00%00%00attach a screenshot to the bug report%07Checked%09%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%08INVImage%0aScrShotImg%06Border%09%09Clickable%09%07Enabled%09%04File%0c%00%00%00%00%06Height%04%00%00%00%00%07Spacing%04%00%00%00%00%05Width%04%00%00%00%00%00%00%08INVLabel%06Label1%07Caption%0c%15%00%00%00(click to edit image)%07Enabled%09%07Spacing%04%00%00%00%00%00%00%00 diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.otares b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.otares deleted file mode 100644 index 93e7e944f2..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.otares and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.res b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.res deleted file mode 100644 index f283649744..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater.res and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater_Icon.ico b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater_Icon.ico deleted file mode 100644 index 244fcd4ddd..0000000000 Binary files a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/HistoryToDBUpdater_Icon.ico and /dev/null differ diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.dfm b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.dfm deleted file mode 100644 index 623f7ef672..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.dfm +++ /dev/null @@ -1,530 +0,0 @@ -object MainForm: TMainForm - Left = 0 - Top = 0 - BorderIcons = [biSystemMenu, biMinimize] - Caption = 'HistoryToDBUpdater' - ClientHeight = 357 - ClientWidth = 486 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - Icon.Data = { - 0000010001001010000001000000680400001600000028000000100000002000 - 0000010020000000000000040000000000000000000000000000000000000000 - 0000000000000000000000000000FF1F2A000000000000000000000000000000 - 00000000000000000000FF1F2A00000000000000000000000000000000000000 - 000000000000D0CDC500FF1F2A00FEEFA900FF1F2A00CDCDCD00CDCDCD00CDCD - CD00CDCDCD00FF1F2A00FEEFA900FF1F2A000000000000000000000000000000 - 0000D0CDC500FF1F2A00FEEFA900FFE55F00FF1F2A00FF1F2A00FF1F2A00FF1F - 2A00FF1F2A00FF1F2A00FFE55F00FEEFA900FF1F2A00D0CDC500000000000000 - 0000FF1F2A00FEEFA900FFE55F00FFE55F00FFE55F00FFD35000FECF4D00FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FEEFA900FF1F2A0000000000FF1F - 2A00FEEFA900FFE55F00FFE55F00FFE55F00FFE55F00FFD35000FFCA4800FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FFE55F00FF1F2A00FF1F2A000000 - 0000FF1F2A00FEEFA900FFE55F00FFE55F00FFE55F00FFD35000FFCA4800FFCC - 4A00FFD35000FFE55F00FFE55F00FFE55F00FEEFA900FF1F2A00000000000000 - 0000C1BDB600FF1F2A00FEEFA900FFE55F00FF1F2A00FF1F2A00FF1F2A00FF1F - 2A00FF1F2A00FF1F2A00FFE55F00FEEFA900FF1F2A00CFC7BF00000000000000 - 0000C1BDB600F9F3ED00FF1F2A00FEEFA900FF1F2A00D2D2D200D2D2D200D2D2 - D200D2D2D200FF1F2A00FEEFA900FF1F2A00BAB7AF00CFC7BF00000000000000 - 0000BAB7AF00A39A8F00BAB2A700FF1F2A00D2D2D200D2D2D200D2D2D200D2D2 - D200D2D2D200D2D2D200FF1F2A00CFC7BF00A39A8F00BAB7AF00000000000000 - 0000B1AB9F00C9C2B900CFC7BF00D5CCC400DCD3CA00E4D9D200E8DDD500E4D6 - CF00E4D6CF00E4D6CF00D5CCC400CFC7BF00C9C2B900B1AB9F00000000000000 - 0000B0AB9E00C7C0B600CCC4BB00D3C9C100DAD0C700E1D7CF00EBE1DA00E4D9 - D100E4D9D100DDD2CA00DBCDC500DDCAC400DBC4BF00C1ADA400000000000000 - 0000AFAA9D00C8C1B700E8E3DB00F5F0E800FDF8F200FCF8F100FBF7F000FCF7 - F100FCF7F100FDF8F200F7F0EA00ECE3DC00CDC3BB00B2AA9E00000000000000 - 0000AEA89C00FBF5EF00EEE7DE00E0D8CE00DDD5CC00DDD4CB00DDD4CB00DDD4 - CB00DDD4CB00DDD5CC00E0D7CE00EDE6DE00FBF6EF00AEA89C00000000000000 - 0000AFA99D00E1D8CE00E1D7CE00DFD6CC00DFD5CB00DFD5CB00DFD5CB00DFD5 - CB00DFD5CB00DFD5CB00DFD6CC00E1D7CE00E1D8CE00AFA99D00000000000000 - 000000000000B6B0A400D6CFC400E6DED500EFE7DD00EEE6DC00EEE6DC00EEE6 - DC00EEE6DC00EFE7DD00E6DED500D6CFC400B6B0A40000000000000000000000 - 00000000000000000000C4C0B700AEA99C00AEA89C00AEA89C00AEA89C00AEA8 - 9C00AEA89C00AEA89C00AEA99C00C4C0B700000000000000000000000000F7EF - FFFFC007FFFF8001FFFF8001FFFF0000FFFF8001FFFF8001FFFF8001FFFF8001 - FFFF8001FFFF8001FFFF8001FFFF8001FFFF8001FFFFC003FFFFE007FFFF} - OldCreateOrder = False - Position = poScreenCenter - OnClose = FormClose - OnCreate = FormCreate - OnDestroy = FormDestroy - OnShow = FormShow - DesignSize = ( - 486 - 357) - PixelsPerInch = 96 - TextHeight = 13 - object GBUpdater: TGroupBox - Left = 8 - Top = 8 - Width = 472 - Height = 145 - Anchors = [akLeft, akTop, akRight] - Caption = ' '#1054#1073#1085#1086#1074#1083#1077#1085#1080#1077' ' - TabOrder = 0 - DesignSize = ( - 472 - 145) - object LAmountDesc: TLabel - Left = 16 - Top = 56 - Width = 37 - Height = 13 - Caption = #1054#1073#1098#1077#1084':' - end - object LAmount: TLabel - Left = 59 - Top = 56 - Width = 30 - Height = 13 - Caption = '10000' - end - object LSpeedDesc: TLabel - Left = 16 - Top = 75 - Width = 52 - Height = 13 - Caption = #1057#1082#1086#1088#1086#1089#1090#1100':' - end - object LSpeed: TLabel - Left = 74 - Top = 75 - Width = 49 - Height = 13 - Caption = '1000 '#1050#1073'/c' - end - object LFileDesc: TLabel - Left = 210 - Top = 75 - Width = 53 - Height = 13 - Caption = #1054#1087#1080#1089#1072#1085#1080#1077':' - end - object LFileDescription: TLabel - Left = 269 - Top = 75 - Width = 62 - Height = 13 - Caption = #1053#1077' '#1080#1079#1074#1077#1089#1090#1085#1086 - end - object LFileMD5Desc: TLabel - Left = 210 - Top = 94 - Width = 25 - Height = 13 - Caption = 'MD5:' - end - object LFileMD5: TLabel - Left = 241 - Top = 94 - Width = 62 - Height = 13 - Caption = #1053#1077' '#1080#1079#1074#1077#1089#1090#1085#1086 - end - object LFileNameDesc: TLabel - Left = 210 - Top = 56 - Width = 58 - Height = 13 - Caption = #1048#1084#1103' '#1092#1072#1081#1083#1072':' - end - object LFileName: TLabel - Left = 274 - Top = 56 - Width = 62 - Height = 13 - Caption = #1053#1077' '#1080#1079#1074#1077#1089#1090#1085#1086 - end - object LStatus: TLabel - Left = 17 - Top = 21 - Width = 322 - Height = 13 - Hint = 'UpdateStatus' - Caption = #1053#1072#1078#1084#1080#1090#1077' '#1082#1085#1086#1087#1082#1091' "'#1054#1073#1085#1086#1074#1080#1090#1100'" '#1076#1083#1103' '#1085#1072#1095#1072#1083#1072' '#1087#1088#1086#1094#1077#1089#1089#1072' '#1086#1073#1085#1086#1074#1083#1077#1085#1080#1103'.' - end - object ProgressBarDownloads: TProgressBar - Left = 16 - Top = 40 - Width = 444 - Height = 10 - Anchors = [akLeft, akTop, akRight] - TabOrder = 0 - end - object ButtonSettings: TButton - Left = 114 - Top = 109 - Width = 90 - Height = 25 - Caption = #1053#1072#1089#1090#1088#1086#1081#1082#1080 - ImageIndex = 1 - Images = ImageList_Main - TabOrder = 2 - OnClick = ButtonSettingsClick - end - object ButtonUpdate: TButton - Left = 16 - Top = 109 - Width = 95 - Height = 25 - Hint = 'UpdateButton' - Caption = #1054#1073#1085#1086#1074#1080#1090#1100 - ImageIndex = 0 - Images = ImageList_Main - TabOrder = 1 - OnClick = ButtonUpdateStartClick - end - end - object SettingsPageControl: TPageControl - Left = 8 - Top = 159 - Width = 472 - Height = 193 - ActivePage = TabSheetSettings - Anchors = [akLeft, akTop, akRight] - TabOrder = 1 - object TabSheetSettings: TTabSheet - Caption = #1054#1073#1097#1080#1077' '#1085#1072#1089#1090#1088#1086#1081#1082#1080 - ImageIndex = 2 - DesignSize = ( - 464 - 165) - object GBSettings: TGroupBox - Left = 3 - Top = 0 - Width = 458 - Height = 161 - Anchors = [akLeft, akTop, akRight] - Caption = ' '#1054#1073#1097#1080#1077' '#1085#1072#1089#1090#1088#1086#1081#1082#1080 - TabOrder = 0 - object LLanguage: TLabel - Left = 16 - Top = 81 - Width = 88 - Height = 13 - Caption = #1071#1079#1099#1082' '#1087#1088#1086#1075#1088#1072#1084#1084#1099':' - end - object LIMClientType: TLabel - Left = 16 - Top = 27 - Width = 56 - Height = 13 - Caption = 'IM-'#1082#1083#1080#1077#1085#1090':' - end - object LDBType: TLabel - Left = 16 - Top = 54 - Width = 39 - Height = 13 - Caption = #1058#1080#1087' '#1041#1044':' - end - object LPlatformType: TLabel - Left = 261 - Top = 27 - Width = 18 - Height = 13 - Caption = 'x86' - end - object CBLang: TComboBox - Left = 110 - Top = 78 - Width = 145 - Height = 21 - Style = csDropDownList - TabOrder = 2 - OnChange = CBLangChange - end - object CBIMClientType: TComboBox - Left = 110 - Top = 24 - Width = 145 - Height = 21 - Style = csDropDownList - TabOrder = 0 - OnChange = CBIMClientTypeChange - end - object CBDBType: TComboBox - Left = 110 - Top = 51 - Width = 145 - Height = 21 - Style = csDropDownList - TabOrder = 1 - OnChange = CBDBTypeChange - end - end - end - object TabSheetConnectSettings: TTabSheet - Caption = #1053#1072#1089#1090#1088#1086#1081#1082#1080' '#1089#1086#1077#1076#1080#1085#1077#1085#1080#1103 - DesignSize = ( - 464 - 165) - object GBConnectSettings: TGroupBox - Left = 3 - Top = 0 - Width = 458 - Height = 161 - Anchors = [akLeft, akTop, akRight] - Caption = ' '#1053#1072#1089#1090#1088#1086#1081#1082#1080' '#1089#1086#1077#1076#1080#1085#1077#1085#1080#1103' ' - TabOrder = 0 - object LProxyAddress: TLabel - Left = 16 - Top = 47 - Width = 118 - Height = 13 - Caption = #1040#1076#1088#1077#1089' '#1087#1088#1086#1082#1089#1080'-'#1089#1077#1088#1074#1077#1088#1072':' - end - object LProxyPort: TLabel - Left = 267 - Top = 48 - Width = 29 - Height = 13 - Caption = #1055#1086#1088#1090':' - end - object LProxyUser: TLabel - Left = 16 - Top = 98 - Width = 76 - Height = 13 - Caption = #1055#1086#1083#1100#1079#1086#1074#1072#1090#1077#1083#1100':' - end - object LProxyUserPasswd: TLabel - Left = 16 - Top = 125 - Width = 41 - Height = 13 - Caption = #1055#1072#1088#1086#1083#1100':' - end - object CBUseProxy: TCheckBox - Left = 16 - Top = 24 - Width = 193 - Height = 17 - Caption = #1048#1089#1087#1086#1083#1100#1079#1086#1074#1072#1090#1100' '#1089#1074#1086#1081' '#1087#1088#1086#1082#1089#1080'-'#1089#1077#1088#1074#1077#1088 - TabOrder = 0 - OnClick = CBUseProxyClick - end - object EProxyAddress: TEdit - Left = 140 - Top = 44 - Width = 121 - Height = 21 - TabOrder = 1 - Text = '127.0.0.1' - end - object EProxyPort: TEdit - Left = 302 - Top = 44 - Width = 73 - Height = 21 - MaxLength = 5 - NumbersOnly = True - TabOrder = 2 - Text = '3128' - end - object EProxyUser: TEdit - Left = 98 - Top = 95 - Width = 163 - Height = 21 - TabOrder = 4 - end - object CBProxyAuth: TCheckBox - Left = 16 - Top = 71 - Width = 233 - Height = 17 - Caption = #1055#1088#1086#1082#1089#1080'-'#1089#1077#1088#1074#1077#1088' '#1090#1088#1077#1073#1091#1077#1090' '#1072#1074#1090#1086#1088#1080#1079#1072#1094#1080#1102 - TabOrder = 3 - OnClick = CBProxyAuthClick - end - object EProxyUserPasswd: TEdit - Left = 98 - Top = 122 - Width = 163 - Height = 21 - PasswordChar = '*' - TabOrder = 5 - end - end - end - object TabSheetLog: TTabSheet - Caption = #1051#1086#1075#1080 - ImageIndex = 1 - DesignSize = ( - 464 - 165) - object LogMemo: TMemo - Left = 3 - Top = 3 - Width = 458 - Height = 159 - Anchors = [akLeft, akTop, akRight, akBottom] - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 0 - end - end - end - object IMDownloader1: TIMDownloader - OnError = IMDownloader1Error - OnAccepted = IMDownloader1Accepted - OnHeaders = IMDownloader1Headers - OnMD5Checked = IMDownloader1MD5Checked - OnDownloading = IMDownloader1Downloading - OnStartDownload = IMDownloader1StartDownload - OnBreak = IMDownloader1Break - Left = 384 - Top = 112 - end - object ImageList_Main: TImageList - ColorDepth = cd32Bit - DrawingStyle = dsTransparent - Left = 384 - Top = 64 - Bitmap = { - 494C010102000400300210001000FFFFFFFF2110FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000001000000001002000000000000010 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000112A1251235A26B72A6E2DE42C732EF52C732EF5286C2CE6027920FA0279 - 1CFF000200040000000000000000000000000000000000000000000000000000 - 0000000000000000000029292963414141BF3C3C3CBF1F1F1F63000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000207030D2A65 - 2EB637873CFB9AC49CFFB2C19CFFBCC09BFFBDC29CFFAFD2B0FF0A8732FF41A0 - 5DFF06731FF2030C051C00000000000000000000000000000000000000001111 - 11290505050E01010102767676EABDBDBDFFB2B2B2FF545454EA010101020404 - 040E0C0C0C290000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000308030D397E3ED16EB6 - 85FFADE8C7FFBFD29FFF20964FFF1A9047FF148E41FF0F8A39FF389E5CFF7EC0 - 95FF44A260FF06781FF8030D051E0000000000000000000000004E4E4E9B6D6D - 6DFD5A5A5AE70B0B0B19777777E7CBCBCBFFC7C7C7FF585858E7080808194F4F - 4FE74D4D4DFD2B2B2B9B00000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000034743BB174BF8CFF98D7 - B2FF77BF7EFFBBC17CFF279A59FF8FCAA8FF8CC8A4FF89C5A0FF87C49DFF68B5 - 84FF81C196FF46A464FF057620F500030009000000004F4F4F7BBCBCBCFFDEDE - DEFFA6A6A6FF7D7D7DF4848484FEC4C4C4FFC2C2C2FF6C6C6CFE686868F4A6A6 - A6FFD2D2D2FF808080FF2727277B000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000001631194650AB5AFBB4EAD3FF67BB - 72FF6CBC6FFFBDB56BFF2F9E61FF93CDACFF6DB98DFF69B788FF64B584FF5FB2 - 7EFF65B481FF82C197FF3A9F5AFF007B23FB000000005353537DA5A5A5FED5D5 - D5FFC5C5C5FFCBCBCBFFD1D1D1FFC9C9C9FFC7C7C7FFCCCCCCFFC5C5C5FFBDBD - BDFFCBCBCBFF6D6D6DFE3131317D000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000003D8146B291D7AEFF9FDEB3FF83C5 - 6EFFA7D07EFFC4A45AFF35A269FF95CEAFFF93CDACFF90CBA9FF8FCBA7FF72BB - 8FFF89C7A0FF44A466FF088735FF215A24BF00000000000000005A5A5A85C5C5 - C5FFC1C1C1FFC5C5C5FFC7C7C7FFAAAAAAFFA7A7A7FFC1C1C1FFBEBEBEFFB5B5 - B5FFAAAAAAFF3636368500000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000052AA5DE4AFE9CFFF82D48FFFBEDC - 89FFC2CB81FFCCA154FF3BA46DFF38A26BFF33A065FF2F9C5FFF53AE7AFF90CB - A9FF4DAA72FF168E44FFA0D8BBFF296D2CE8838383CD7F7F7FE3959595EECFCF - CFFFC6C6C6FFCCCCCCFF7A7A7AC629292944272727446F6F6FC6C1C1C1FFBCBC - BCFFB9B9B9FF5C5C5CEE4E4E4EE3424242CD0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000005BBB67F6BDEFDDFF71D17BFF8FD1 - 6AFFBBE09DFFC7A65CFFD3AF5CFFC59851FFC5BB6CFFAED178FF39A162FF58B2 - 80FF269755FF58A265FFB0E3CEFF2D7832F7BEBEBEFDE2E2E2FFD2D2D2FFC6C6 - C6FFCDCDCDFFB1B1B1FF27272744000000000000000028282844A8A8A8FFC2C2 - C2FFB7B7B7FFC0C0C0FFD2D2D2FF5F5F5FFD0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000005BBB68F5BDF0DCFF80D882FF75DB - 6BFFBEE599FFCCDFA6FFCAA75BFFC1BC6AFFB7DA8AFFA5D85EFF3AA666FF2F9E - 63FF57BB4EFF61AA6AFFB1E4CEFF317C35F6C2C2C2FDE9E9E9FFD6D6D6FFC9C9 - C9FFCECECEFFA5A5A5FF23232344000000000000000029292944ACACACFFC4C4 - C4FFBABABAFFC6C6C6FFDDDDDDFF696969FD0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000054AD60E2B2ECD2FF9AE2A1FF9CEA - 8CFFD4EDB6FFD0EAC7FFCFB86CFFCCB064FFCBC973FF74DB65FF64D94BFF63D7 - 4BFF6AD35BFF71BA7CFFA4DBC1FF337A36E6A0A0A0CDADADADE3B3B3B3EED8D8 - D8FFCDCDCDFFBCBCBCFF656565C61F1F1F44222222446F6F6FC6C3C3C3FFC2C2 - C2FFCDCDCDFF838383EE787878E3696969CD0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000408449AD97DEB4FFB4EBCCFFB0EF - A6FFC9EEA8FFD1EAC9FFD5CF8CFFD9CB8AFFCDB364FFBBBB65FF99D66FFF81DE - 71FF78DC6FFF90D0A2FF87C8A3FF2C672FB9000000000000000066666685D4D4 - D4FFCCCCCCFFC9C9C9FFBABABAFF9C9C9CFFA1A1A1FFC2C2C2FFC6C6C6FFC1C1 - C1FFB7B7B7FF4747478500000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000162E1A3C5DBF6AFABFF3E2FFB4EF - B3FFB4F0ABFFC0EDB6FFD4E3B6FFD9D89BFFDAD394FFCDB46BFFC7B26BFFB4CB - 83FF93DF99FFAEE7CDFF43984AFC142D154F000000006363637DC3C3C3FEDCDC - DCFFD4D4D4FFD9D9D9FFDBDBDBFFD6D6D6FFD4D4D4FFD9D9D9FFD2D2D2FFCBCB - CBFFC8C8C8FF787878FE3636367D000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000003D7E46A586D79FFFBFF2 - DEFFC7F2D6FFD5EFD5FFD0E9CFFFD5DBA5FFDCDEAAFFDBCD8FFFD7C88AFFC9C0 - 8DFFBCD5AEFF78C790FF33743BB600000000000000006363637BDCDCDCFFEDED - EDFFDBDBDBFFB9B9B9F4BDBDBDFED6D6D6FFD4D4D4FFAFAFAFFEA4A4A4F4CBCB - CBFFE7E7E7FFB7B7B7FF4343437B000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000001040105499653C48BD8 - A1FFCDF5E8FFD4EDDAFFCEEDD3FFCFDFAEFFD6DEB4FFD4D4A1FFCED0A0FFC3D0 - A9FF86C990FF428E4BD1040A040F0000000000000000000000007F7F7F9BCCCC - CCFDB7B7B7E713131319AFAFAFE7DEDEDEFFDDDDDDFFA1A1A1E7101010199C9C - 9CE7A6A6A6FD6363639B00000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000020302043D7C - 45A45DBD69F8A4E1BAFFB9EACCFFC4E0BDFFC4DAB3FFBCD7AFFFA5D7ABFF5ABA - 65FB3F8447B60309040C00000000000000000000000000000000000000002121 - 21290A0A0A0E02020202B6B6B6EAE5E5E5FFE4E4E4FF9E9E9EEA010101020A0A - 0A0E1C1C1C290000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000162E193D3F8249AA53AB5EDF5BBA67F45DBD69F857B263E942884BB21B36 - 1D48000000000000000000000000000000000000000000000000000000000000 - 000000000000000000004E4E4E63959595BF929292BF4A4A4A63000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000424D3E000000000000003E000000 - 2800000040000000100000000100010000000000800000000000000000000000 - 000000000000000000000000FFFFFF0000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000} - end -end diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.pas deleted file mode 100644 index 7579d1834a..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/Main.pas +++ /dev/null @@ -1,1497 +0,0 @@ -{ ################################################################################ } -{ # # } -{ # Обновление и установка набора программ IM-History - HistoryToDBUpdater v1.0 # } -{ # # } -{ # License: GPLv3 # } -{ # # } -{ # Author: Grigorev Michael (icq: 161867489, email: sleuthhound@gmail.com) # } -{ # # } -{ ################################################################################ } - -unit Main; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ComCtrls, XMLIntf, XMLDoc, Global, IniFiles, uIMDownloader, ShellApi, - ImgList; - -type - TMainForm = class(TForm) - GBUpdater: TGroupBox; - ProgressBarDownloads: TProgressBar; - LAmountDesc: TLabel; - LAmount: TLabel; - LSpeedDesc: TLabel; - LSpeed: TLabel; - ButtonSettings: TButton; - ButtonUpdate: TButton; - SettingsPageControl: TPageControl; - TabSheetConnectSettings: TTabSheet; - TabSheetLog: TTabSheet; - GBConnectSettings: TGroupBox; - LProxyAddress: TLabel; - LProxyPort: TLabel; - LProxyUser: TLabel; - LProxyUserPasswd: TLabel; - CBUseProxy: TCheckBox; - EProxyAddress: TEdit; - EProxyPort: TEdit; - EProxyUser: TEdit; - CBProxyAuth: TCheckBox; - EProxyUserPasswd: TEdit; - LogMemo: TMemo; - LFileDesc: TLabel; - LFileDescription: TLabel; - LFileMD5Desc: TLabel; - LFileMD5: TLabel; - LFileNameDesc: TLabel; - LFileName: TLabel; - IMDownloader1: TIMDownloader; - LStatus: TLabel; - TabSheetSettings: TTabSheet; - GBSettings: TGroupBox; - LLanguage: TLabel; - CBLang: TComboBox; - LIMClientType: TLabel; - CBIMClientType: TComboBox; - LDBType: TLabel; - CBDBType: TComboBox; - ImageList_Main: TImageList; - LPlatformType: TLabel; - procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure FormDestroy(Sender: TObject); - procedure ButtonSettingsClick(Sender: TObject); - procedure ButtonUpdateStartClick(Sender: TObject); - procedure ButtonUpdateStopClick(Sender: TObject); - procedure CBUseProxyClick(Sender: TObject); - procedure CBProxyAuthClick(Sender: TObject); - procedure IMDownloader1StartDownload(Sender: TObject); - procedure IMDownloader1Break(Sender: TObject); - procedure IMDownloader1Downloading(Sender: TObject; AcceptedSize, MaxSize: Cardinal); - procedure IMDownloader1Error(Sender: TObject; E: TIMDownloadError); - procedure IMDownloader1Accepted(Sender: TObject); - procedure IMDownloader1Headers(Sender: TObject; Headers: String); - procedure IMDownloader1MD5Checked(Sender: TObject; MD5Correct, SizeCorrect: Boolean; MD5Str: string); - procedure CBLangChange(Sender: TObject); - procedure CBIMClientTypeChange(Sender: TObject); - procedure CBDBTypeChange(Sender: TObject); - procedure ButtonUpdateEnableStart; - procedure ButtonUpdateEnableStop; - procedure FindLangFile; - procedure CoreLanguageChanged; - procedure InstallUpdate; - procedure SetProxySettings; - procedure AntiBoss(HideAllForms: Boolean); - procedure RunIMClient(IMClientName: String; IMProcessArray: TProcessInfoArray); - procedure RunAllIMClients; - function StartStepByStepUpdate(CurrStep: Integer; INIFileName: String): Integer; - private - { Private declarations } - FLanguage : WideString; - procedure OnControlReq(var Msg : TWMCopyData); message WM_COPYDATA; - // Для мультиязыковой поддержки - procedure OnLanguageChanged(var Msg: TMessage); message WM_LANGUAGECHANGED; - procedure LoadLanguageStrings; - function EndTask(TaskName, FormName: String): Boolean; - public - { Public declarations } - RunAppDone: Boolean; - C1, C2: TLargeInteger; - iCounterPerSec: TLargeInteger; - TrueHeader: Boolean; - CurrentUpdateStep: Integer; - HeaderMD5: String; - HeaderFileSize: Integer; - HeaderFileName: String; - MD5InMemory: String; - IMMD5Correct: Boolean; - IMSizeCorrect: Boolean; - INISavePath: String; - SavePath: String; - SystemLang: String; - IMCancelCopy: Boolean; - DropboxProcessInfo: TProcessInfoArray; - QIPProcessInfo: TProcessInfoArray; - RnQProcessInfo: TProcessInfoArray; - SkypeProcessInfo: TProcessInfoArray; - MirandaProcessInfo: TProcessInfoArray; - property CoreLanguage: WideString read FLanguage; - end; - -function CopyProgressFunc(TotalFileSize: Int64; TotalBytesTransferred: Int64; - StreamSize: Int64; StreamBytesTransferred: Int64; dwStreamNumber: DWORD; - dwCallbackReason: DWORD; hSourceFile: THandle; hDestinationFile: THandle; - lpData: Pointer): DWORD; stdcall; - -var - MainForm: TMainForm; - - -implementation - -{$R *.dfm} - -procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); -var - INI: TIniFile; - Path: WideString; - IsFileClosed: Boolean; - sFile: DWORD; -begin - // Переменная для режима анти-босс - Global_MainForm_Showing := False; - // Сохранение настроек - DBType := CBDBType.Items[CBDBType.ItemIndex]; - IMClientType := CBIMClientType.Items[CBIMClientType.ItemIndex]; - DefaultLanguage := CoreLanguage; - Path := ProfilePath + ININame; - if FileExists(Path) then - begin - try - // Ждем пока файл освободит антивирь или еще какая-нибудь гадость - IsFileClosed := False; - repeat - sFile := CreateFile(PChar(Path),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); - if (sFile <> INVALID_HANDLE_VALUE) then - begin - CloseHandle(sFile); - IsFileClosed := True; - end; - until IsFileClosed; - // End - INI := TIniFile.Create(Path); - if ParamCount = 0 then - begin - INI.WriteString('Main', 'DBType', DBType); - INI.WriteString('Main', 'IMClientType', IMClientType); - INI.WriteString('Main', 'DefaultLanguage', DefaultLanguage); - end; - INI.WriteString('Proxy', 'UseProxy', BoolToIntStr(CBUseProxy.Checked)); - INI.WriteString('Proxy', 'ProxyAddress', EProxyAddress.Text); - INI.WriteString('Proxy', 'ProxyPort', EProxyPort.Text); - INI.WriteString('Proxy', 'ProxyAuth', BoolToIntStr(CBProxyAuth.Checked)); - INI.WriteString('Proxy', 'ProxyUser', EProxyUser.Text); - INI.WriteString('Proxy', 'ProxyUserPasswd', EncryptStr(EProxyUserPasswd.Text)); - INI.WriteString('Updater', 'UpdateServer', UpdateServer); - finally - INI.Free; - end; - end; - if FileExists(INISavePath) then - DeleteFile(INISavePath); - // Пишем все в лог - if EnableDebug then - LogMemo.Lines.SaveToFile(ProfilePath + DebugLogName); -end; - -procedure TMainForm.FormCreate(Sender: TObject); -var - CmdHelpStr: WideString; -begin - RunAppDone := False; - TrueHeader := False; - IMMD5Correct := False; - IMSizeCorrect := False; - CurrentUpdateStep := 0; - // Определяем системный язык - if MatchStrings(GetSysLang, 'Русский*') or MatchStrings(GetSysLang, 'Russian*') then - SystemLang := 'Russian' - else - SystemLang := 'English'; - // Подсказка по параметрам запуска - if SystemLang = 'Russian' then - begin - CmdHelpStr := 'Параметры запуска ' + ProgramsName + ' v' + ProgramsVer + ' ' + PlatformType + ':' + #13 + - '--------------------------------------------------------------' + #13#13 + - 'HistoryToDBUpdater.exe <1>' + #13#13 + - '<1> - (Необязательный параметр) - Путь до файла настроек HistoryToDB.ini (Например: "C:\Program Files\QIP Infium\Profiles\username@qip.ru\Plugins\QIPHistoryToDB\")'; - end - else - begin - CmdHelpStr := 'Startup options ' + ProgramsName + ' v' + ProgramsVer + ' ' + PlatformType + ':' + #13 + - '------------------------------------------------' + #13#13 + - 'HistoryToDBUpdater.exe <1>' + #13#13 + - '<1> - (Optional) - The path to the configuration file HistoryToDB.ini (Example: "C:\Program Files\QIP Infium\Profiles\username@qip.ru\Plugins\QIPHistoryToDB\")'; - end; - // Проверка входных параметров - if (ParamStr(1) = '/?') or (ParamStr(1) = '-?') then - begin - MsgInf(ProgramsName, CmdHelpStr); - Exit; - end - else - begin - if ParamCount >= 1 then - begin - ProfilePath := IncludeTrailingPathDelimiter(ParamStr(1)); - end - else - begin - ProfilePath := ExtractFilePath(Application.ExeName); - end; - PluginPath := ExtractFilePath(Application.ExeName); - // Временный каталог - SavePath := GetUserTempPath + 'IMHistory\'; - INISavePath := SavePath + 'HistoryToDBUpdate.ini'; - IMDownloader1.DirPath := PluginPath; - // Инициализация криптования - EncryptInit; - // Читаем настройки - LoadINI(ProfilePath, false); - // Загружаем настройки локализации - if ParamCount >= 1 then - FLanguage := DefaultLanguage - else - FLanguage := SystemLang; - LangDoc := NewXMLDocument(); - if not DirectoryExists(PluginPath + dirLangs) then - CreateDir(PluginPath + dirLangs); - if not FileExists(PluginPath + dirLangs + defaultLangFile) then - begin - if SystemLang = 'Russian' then - CmdHelpStr := 'Файл локализации ' + PluginPath + dirLangs + defaultLangFile + ' не найден.' - else - CmdHelpStr := 'The localization file ' + PluginPath + dirLangs + defaultLangFile + ' is not found.'; - MsgInf(ProgramsName, CmdHelpStr); - // Освобождаем ресурсы - EncryptFree; - Exit; - end; - CoreLanguageChanged; - // Заполняем список языков - FindLangFile; - // Для мультиязыковой поддержки - MainFormHandle := Handle; - SetWindowLong(Handle, GWL_HWNDPARENT, 0); - SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW); - // Загружаем язык интерфейса - LoadLanguageStrings; - // Программа запущена - RunAppDone := True; - end; -end; - -procedure TMainForm.FormDestroy(Sender: TObject); -begin - if RunAppDone then - begin - // Освобождаем ресурсы - EncryptFree; - end; -end; - -procedure TMainForm.FormShow(Sender: TObject); -var - I: Integer; -begin - // Переменная для режима анти-босс - Global_MainForm_Showing := True; - // Прозрачность окна - AlphaBlend := AlphaBlendEnable; - AlphaBlendValue := AlphaBlendEnableValue; - // Др. настройки - LAmount.Caption := '0 '+GetLangStr('Kb'); - LFileName.Caption := GetLangStr('Unknown'); - LFileDescription.Caption := GetLangStr('Unknown'); - LFileMD5.Caption := GetLangStr('Unknown'); - LSpeed.Caption := '0 '+GetLangStr('KbSec'); - CBUseProxy.Checked := False; - EProxyAddress.Enabled := False; - EProxyPort.Enabled := False; - CBProxyAuth.Enabled := False; - SettingsPageControl.ActivePage := TabSheetSettings; - SettingsPageControl.Visible := False; - MainForm.Height := SettingsPageControl.Height + 5; - if (DBType = 'Unknown') or (ParamCount = 0) then - begin - CBDBType.Enabled := True; - CBDBType.Items.Add('Unknown'); - CBDBType.Items.Add('mysql'); - CBDBType.Items.Add('postgresql'); - CBDBType.Items.Add('oracle'); - CBDBType.Items.Add('sqlite-3'); - CBDBType.Items.Add('firebird-2.0'); - CBDBType.Items.Add('firebird-2.5'); - if ParamCount = 0 then - begin - for I := 0 to CBDBType.Items.Count-1 do - if CBDBType.Items[I] = DBType then - CBDBType.ItemIndex := I - end - else - CBDBType.ItemIndex := 0; - // Показываем настройки - ButtonSettingsClick(Self); - end - else - begin - CBDBType.Enabled := False; - CBDBType.Items.Add(DBType); - CBDBType.ItemIndex := 0; - end; - if (IMClientType = 'Unknown') or (ParamCount = 0) then - begin - CBIMClientType.Enabled := True; - CBIMClientType.Items.Add('Unknown'); - CBIMClientType.Items.Add('QIP'); - CBIMClientType.Items.Add('RnQ'); - CBIMClientType.Items.Add('Skype'); - CBIMClientType.Items.Add('Miranda'); - CBIMClientType.Items.Add('MirandaNG'); - if ParamCount = 0 then - begin - for I := 0 to CBIMClientType.Items.Count-1 do - if CBIMClientType.Items[I] = IMClientType then - CBIMClientType.ItemIndex := I - end - else - CBIMClientType.ItemIndex := 0; - // Показываем настройки если не были показыны ранее - if not SettingsPageControl.Visible then - ButtonSettingsClick(Self); - end - else - begin - CBIMClientType.Enabled := False; - CBIMClientType.Items.Add(IMClientType); - CBIMClientType.ItemIndex := 0; - end; - // Платформа - LPlatformType.Caption := IMClientPlatformType; - // Прокси - CBUseProxy.Checked := IMUseProxy; - EProxyAddress.Text := IMProxyAddress; - EProxyPort.Text := IMProxyPort; - CBProxyAuth.Checked := IMProxyAuth; - EProxyUser.Text := IMProxyUser; - EProxyUserPasswd.Text := IMProxyUserPagsswd; - // Версия утилиты обновления - LogMemo.Lines.Add(ProgramsName + ' v' + ProgramsVer + ' ' + PlatformType); -end; - -procedure TMainForm.ButtonSettingsClick(Sender: TObject); -begin - if not SettingsPageControl.Visible then - begin - MainForm.Height := GBUpdater.Height + SettingsPageControl.Height + 55; - SettingsPageControl.Visible := True; - end - else - begin - SettingsPageControl.Visible := False; - MainForm.Height := SettingsPageControl.Height + 5; - end; -end; - -procedure TMainForm.ButtonUpdateStartClick(Sender: TObject); -var - AllProcessEndErr: Integer; -begin - IMCancelCopy := False; - AllProcessEndErr := 0; - if (DBType = 'Unknown') or (IMClientType = 'Unknown') then - MsgInf(Caption, GetLangStr('SelectDBTypeAndIMClient')) - else - begin - LogMemo.Clear; - // Ищем программы синхронизации типа Dropbox - {if IsProcessRun('Dropbox.exe') then - begin - if SystemLang = 'Russian' then - MsgString := 'В памяти найдена программа Dropbox.' + #13 + - 'Если Вы используете её для синхронизации IM-клиента, то для корректного обновления' + #13 + - 'всех компонентов плагина необходимо её закрыть.' + #13 + - 'Закрыть Dropbox?' - else - MsgString := 'Find the program in the memory of Dropbox.' + #13 + - 'If you use it to synchronize the IM-client, to properly' + #13 + - 'update all the components necessary to close the plug.' + #13 + - 'Close Dropbox?'; - case MessageBox(MainForm.Handle, PWideChar(MsgString), PWideChar(Caption),36) of - 6: DropboxProcessInfo := EndProcess('Dropbox.exe', True); - end; - end;} - // Ищем запущенные компоненты плагина и закрываем их - if not EndTask('HistoryToDBSync.exe', 'HistoryToDBSync for ' + IMClientType + ' (' + MyAccount + ')') then - Inc(AllProcessEndErr); - if not EndTask('HistoryToDBViewer.exe', 'HistoryToDBViewer for ' + IMClientType + ' (' + MyAccount + ')') then - Inc(AllProcessEndErr); - if not EndTask('HistoryToDBImport.exe', 'HistoryToDBImport for ' + IMClientType + ' (' + MyAccount + ')') then - Inc(AllProcessEndErr); - // Если все процессы убиты, то обновляемся - if AllProcessEndErr = 0 then - begin - // Ищем все экземпляры IM-клиентов и закрываем их - if IMClientType = 'QIP' then - begin - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['qip.exe'])); - QIPProcessInfo := EndProcess('qip.exe', 0, True); - end; - if IMClientType = 'Miranda' then - begin - if IMClientPlatformType = 'x86' then - begin - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['miranda32.exe'])); - MirandaProcessInfo := EndProcess('miranda32.exe', 1, True); - end - else - begin - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['miranda64.exe'])); - MirandaProcessInfo := EndProcess('miranda64.exe', 1, True); - end; - end; - if IMClientType = 'MirandaNG' then - begin - if IMClientPlatformType = 'x86' then - begin - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['miranda32.exe'])); - MirandaProcessInfo := EndProcess('miranda32.exe', 0, True); - end - else - begin - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['miranda64.exe'])); - MirandaProcessInfo := EndProcess('miranda64.exe', 0, True); - end; - end; - if IMClientType = 'RnQ' then - begin - if IsProcessRun('rnq.exe') then - begin - RnQProcessInfo := EndProcess('rnq.exe', 0, True); - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['rnq.exe'])); - end; - if IsProcessRun('R&Q.exe') then - begin - RnQProcessInfo := EndProcess('R&Q.exe', 0, True); - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['R&Q.exe'])); - end; - end; - if IMClientType = 'Skype' then - begin - SkypeProcessInfo := EndProcess('skype.exe', 0, True); - LogMemo.Lines.Add(Format(GetLangStr('EndProcess'), ['skype.exe'])); - end; - // Начинаем обновление - TrueHeader := False; - CurrentUpdateStep := 0; - SetProxySettings; - if IMClientPlatformType = 'x86' then - IMDownloader1.URL := UpdateServer + '&platform=windows-x86' - else - IMDownloader1.URL := UpdateServer + '&platform=windows-x64'; - IMDownloader1.DownLoad; - end - else - MsgInf(Caption, GetLangStr('ManualUpdate')); - end; -end; - -{ Устанавливаем настройки прокси } -procedure TMainForm.SetProxySettings; -begin - if CBUseProxy.Checked then - begin - IMDownloader1.Proxy := EProxyAddress.Text + ':' + EProxyPort.Text; - if CBProxyAuth.Checked then - begin - IMDownloader1.ProxyAuthUserName := EProxyUser.Text; - IMDownloader1.ProxyAuthPassword := EProxyUserPasswd.Text; - end - else - begin - IMDownloader1.ProxyAuthUserName := ''; - IMDownloader1.ProxyAuthPassword := ''; - end; - end - else - begin - IMDownloader1.Proxy := ''; - IMDownloader1.AuthUserName := ''; - IMDownloader1.AuthPassword := ''; - end; -end; - -procedure TMainForm.IMDownloader1Accepted(Sender: TObject); -var - MaxSteps: Integer; -begin - LStatus.Caption := GetLangStr('DownloadSuccessful'); - LStatus.Hint := 'DownloadSuccessful'; - LStatus.Repaint; - LAmount.Caption := CurrToStr(IMDownloader1.AcceptedSize/1024)+' '+GetLangStr('Kb'); - LAmount.Repaint; - if not TrueHeader then - begin - LFileName.Caption := GetLangStr('Unknown'); - LFileDescription.Caption := GetLangStr('Unknown'); - LFileMD5.Caption := GetLangStr('Unknown'); - LStatus.Caption := GetLangStr('InvalidResponseHeader'); - LStatus.Hint := 'InvalidResponseHeader'; - LStatus.Repaint; - ButtonUpdateEnableStart; - end - else - begin - LStatus.Caption := GetLangStr('IsChecksum'); - LStatus.Hint := 'IsChecksum'; - LStatus.Repaint; - if MD5InMemory <> 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' then - begin - LogMemo.Lines.Add(GetLangStr('MD5FileInMemory') + ' ' + MD5InMemory); - LogMemo.Lines.Add(GetLangStr('FileSizeInMemory') + ' ' + IntToStr(IMDownloader1.OutStream.Size)); - end; - if IMMD5Correct and IMSizeCorrect then - begin - if MD5InMemory <> 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' then - begin - LStatus.Caption := GetLangStr('ChecksumConfirmed'); - LStatus.Hint := 'ChecksumConfirmed'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('ChecksumConfirmed')); - end - else - begin - LStatus.Caption := GetLangStr('ChecksumFileEqServer'); - LStatus.Hint := 'ChecksumFileEqServer'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('ChecksumFileEqServer')); - end; - // Если первый шаг - скачивание INI файла - if CurrentUpdateStep = 0 then - INISavePath := SavePath + HeaderFileName; - // Проверяем каталог для сохранения - if not DirectoryExists(SavePath) then - CreateDir(SavePath); - // Удаляем старый файл - if CurrentUpdateStep = 0 then - begin - if FileExists(INISavePath) then - DeleteFile(INISavePath); - end; - if FileExists(SavePath + HeaderFileName) then - DeleteFile(SavePath + HeaderFileName); - // Сохряняем новый - try - if MD5InMemory <> 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' then - begin - IMDownloader1.OutStream.SaveToFile(SavePath + HeaderFileName); - LStatus.Caption := GetLangStr('FileSavedAs') + ' ' + HeaderFileName; - LStatus.Hint := 'FileSavedAs'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('FileSavedAs') + ' ' + HeaderFileName); - end; - Inc(CurrentUpdateStep); - if CurrentUpdateStep > 0 then - MaxSteps := StartStepByStepUpdate(CurrentUpdateStep, INISavePath); - except - on E: Exception do - begin - LStatus.Caption := GetLangStr('ErrFileSavedAs') + ' ' + HeaderFileName; - LStatus.Hint := 'ErrFileSavedAs'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('ErrFileSavedAs') + ' ' + HeaderFileName); - end; - end; - end - else - begin - if not IMMD5Correct then - begin - LStatus.Caption := GetLangStr('ChecksumNotConfirmed'); - LStatus.Hint := 'ChecksumNotConfirmed'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('ChecksumNotConfirmed')); - end; - if not IMSizeCorrect then - begin - LStatus.Caption := GetLangStr('SizeNotConfirmed'); - LStatus.Hint := 'SizeNotConfirmed'; - LStatus.Repaint; - LogMemo.Lines.Add(GetLangStr('SizeNotConfirmed')); - end; - ButtonUpdateEnableStart; - end; - end; -end; - -function TMainForm.StartStepByStepUpdate(CurrStep: Integer; INIFileName: String): Integer; -var - UpdateINI: TIniFile; - MaxStep, IMClientCount, IMClientDownloadFileCount: Integer; - DatabaseCount, DatabaseDownloadFileCount, I, UpdateServerInServiceMode: Integer; - IMClientName, IMClientNum, UpdateURL: String; - DatabaseName, DatabaseNum, TmpUpdateServer: String; - FileListArray: TArrayOfString; - DownloadListArray: TArrayOfString; -begin - Result := 0; - if FileExists(INIFileName) then - begin - UpdateINI := TIniFile.Create(INIFileName); - UpdateServerInServiceMode := UpdateINI.ReadInteger('HistoryToDBUpdate', 'UpdateServerInServiceMode', 0); - LogMemo.Lines.Add('UpdateServerInServiceMode = ' + IntToStr(UpdateServerInServiceMode)); - //Сервер обновлений временно на сервисном обслуживании - if UpdateServerInServiceMode = 1 then - begin - LogMemo.Lines.Add(Format(GetLangStr('UpdateServerInServiceMode'), [' '])); - IMDownloader1.BreakDownload; - MsgInf(Caption, Format(GetLangStr('UpdateServerInServiceMode'), [#13])); - Result := -1; - // Вкл. кнопки - ButtonUpdateEnableStart; - // Запуск IM-клиента - RunAllIMClients; - // Выход - Close; - Exit; - end; - // Смена сервера обновления - TmpUpdateServer := UpdateINI.ReadString('HistoryToDBUpdate', 'UpdateServer', UpdateServer); - if TmpUpdateServer <> UpdateServer then - UpdateServer := TmpUpdateServer; - // End - MaxStep := UpdateINI.ReadInteger('HistoryToDBUpdate', 'FileCount', 0); - IMClientCount := UpdateINI.ReadInteger('HistoryToDBUpdate', 'IMClientCount', 0); - if EnableDebug then - LogMemo.Lines.Add('Число IM-клиентов в INI-файле = ' + IntToStr(IMClientCount)); - IMClientDownloadFileCount := 0; - SetLength(DownloadListArray, 0); - if IMClientCount > 0 then - begin - IMClientName := ''; - while (IMClientCount > 0) and (IMClientName <> CBIMClientType.Items[CBIMClientType.ItemIndex]) do - begin - IMClientName := UpdateINI.ReadString('HistoryToDBUpdate', 'IMClient'+IntToStr(IMClientCount)+'Name', ''); - IMClientNum := UpdateINI.ReadString('HistoryToDBUpdate', 'IMClient'+IntToStr(IMClientCount)+'File', ''); - if EnableDebug then - begin - LogMemo.Lines.Add('IM-клиент = ' + IMClientName); - LogMemo.Lines.Add('Номера файлов = ' + IMClientNum); - end; - Dec(IMClientCount); - end; - FileListArray := StringToParts(IMClientNum, [',']); - SetLength(DownloadListArray, Length(FileListArray)); - DownloadListArray := FileListArray; - IMClientDownloadFileCount := Length(FileListArray); - if EnableDebug then - begin - for I := 0 to High(FileListArray) do - LogMemo.Lines.Add('№ файла для '+IMClientName+' = ' + FileListArray[I]); - end; - end; - DatabaseCount := UpdateINI.ReadInteger('HistoryToDBUpdate', 'DatabaseCount', 0); - DatabaseDownloadFileCount := 0; - if EnableDebug then - LogMemo.Lines.Add('Число типов Database в INI-файле = ' + IntToStr(DatabaseCount)); - if DatabaseCount > 0 then - begin - DatabaseName := ''; - while (DatabaseCount > 0) and (DatabaseName <> CBDBType.Items[CBDBType.ItemIndex]) do - begin - DatabaseName := UpdateINI.ReadString('HistoryToDBUpdate', 'Database'+IntToStr(DatabaseCount)+'Name', ''); - DatabaseNum := UpdateINI.ReadString('HistoryToDBUpdate', 'Database'+IntToStr(DatabaseCount)+'File', ''); - if EnableDebug then - begin - LogMemo.Lines.Add('Database = ' + DatabaseName); - LogMemo.Lines.Add('Номера файлов = ' + DatabaseNum); - end; - Dec(DatabaseCount); - end; - FileListArray := StringToParts(DatabaseNum, [',']); - SetLength(DownloadListArray, Length(DownloadListArray) + Length(FileListArray)); - DatabaseDownloadFileCount := Length(FileListArray); - for I := 0 to High(FileListArray) do - begin - DownloadListArray[IMClientDownloadFileCount+I] := FileListArray[I]; - if EnableDebug then - LogMemo.Lines.Add('№ файла для '+DatabaseName+' = ' + FileListArray[I]); - end; - end; - if EnableDebug then - begin - LogMemo.Lines.Add('Число шагов = ' + IntToStr(Length(DownloadListArray))); - for I := 0 to High(DownloadListArray) do - LogMemo.Lines.Add('DownloadListArray['+IntToStr(I)+'] = ' + DownloadListArray[I]); - end; - MaxStep := IMClientDownloadFileCount + DatabaseDownloadFileCount; - Result := MaxStep; - if EnableDebug then - LogMemo.Lines.Add('Число шагов = ' + IntToStr(MaxStep)); - if CurrentUpdateStep > MaxStep then - begin - LStatus.Caption := GetLangStr('AllUpdatesDownloaded'); - LStatus.Hint := 'AllUpdatesDownloaded'; - LStatus.Repaint; - LogMemo.Lines.Add('========================================='); - LogMemo.Lines.Add(GetLangStr('AllUpdatesDownloaded')); - InstallUpdate; - LStatus.Caption := GetLangStr('AllUpdatesInstalled'); - LStatus.Hint := 'AllUpdatesInstalled'; - LStatus.Repaint; - LogMemo.Lines.Add('========================================='); - LogMemo.Lines.Add(GetLangStr('AllUpdatesInstalled')); - // Вкл. кнопки - ButtonUpdateEnableStart; - // Запуск IM-клиента - RunAllIMClients; - Close; - Exit; - end; - LogMemo.Lines.Add('================= ' + GetLangStr('Step') + ' '+IntToStr(CurrStep)+' ================='); - LogMemo.Lines.Add(GetLangStr('NumberFilesUpdate') + ' = ' + IntToStr(MaxStep)); - if MaxStep > 0 then - begin - UpdateURL := UpdateINI.ReadString('HistoryToDBUpdate', 'File'+DownloadListArray[CurrStep-1], ''); - if (UpdateURL <> '') and (CurrStep <= MaxStep) then - begin - LogMemo.Lines.Add(GetLangStr('FileToUpdate') + ' = ' + UpdateURL); - if MatchStrings(UpdateURL, '*file=*Lang') then - IMDownloader1.DirPath := PluginPath + dirLangs - else if MatchStrings(UpdateURL, '*file=*-update-*-to-*') then - IMDownloader1.DirPath := PluginPath + dirSQLUpdate - else - IMDownloader1.DirPath := PluginPath; - IMDownloader1.URL := UpdateURL; - IMDownloader1.DownLoad; - end - else - CurrentUpdateStep := 0; - end; - end - else - LogMemo.Lines.Add(GetLangStr('UpdateSettingsFileNotFound') + ' ' + INIFileName); -end; - -procedure TMainForm.InstallUpdate; -var - SR: TSearchRec; -begin - LAmount.Caption := '0 '+GetLangStr('Kb'); - LFileName.Caption := GetLangStr('Unknown'); - LFileDescription.Caption := GetLangStr('Unknown'); - LFileMD5.Caption := GetLangStr('Unknown'); - LSpeed.Caption := '0 '+GetLangStr('KbSec'); - // Обновление - if FindFirst(SavePath + '*.*', faAnyFile or faDirectory, SR) = 0 then - begin - repeat - if (SR.Attr = faDirectory) and ((SR.Name = '.') or (SR.Name = '..')) then // Чтобы не было файлов . и .. - begin - Continue; // Продолжаем цикл - end; - if MatchStrings(SR.Name, 'HistoryToDBUpdater.exe') then - begin - LStatus.Caption := Format(GetLangStr('UpdateFile'), [SR.Name]); - LStatus.Hint := 'UpdateFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateFile'), [SR.Name])); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + 'HistoryToDBUpdater.upd'), Addr(CopyProgressFunc), nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.xml') then - begin - LStatus.Caption := Format(GetLangStr('UpdateLangFile'), [SR.Name]); - LStatus.Hint := 'UpdateLangFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateLangFile'), [SR.Name])); - if FileExists(PluginPath + dirLangs + SR.Name) then - DeleteFile(PluginPath + dirLangs + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + dirLangs + SR.Name), Addr(CopyProgressFunc), nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateLangFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.sql') then - begin - LStatus.Caption := Format(GetLangStr('UpdateSQLFile'), [SR.Name]); - LStatus.Hint := 'UpdateSQLFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateSQLFile'), [SR.Name])); - if not DirectoryExists(PluginPath + dirSQLUpdate) then - CreateDir(PluginPath + dirSQLUpdate); - if FileExists(PluginPath + dirSQLUpdate + SR.Name) then - DeleteFile(PluginPath + dirSQLUpdate + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + dirSQLUpdate + SR.Name), Addr(CopyProgressFunc), nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateSQLFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.exe') then - begin - LStatus.Caption := Format(GetLangStr('UpdateFile'), [SR.Name]); - LStatus.Hint := 'UpdateFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateFile'), [SR.Name])); - if FileExists(PluginPath + SR.Name) then - DeleteFile(PluginPath + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + SR.Name), nil, nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.dll') then - begin - LStatus.Caption := Format(GetLangStr('UpdateFile'), [SR.Name]); - LStatus.Hint := 'UpdateFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateFile'), [SR.Name])); - if FileExists(PluginPath + SR.Name) then - DeleteFile(PluginPath + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + SR.Name), Addr(CopyProgressFunc), nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.msg') then - begin - LStatus.Caption := Format(GetLangStr('UpdateFile'), [SR.Name]); - LStatus.Hint := 'UpdateFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateFile'), [SR.Name])); - if FileExists(PluginPath + SR.Name) then - DeleteFile(PluginPath + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + SR.Name), nil, nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - if MatchStrings(SR.Name, '*.txt') then - begin - LStatus.Caption := Format(GetLangStr('UpdateFile'), [SR.Name]); - LStatus.Hint := 'UpdateFile'; - LStatus.Repaint; - LogMemo.Lines.Add(Format(GetLangStr('UpdateFile'), [SR.Name])); - if FileExists(PluginPath + SR.Name) then - DeleteFile(PluginPath + SR.Name); - if CopyFileEx(PChar(SavePath + SR.Name), PChar(PluginPath + SR.Name), Addr(CopyProgressFunc), nil, Addr(IMCancelCopy), COPY_FILE_RESTARTABLE) then - begin - DeleteFile(SavePath + SR.Name); - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileDone'), [SR.Name])); - end - else - LogMemo.Lines.Add(Format(GetLangStr('UpdateFileErr'), [SR.Name])); - end; - until FindNext(SR) <> 0; - FindClose(SR); - end; -end; - -procedure TMainForm.IMDownloader1Break(Sender: TObject); -begin - LStatus.Caption := GetLangStr('DownloadStopped'); - LStatus.Hint := 'DownloadStopped'; - LAmount.Caption := CurrToStr(IMDownloader1.AcceptedSize/1024)+' '+GetLangStr('Kb'); - LAmount.Repaint; - ButtonUpdateEnableStart; -end; - -procedure TMainForm.IMDownloader1Downloading(Sender: TObject; AcceptedSize, MaxSize: Cardinal); -begin - QueryPerformanceCounter(C2); - ProgressBarDownloads.Max := MaxSize; - ProgressBarDownloads.Position := AcceptedSize; - LStatus.Caption := GetLangStr('Loading'); - LStatus.Hint := 'Loading'; - LAmount.Caption := CurrToStr(AcceptedSize/1024)+' '+GetLangStr('Kb'); - LAmount.Repaint; - LSpeed.Caption := CurrToStr((AcceptedSize/1024)/((C2 - C1) / iCounterPerSec))+' '+GetLangStr('KbSec'); - LSpeed.Repaint; -end; - -procedure TMainForm.IMDownloader1Error(Sender: TObject; E: TIMDownloadError); -var - S, HS: String; -begin - case E of - deInternetOpen: - begin - S := GetLangStr('ErrInternetOpen'); - HS := 'ErrInternetOpen'; - end; - deInternetOpenUrl: - begin - S := GetLangStr('ErrInternetOpenURL'); - HS := 'ErrInternetOpenURL'; - end; - deDownloadingFile: - begin - S := GetLangStr('ErrDownloadingFile'); - HS := 'ErrDownloadingFile'; - end; - deRequest: - begin - S := GetLangStr('ErrRequest'); - HS := 'ErrRequest'; - end; - end; - LStatus.Caption := S; - LStatus.Hint := HS; - LogMemo.Lines.Add(S); - LAmount.Caption := CurrToStr(IMDownloader1.AcceptedSize/1024)+' '+GetLangStr('Kb'); - LAmount.Repaint; - if not TrueHeader then - begin - LFileName.Caption := GetLangStr('Unknown'); - LFileDescription.Caption := GetLangStr('Unknown'); - LFileMD5.Caption := GetLangStr('Unknown'); - end; - ButtonUpdateEnableStart; -end; - -{ Получение информации о файле - Формат инормации: - Имя_файла|Описани_файла|MD5Sum_файла|Размер_файла -} -procedure TMainForm.IMDownloader1Headers(Sender: TObject; Headers: string); -var - HeadersStrList: TStringList; - I: Integer; - Size: String; - Ch: Char; - ResultFilename, ResultFileDesc, ResultMD5Sum, ResultHeaders: String; - ResultFileSize: Integer; -begin - //LogMemo.Lines.Add(Headers); - HeadersStrList := TStringList.Create; - HeadersStrList.Clear; - HeadersStrList.Text := Headers; - HeadersStrList.Delete(HeadersStrList.Count-1); // Последний элемент содержит всегда CRLF - if HeadersStrList.Count > 0 then - begin - ResultFilename := 'Test'; - ResultFileDesc := 'Test'; - ResultMD5Sum := '00000000000000000000000000000000'; - ResultFileSize := 0; - LogMemo.Lines.Add(GetLangStr('ParseHeader')); - for I := 0 to HeadersStrList.Count - 1 do - begin - //LogMemo.Lines.Add(HeadersStrList[I]); - // Парсим строку вида - // Content-Disposition: attachment; filename="ИМЯ-ФАЙЛА" - // Такую строку вставляет в заголовок HTTP-запроса - // только мой скрипт get.php - if pos('content-disposition', lowercase(HeadersStrList[I])) > 0 then - begin - ResultFilename := HeadersStrList[I]; - Delete(ResultFilename, 1, Pos('"', HeadersStrList[I])); - Delete(ResultFilename, Length(ResultFilename),1); - //LogMemo.Lines.Add('Filename: '+ResultFilename); - end; - // Парсим строку вида - // Content-Description: Desc - if pos('content-description', lowercase(HeadersStrList[I])) > 0 then - begin - ResultFileDesc := HeadersStrList[I]; - Delete(ResultFileDesc, 1, Pos(':', HeadersStrList[I])); - Delete(ResultFileDesc, 1,1); - //LogMemo.Lines.Add('Description: '+ResultFileDesc); - end; - // Парсим строку вида - // Content-MD5Sum: MD5 - if pos('content-md5sum', lowercase(HeadersStrList[I])) > 0 then - begin - ResultMD5Sum := HeadersStrList[I]; - Delete(ResultMD5Sum, 1, Pos(':', HeadersStrList[I])); - Delete(ResultMD5Sum, 1,1); - //LogMemo.Lines.Add('MD5: '+ResultMD5Sum); - end; - // Парсим строку вида - // Content-Length: РАЗМЕР - if pos('content-length', lowercase(HeadersStrList[i])) > 0 then - begin - Size := ''; - for Ch in HeadersStrList[I]do - if Ch in ['0'..'9'] then - Size := Size + Ch; - ResultFileSize := StrToIntDef(Size,-1);// + Length(HeadersStrList.Text); - end; - end; - ResultHeaders := ResultFilename + '|' + ResultFileDesc + '|' + ResultMD5Sum + '|' + IntToStr(ResultFileSize) + '|'; - if(ResultHeaders <> 'Test|Test|00000000000000000000000000000000|' + IntToStr(ResultFileSize) + '|') then - begin - LogMemo.Lines.Add(GetLangStr('HeaderData')); - LogMemo.Lines.Add(GetLangStr('FileName') + ' ' + ResultFilename); - LogMemo.Lines.Add(GetLangStr('FileDesc') + ' ' + ResultFileDesc); - LogMemo.Lines.Add('MD5: ' + ResultMD5Sum); - LogMemo.Lines.Add(GetLangStr('FileSize') + ' ' + IntToStr(ResultFileSize)); - LFileName.Caption := ResultFilename; - LFileDescription.Caption := ResultFileDesc; - LFileMD5.Caption := ResultMD5Sum; - HeaderFileName := ResultFilename; - HeaderMD5 := ResultMD5Sum; - HeaderFileSize := ResultFileSize; - if (CurrentUpdateStep = 0) and FileExists(PluginPath+HeaderFileName) then - DeleteFile(PluginPath+HeaderFileName); - TrueHeader := True; - end - else - begin - LogMemo.Lines.Add(GetLangStr('InvalidResponseHeader')); - LogMemo.Lines.Add(GetLangStr('InvalidResponseHeaderDesc')); - HeaderFileName := 'Test'; - HeaderMD5 := '00000000000000000000000000000000'; - HeaderFileSize := 0; - TrueHeader := False; - end; - end; - HeadersStrList.Free; -end; - -procedure TMainForm.IMDownloader1MD5Checked(Sender: TObject; MD5Correct, SizeCorrect: Boolean; MD5Str: string); -begin - MD5InMemory := MD5Str; - IMMD5Correct := MD5Correct; - IMSizeCorrect := SizeCorrect; -end; - -procedure TMainForm.IMDownloader1StartDownload(Sender: TObject); -begin - QueryPerformanceFrequency(iCounterPerSec); - QueryPerformanceCounter(C1); - ButtonUpdateEnableStop; - LStatus.Caption := GetLangStr('InitDownload'); - LStatus.Hint := 'InitDownload'; - LAmount.Caption := '0 '+GetLangStr('Kb'); - LSpeed.Caption := '0 '+GetLangStr('KbSec'); - LogMemo.Lines.Add(GetLangStr('InitDownloadFromURL') + ' ' + IMDownloader1.URL); -end; - -procedure TMainForm.ButtonUpdateStopClick(Sender: TObject); -begin - // Прерываем закачку - IMDownloader1.BreakDownload; - //Останавливаем процесс копирования - IMCancelCopy := True; -end; - -procedure TMainForm.CBUseProxyClick(Sender: TObject); -begin - if CBUseProxy.Checked then - begin - EProxyAddress.Enabled := True; - EProxyPort.Enabled := True; - CBProxyAuth.Enabled := True; - end - else - begin - EProxyAddress.Enabled := False; - EProxyPort.Enabled := False; - CBProxyAuth.Enabled := False; - end; -end; - -procedure TMainForm.CBProxyAuthClick(Sender: TObject); -begin - if CBProxyAuth.Checked then - begin - EProxyUser.Enabled := True; - EProxyUserPasswd.Enabled := True; - end - else - begin - EProxyUser.Enabled := False; - EProxyUserPasswd.Enabled := False; - end; -end; - -procedure TMainForm.ButtonUpdateEnableStart; -begin - ButtonUpdate.OnClick := ButtonUpdateStartClick; - ButtonUpdate.Caption := GetLangStr('UpdateButton'); - ButtonUpdate.Hint := 'UpdateButton'; - ButtonSettings.Enabled := True; - CBIMClientType.Enabled := True; - CBDBType.Enabled := True; -end; - -procedure TMainForm.ButtonUpdateEnableStop; -begin - ButtonUpdate.OnClick := ButtonUpdateStopClick; - ButtonUpdate.Caption := GetLangStr('StopButton'); - ButtonUpdate.Hint := 'StopButton'; - ButtonSettings.Enabled := False; - CBIMClientType.Enabled := False; - CBDBType.Enabled := False; -end; - -procedure TMainForm.CBDBTypeChange(Sender: TObject); -begin - DBType := CBDBType.Items[CBDBType.ItemIndex]; -end; - -procedure TMainForm.CBIMClientTypeChange(Sender: TObject); -begin - IMClientType := CBIMClientType.Items[CBIMClientType.ItemIndex]; -end; - -{ Смена языка } -procedure TMainForm.CBLangChange(Sender: TObject); -begin - FLanguage := CBLang.Items[CBLang.ItemIndex]; - DefaultLanguage := CBLang.Items[CBLang.ItemIndex]; - CoreLanguageChanged; -end; - -{ Процедура поиска языковых файлов и заполнения списка } -procedure TMainForm.FindLangFile; -var - SR: TSearchRec; - I: Integer; -begin - CBLang.Items.Clear; - if FindFirst(PluginPath + dirLangs + '\*.*', faAnyFile or faDirectory, SR) = 0 then - begin - repeat - if (SR.Attr = faDirectory) and ((SR.Name = '.') or (SR.Name = '..')) then // Чтобы не было файлов . и .. - begin - Continue; // Продолжаем цикл - end; - if MatchStrings(SR.Name, '*.xml') then - begin - // Заполняем лист - CBLang.Items.Add(ExtractFileNameEx(SR.Name, False)); - end; - until FindNext(SR) <> 0; - FindClose(SR); - end; - if CBLang.Items.Count > 0 then - begin - for I := 0 to CBLang.Items.Count-1 do - begin - if CBLang.Items[I] = CoreLanguage then - CBLang.ItemIndex := I; - end; - end - else - begin - CBLang.Items.Add(GetLangStr('NotFoundLangFile')); - CBLang.ItemIndex := 0; - CBLang.Enabled := False; - end; -end; - -{ Смена языка интерфейса по событию WM_LANGUAGECHANGED } -procedure TMainForm.OnLanguageChanged(var Msg: TMessage); -begin - LoadLanguageStrings; -end; - -{ Функция для мультиязыковой поддержки } -procedure TMainForm.CoreLanguageChanged; -var - LangFile: String; -begin - if CoreLanguage = '' then - Exit; - try - LangFile := PluginPath + dirLangs + CoreLanguage + '.xml'; - if FileExists(LangFile) then - LangDoc.LoadFromFile(LangFile) - else - begin - if FileExists(PluginPath + dirLangs + defaultLangFile) then - LangDoc.LoadFromFile(PluginPath + dirLangs + defaultLangFile) - else - begin - MsgDie(ProgramsName, 'Not found any language file!'); - Exit; - end; - end; - Global.CoreLanguage := CoreLanguage; - SendMessage(MainFormHandle, WM_LANGUAGECHANGED, 0, 0); - //SendMessage(AboutFormHandle, WM_LANGUAGECHANGED, 0, 0); - except - on E: Exception do - MsgDie(ProgramsName, 'Error on CoreLanguageChanged: ' + E.Message + sLineBreak + - 'CoreLanguage: ' + CoreLanguage); - end; -end; - -{ Для мультиязыковой поддержки } -procedure TMainForm.LoadLanguageStrings; -begin - if IMClientType <> 'Unknown' then - Caption := ProgramsName + ' for ' + IMClientType + ' (' + MyAccount + ')' - else - Caption := ProgramsName; - if ButtonUpdate.Hint = 'UpdateButton' then - begin - ButtonUpdate.Caption := GetLangStr('UpdateButton'); - ButtonUpdate.Hint := 'UpdateButton'; - end - else - begin - ButtonUpdate.Caption := GetLangStr('StopButton'); - ButtonUpdate.Hint := 'StopButton'; - end; - ButtonSettings.Caption := GetLangStr('SettingsButton'); - LIMClientType.Caption := GetLangStr('IMClientType'); - LDBType.Caption := GetLangStr('LDBType'); - LLanguage.Caption := GetLangStr('Language'); - TabSheetSettings.Caption := GetLangStr('GeneralSettings'); - TabSheetConnectSettings.Caption := GetLangStr('ConnectionSettings'); - TabSheetLog.Caption := GetLangStr('Logs'); - GBSettings.Caption := GetLangStr('GeneralSettings'); - GBConnectSettings.Caption := GetLangStr('ConnectionSettings'); - CBUseProxy.Caption := GetLangStr('UseProxy'); - LProxyAddress.Caption := GetLangStr('ProxyAddress'); - LProxyPort.Caption := GetLangStr('ProxyPort'); - CBProxyAuth.Caption := GetLangStr('ProxyAuth'); - LProxyUser.Caption := GetLangStr('ProxyUser'); - LProxyUserPasswd.Caption := GetLangStr('ProxyUserPasswd'); - EProxyAddress.Left := LProxyAddress.Left + LProxyAddress.Width + 5; - LProxyPort.Left := EProxyAddress.Left + EProxyAddress.Width + 5; - EProxyPort.Left := LProxyPort.Left + LProxyPort.Width + 5; - GBUpdater.Caption := GetLangStr('Update'); - LStatus.Caption := GetLangStr(LStatus.Hint); - LAmountDesc.Caption := GetLangStr('Amount'); - LSpeedDesc.Caption := GetLangStr('Speed'); - LFileNameDesc.Caption := GetLangStr('FileName'); - LFileDesc.Caption := GetLangStr('FileDesc'); - LAmount.Left := LAmountDesc.Left + LAmountDesc.Width + 5; - LSpeed.Left := LSpeedDesc.Left + LSpeedDesc.Width + 5; - LFileName.Left := LFileNameDesc.Left + LFileNameDesc.Width + 5; - LFileDescription.Left := LFileDesc.Left + LFileDesc.Width + 5; - if ButtonSettings.Enabled then - begin - LFileName.Caption := GetLangStr('Unknown'); - LFileDescription.Caption := GetLangStr('Unknown'); - LFileMD5.Caption := GetLangStr('Unknown'); - end; -end; - -function TMainForm.EndTask(TaskName, FormName: String): Boolean; -begin - Result := False; - if IsProcessRun(TaskName, FormName) then - begin - LogMemo.Lines.Add(Format(GetLangStr('InMemoryFoundProcess'), [TaskName, IntToStr(GetProcessID(TaskName))])); - LogMemo.Lines.Add(GetLangStr('SendExitCommand')); - OnSendMessageToOneComponent(FormName, '009'); - Sleep(1200); - LogMemo.Lines.Add(Format(GetLangStr('SearchProcessInMemory'), [TaskName])); - if IsProcessRun(TaskName, FormName) then - begin - LogMemo.Lines.Add(Format(GetLangStr('InMemoryFoundProcess'), [TaskName, IntToStr(GetProcessID(TaskName))])); - LogMemo.Lines.Add(Format(GetLangStr('KillProcess'), [TaskName])); - if KillTask(TaskName, FormName) = 1 then - begin - LogMemo.Lines.Add(Format(GetLangStr('KillProcessDone'), [TaskName])); - Result := True; - end - else - begin - if Global_IMProcessPID <> 0 then - begin - LogMemo.Lines.Add(Format(GetLangStr('NotKillProcess'), [TaskName])); - LogMemo.Lines.Add(Format(GetLangStr('SeDebugPrivilege'), [TaskName])); - if ProcessTerminate(Global_IMProcessPID) then - begin - LogMemo.Lines.Add(Format(GetLangStr('SeDebugPrivilegeDone'), [TaskName])); - Result := True; - end - else - begin - LogMemo.Lines.Add(Format(GetLangStr('NotKillSeDebugPrivilege'), [TaskName])); - Result := False; - end; - end; - end; - end - else - begin - LogMemo.Lines.Add(Format(GetLangStr('InMemoryNotFoundProcess'), [TaskName])); - Result := True; - end; - end - else - begin - LogMemo.Lines.Add(Format(GetLangStr('InMemoryNotFoundProcess'), [TaskName])); - Result := True; - end; -end; - -{ Прием управляющих команд от плагина по событию WM_COPYDATA } -procedure TMainForm.OnControlReq(var Msg : TWMCopyData); -var - ControlStr, EncryptControlStr: String; - copyDataType : TCopyDataType; - GotChars: Integer; -begin - copyDataType := TCopyDataType(Msg.CopyDataStruct.dwData); - if copyDataType = cdtString then - begin - GotChars := Msg.CopyDataStruct.cbData div SizeOf(Char); - SetLength(EncryptControlStr, GotChars); - Move(Msg.CopyDataStruct.lpData^, PChar(EncryptControlStr)^, GotChars * sizeof(Char)); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Процедура OnControlReq: Получено шифрованное управляющее сообщение: ' + EncryptControlStr, 1); - ControlStr := DecryptStr(EncryptControlStr); - if EnableDebug then WriteInLog(ProfilePath, FormatDateTime('dd.mm.yy hh:mm:ss', Now) + ' - Процедура OnControlReq: Управляющее сообщение расшифровано: ' + ControlStr, 1); - //Msg.Result := 2006; - if ControlStr = 'Russian' then - begin - FLanguage := 'Russian'; - CoreLanguageChanged; - end - else if ControlStr = 'English' then - begin - FLanguage := 'English'; - CoreLanguageChanged; - end; - // 001 - Перечитать настройки из файла HistoryToDB.ini - if ControlStr = '001' then - begin - // Читаем настройки - LoadINI(ProfilePath, true); - end; - // 004 - Режим Анти-босс - if ControlStr = '0040' then // Показать формы - AntiBoss(False); - if ControlStr = '0041' then // Скрыть формы - AntiBoss(True); - // 003 - Выход из программы - {if (ControlStr = '003') and (ButtonUpdate.Enabled) then - Close;} - // 009 - Экстренный выход из программы - if ControlStr = '009' then - begin - IMDownloader1.BreakDownload; - Close; - end; - end; -end; - -{ Поддержка режима Анти-босс } -procedure TMainForm.AntiBoss(HideAllForms: Boolean); -begin - if not Assigned(MainForm) then Exit; - if HideAllForms then - begin - ShowWindow(MainForm.Handle, SW_HIDE); - MainForm.Hide; - //ShowWindow(AboutForm.Handle, SW_HIDE); - //AboutForm.Hide; - end - else - begin - // Если форма была ранее открыта, то показываем её - if Global_MainForm_Showing then - begin - ShowWindow(MainForm.Handle, SW_SHOW); - MainForm.Show; - // Если форма свернута, то разворачиваем её поверх всех окон - if MainForm.WindowState = wsMinimized then - begin - MainForm.FormStyle := fsStayOnTop; - MainForm.WindowState := wsNormal; - MainForm.FormStyle := fsNormal; - end; - if MainForm.WindowState = wsNormal then - begin - MainForm.FormStyle := fsStayOnTop; - MainForm.FormStyle := fsNormal; - end; - end; - {if Global_AboutForm_Showing then - begin - ShowWindow(AboutForm.Handle, SW_SHOW); - AboutForm.Show; - end;} - end; -end; - -procedure TMainForm.RunIMClient(IMClientName: String; IMProcessArray: TProcessInfoArray); -var - i: Integer; -begin - for i := Low(IMProcessArray) to High(IMProcessArray) do - begin - if LowerCase(IMClientName) = LowerCase(IMProcessArray[i].ProcessName) then - begin - if FileExists(IMProcessArray[i].ProcessPath) then - begin - LogMemo.Lines.Add(Format(GetLangStr('StartProgram'), [IMProcessArray[i].ProcessPath + IMProcessArray[i].ProcessParamCmd])); - ShellExecute(0, 'open', PWideChar(IMProcessArray[i].ProcessPath), PWideChar(' '+IMProcessArray[i].ProcessParamCmd), nil, SW_SHOWNORMAL); - Sleep(500); - if IsProcessRun(IMProcessArray[i].ProcessName) then - LogMemo.Lines.Add(Format(GetLangStr('StartProgramDone'), [IMProcessArray[i].ProcessPath])) - else - LogMemo.Lines.Add(Format(GetLangStr('StartProgramFail'), [IMProcessArray[i].ProcessPath])); - end; - end; - end; -end; - -procedure TMainForm.RunAllIMClients; -begin - if IMClientType = 'QIP' then - RunIMClient('qip.exe', QIPProcessInfo); - if (IMClientType = 'Miranda') or (IMClientType = 'MirandaNG') then - {$IfDef WIN32} - RunIMClient('miranda32.exe', MirandaProcessInfo); - {$Else} - RunIMClient('miranda64.exe', MirandaProcessInfo); - {$EndIf} - if IMClientType = 'RnQ' then - begin - RunIMClient('R&Q.exe', RnQProcessInfo); - RunIMClient('rnq.exe', RnQProcessInfo); - end; - if IMClientType = 'Skype' then - begin - if SystemLang = 'Russian' then - begin - if FileExists(PluginPath + 'installupdater-ru.cmd') then - ShellExecute(0, 'open', PWideChar(PluginPath + 'installupdater-ru.cmd'), nil, nil, SW_HIDE) - else - RunIMClient('skype.exe', SkypeProcessInfo); - end - else - begin - if FileExists(PluginPath + 'installupdater-en.cmd') then - ShellExecute(0, 'open', PWideChar(PluginPath + 'installupdater-en.cmd'), nil, nil, SW_HIDE) - else - RunIMClient('skype.exe', SkypeProcessInfo); - end; - end; - // Запуск Dropbox - {if not IsProcessRun('Dropbox.exe') then - RunIMClient('Dropbox.exe', DropboxProcessInfo);} -end; - -function CopyProgressFunc(TotalFileSize: Int64; TotalBytesTransferred: Int64; - StreamSize: Int64; StreamBytesTransferred: Int64; dwStreamNumber: DWORD; - dwCallbackReason: DWORD; hSourceFile: THandle; hDestinationFile: THandle; - lpData: Pointer): DWORD; stdcall; -begin - MainForm.ProgressBarDownloads.Position := 100 * TotalBytesTransferred div TotalFileSize; - Application.ProcessMessages; - CopyProgressFunc := PROGRESS_CONTINUE; -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/NTNative.pas b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/NTNative.pas deleted file mode 100644 index 0f6a2bd831..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/NTNative.pas +++ /dev/null @@ -1,210 +0,0 @@ -unit NTNative; - -interface - -uses Classes, SysUtils, Windows; - -type - Pointer32 = ULONG; - THANDLE32 = ULONG; - - _UNICODE_STRING = record - Length: Word; - MaximumLength: Word; - Buffer: LPWSTR; - end; - UNICODE_STRING = _UNICODE_STRING; - - //http://msdn.microsoft.com/en-us/library/windows/desktop/ms684280%28v=vs.85%29.aspx - PROCESS_BASIC_INFORMATION = record - Reserved1 : Pointer; - PebBaseAddress: Pointer; - Reserved2: array [0..1] of Pointer; - UniqueProcessId: ULONG_PTR; - Reserved3: Pointer; - end; - - - //http://undocumented.ntinternals.net/UserMode/Structures/RTL_DRIVE_LETTER_CURDIR.html - _RTL_DRIVE_LETTER_CURDIR = record - Flags: Word; - Length: Word; - TimeStamp: ULONG; - DosPath: UNICODE_STRING; - end; - RTL_DRIVE_LETTER_CURDIR = _RTL_DRIVE_LETTER_CURDIR; - - _CURDIR = record - DosPath: UNICODE_STRING; - Handle: THANDLE; - end; - CURDIR = _CURDIR; - - //http://undocumented.ntinternals.net/UserMode/Structures/RTL_USER_PROCESS_PARAMETERS.html - _RTL_USER_PROCESS_PARAMETERS = record - MaximumLength: ULONG; - Length: ULONG; - Flags: ULONG; - DebugFlags: ULONG; - ConsoleHandle: THANDLE; - ConsoleFlags: ULONG; - StandardInput: THANDLE; - StandardOutput: THANDLE; - StandardError: THANDLE; - CurrentDirectory: CURDIR; - DllPath: UNICODE_STRING; - ImagePathName: UNICODE_STRING; - CommandLine: UNICODE_STRING; - Environment: Pointer; - StartingX: ULONG; - StartingY: ULONG; - CountX: ULONG; - CountY: ULONG; - CountCharsX: ULONG; - CountCharsY: ULONG; - FillAttribute: ULONG; - WindowFlags: ULONG; - ShowWindowFlags: ULONG; - WindowTitle: UNICODE_STRING; - DesktopInfo: UNICODE_STRING; - ShellInfo: UNICODE_STRING; - RuntimeData: UNICODE_STRING; - CurrentDirectories: array[0..31] of RTL_DRIVE_LETTER_CURDIR; - end; - RTL_USER_PROCESS_PARAMETERS = _RTL_USER_PROCESS_PARAMETERS; - PRTL_USER_PROCESS_PARAMETERS = ^RTL_USER_PROCESS_PARAMETERS; - - _PEB = record - Reserved1 : array [0..1] of Byte; - BeingDebugged : Byte; - Reserved2 : Byte; - Reserved3 : array [0..1] of Pointer; - Ldr : Pointer; - ProcessParameters : PRTL_USER_PROCESS_PARAMETERS; - Reserved4 : array [0..102] of Byte; - Reserved5 : array [0..51] of Pointer; - PostProcessInitRoutine : Pointer; - Reserved6 : array [0..127] of byte; - Reserved7 : Pointer; - SessionId : ULONG; - end; - PEB=_PEB; - -{$IFDEF CPUX64} - _UNICODE_STRING32 = record - Length: Word; - MaximumLength: Word; - Buffer: Pointer32; - end; - UNICODE_STRING32 = _UNICODE_STRING32; - - _RTL_DRIVE_LETTER_CURDIR32 = record - Flags: Word; - Length: Word; - TimeStamp: ULONG; - DosPath: UNICODE_STRING32; - end; - RTL_DRIVE_LETTER_CURDIR32 = _RTL_DRIVE_LETTER_CURDIR32; - - _CURDIR32 = record - DosPath: UNICODE_STRING32; - Handle: THANDLE32; - end; - CURDIR32 = _CURDIR32; - - _RTL_USER_PROCESS_PARAMETERS32 = record - MaximumLength: ULONG; - Length: ULONG; - Flags: ULONG; - DebugFlags: ULONG; - ConsoleHandle: THANDLE32; - ConsoleFlags: ULONG; - StandardInput: THANDLE32; - StandardOutput: THANDLE32; - StandardError: THANDLE32; - CurrentDirectory: CURDIR32; - DllPath: UNICODE_STRING32; - ImagePathName: UNICODE_STRING32; - CommandLine: UNICODE_STRING32; - Environment: Pointer32; - StartingX: ULONG; - StartingY: ULONG; - CountX: ULONG; - CountY: ULONG; - CountCharsX: ULONG; - CountCharsY: ULONG; - FillAttribute: ULONG; - WindowFlags: ULONG; - ShowWindowFlags: ULONG; - WindowTitle: UNICODE_STRING32; - DesktopInfo: UNICODE_STRING32; - ShellInfo: UNICODE_STRING32; - RuntimeData: UNICODE_STRING32; - CurrentDirectories: array[0..31] of RTL_DRIVE_LETTER_CURDIR32; - end; - RTL_USER_PROCESS_PARAMETERS32 = _RTL_USER_PROCESS_PARAMETERS32; - PRTL_USER_PROCESS_PARAMETERS32 = ^RTL_USER_PROCESS_PARAMETERS32; - - _PEB32 = record - Reserved1 : array [0..1] of Byte; - BeingDebugged : Byte; - Reserved2 : Byte; - Reserved3 : array [0..1] of Pointer32; - Ldr : Pointer32; - ProcessParameters : Pointer32;//PRTL_USER_PROCESS_PARAMETERS; - Reserved4 : array [0..102] of Byte; - Reserved5 : array [0..51] of Pointer32; - PostProcessInitRoutine : Pointer32; - Reserved6 : array [0..127] of byte; - Reserved7 : Pointer32; - SessionId : ULONG; - end; - PEB32=_PEB32; -{$ENDIF} - -type - TIsWow64Process = function(Handle:THandle; var IsWow64 : BOOL) : BOOL; stdcall; -var - _IsWow64Process : TIsWow64Process; - -function NtQueryInformationProcess(ProcessHandle : THandle; ProcessInformationClass : DWORD; ProcessInformation : Pointer; ProcessInformationLength : ULONG; ReturnLength : PULONG ): LongInt; stdcall; external 'ntdll.dll'; -function NtQueryVirtualMemory(ProcessHandle : THandle; BaseAddress : Pointer; MemoryInformationClass : DWORD; MemoryInformation : Pointer; MemoryInformationLength : ULONG; ReturnLength : PULONG ): LongInt; stdcall; external 'ntdll.dll'; -function ProcessIsX64(hProcess: DWORD): Boolean; -procedure Init_IsWow64Process; - -implementation - -procedure Init_IsWow64Process; -var - hKernel32 : Integer; -begin - hKernel32 := LoadLibrary(kernel32); - if (hKernel32 = 0) then RaiseLastOSError; - try - _IsWow64Process := GetProcAddress(hkernel32, 'IsWow64Process'); - finally - FreeLibrary(hKernel32); - end; -end; - -function ProcessIsX64(hProcess: DWORD): Boolean; -var - IsWow64: BOOL; -begin - Result := False; - {$IFNDEF CPUX64} - Exit; - {$ENDIF} - if not Assigned(_IsWow64Process) then - Init_IsWow64Process; - - if Assigned(_IsWow64Process) then - begin - if (_IsWow64Process(hProcess, IsWow64)) then - Result := not IsWow64 - else - RaiseLastOSError; - end; -end; - -end. diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/jedi.inc b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/jedi.inc deleted file mode 100644 index c31a08c04a..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/jedi.inc +++ /dev/null @@ -1,1430 +0,0 @@ -{$IFNDEF JEDI_INC} -{$DEFINE JEDI_INC} - -{**************************************************************************************************} -{ } -{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License");} -{ you may not use this file except in compliance with the License. You may obtain a copy of the } -{ License at http://www.mozilla.org/MPL/ } -{ } -{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } -{ ANY KIND, either express or implied. See the License for the specific language governing rights } -{ and limitations under the License. } -{ } -{ The Original Code is: jedi.inc. } -{ The Initial Developer of the Original Code is Project JEDI http://www.delphi-jedi.org } -{ } -{ Alternatively, the contents of this file may be used under the terms of the GNU Lesser General } -{ Public License (the "LGPL License"), in which case the provisions of the LGPL License are } -{ applicable instead of those above. If you wish to allow use of your version of this file only } -{ under the terms of the LGPL License and not to allow others to use your version of this file } -{ under the MPL, indicate your decision by deleting the provisions above and replace them with } -{ the notice and other provisions required by the LGPL License. If you do not delete the } -{ provisions above, a recipient may use your version of this file under either the MPL or the } -{ LGPL License. } -{ } -{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html } -{ } -{**************************************************************************************************} -{ } -{ This file defines various generic compiler directives used in different libraries, e.g. in the } -{ JEDI Code Library (JCL) and JEDI Visual Component Library Library (JVCL). The directives in } -{ this file are of generic nature and consist mostly of mappings from the VERXXX directives } -{ defined by Delphi, C++Builder and FPC to friendly names such as DELPHI5 and } -{ SUPPORTS_WIDESTRING. These friendly names are subsequently used in the libraries to test for } -{ compiler versions and/or whether the compiler supports certain features (such as widestrings or } -{ 64 bit integers. The libraries provide an additional, library specific, include file. For the } -{ JCL e.g. this is jcl.inc. These files should be included in source files instead of this file } -{ (which is pulled in automatically). } -{ } -{**************************************************************************************************} -{ } -{ Last modified: $Date:: 2012-09-04 16:01:38 +0200 (Гєt, 04 9 2012) $ } -{ Revision: $Rev:: 161 $ } -{ Author: $Author:: outchy $ } -{ } -{**************************************************************************************************} - -(* - -- Development environment directives - - This file defines two directives to indicate which development environment the - library is being compiled with. Currently this can either be Delphi, Kylix, - C++Builder or FPC. - - Directive Description - ------------------------------------------------------------------------------ - DELPHI Defined if compiled with Delphi - KYLIX Defined if compiled with Kylix - DELPHICOMPILER Defined if compiled with Delphi or Kylix/Delphi - BCB Defined if compiled with C++Builder - CPPBUILDER Defined if compiled with C++Builder (alias for BCB) - BCBCOMPILER Defined if compiled with C++Builder or Kylix/C++ - DELPHILANGUAGE Defined if compiled with Delphi, Kylix or C++Builder - BORLAND Defined if compiled with Delphi, Kylix or C++Builder - FPC Defined if compiled with FPC - -- Platform Directives - - Platform directives are not all explicitly defined in this file, some are - defined by the compiler itself. They are listed here only for completeness. - - Directive Description - ------------------------------------------------------------------------------ - WIN32 Defined when target platform is 32 bit Windows - WIN64 Defined when target platform is 64 bit Windows - MSWINDOWS Defined when target platform is 32 bit Windows - LINUX Defined when target platform is Linux - UNIX Defined when target platform is Unix-like (including Linux) - CLR Defined when target platform is .NET - -- Architecture directives. These are auto-defined by FPC - CPU32 and CPU64 are mostly for generic pointer size dependant differences rather - than for a specific architecture. - - CPU386 Defined when target platform is native x86 (win32) - CPUx86_64 Defined when target platform is native x86_64 (win64) - CPU32 Defined when target is 32-bit - CPU64 Defined when target is 64-bit - CPUASM Defined when target assembler is available - -- Visual library Directives - - The following directives indicate for a visual library. In a Delphi/BCB - (Win32) application you need to define the VisualCLX symbol in the project - options, if you want to use the VisualCLX library. Alternatively you can use - the IDE expert, which is distributed with the JCL to do this automatically. - - Directive Description - ------------------------------------------------------------------------------ - VCL Defined for Delphi/BCB (Win32) exactly if VisualCLX is not defined - VisualCLX Defined for Kylix; needs to be defined for Delphi/BCB to - use JCL with VisualCLX applications. - - -- Other cross-platform related defines - - These symbols are intended to help in writing portable code. - - Directive Description - ------------------------------------------------------------------------------ - PUREPASCAL Code is machine-independent (as opposed to assembler code) - Win32API Code is specific for the Win32 API; - use instead of "{$IFNDEF CLR} {$IFDEF MSWINDOWS}" constructs - - -- Delphi Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is Delphi (ie DELPHI is defined). - - Directive Description - ------------------------------------------------------------------------------ - DELPHI1 Defined when compiling with Delphi 1 (Codename WASABI/MANGO) - DELPHI2 Defined when compiling with Delphi 2 (Codename POLARIS) - DELPHI3 Defined when compiling with Delphi 3 (Codename IVORY) - DELPHI4 Defined when compiling with Delphi 4 (Codename ALLEGRO) - DELPHI5 Defined when compiling with Delphi 5 (Codename ARGUS) - DELPHI6 Defined when compiling with Delphi 6 (Codename ILLIAD) - DELPHI7 Defined when compiling with Delphi 7 (Codename AURORA) - DELPHI8 Defined when compiling with Delphi 8 (Codename OCTANE) - DELPHI2005 Defined when compiling with Delphi 2005 (Codename DIAMONDBACK) - DELPHI9 Alias for DELPHI2005 - DELPHI10 Defined when compiling with Delphi 2006 (Codename DEXTER) - DELPHI2006 Alias for DELPHI10 - DELPHI11 Defined when compiling with Delphi 2007 for Win32 (Codename SPACELY) - DELPHI2007 Alias for DELPHI11 - DELPHI12 Defined when compiling with Delphi 2009 for Win32 (Codename TIBURON) - DELPHI2009 Alias for DELPHI12 - DELPHI14 Defined when compiling with Delphi 2010 for Win32 (Codename WEAVER) - DELPHI2010 Alias for DELPHI14 - DELPHI15 Defined when compiling with Delphi XE for Win32 (Codename FULCRUM) - DELPHIXE Alias for DELPHI15 - DELPHI16 Defined when compiling with Delphi XE2 for Win32 (Codename PULSAR) - DELPHIXE2 Alias for DELPHI16 - DELPHI17 Defined when compiling with Delphi XE3 for Win32 (Codename WATERDRAGON) - DELPHIXE3 Alias for DELPHI17 - DELPHI1_UP Defined when compiling with Delphi 1 or higher - DELPHI2_UP Defined when compiling with Delphi 2 or higher - DELPHI3_UP Defined when compiling with Delphi 3 or higher - DELPHI4_UP Defined when compiling with Delphi 4 or higher - DELPHI5_UP Defined when compiling with Delphi 5 or higher - DELPHI6_UP Defined when compiling with Delphi 6 or higher - DELPHI7_UP Defined when compiling with Delphi 7 or higher - DELPHI8_UP Defined when compiling with Delphi 8 or higher - DELPHI2005_UP Defined when compiling with Delphi 2005 or higher - DELPHI9_UP Alias for DELPHI2005_UP - DELPHI10_UP Defined when compiling with Delphi 2006 or higher - DELPHI2006_UP Alias for DELPHI10_UP - DELPHI11_UP Defined when compiling with Delphi 2007 for Win32 or higher - DELPHI2007_UP Alias for DELPHI11_UP - DELPHI12_UP Defined when compiling with Delphi 2009 for Win32 or higher - DELPHI2009_UP Alias for DELPHI12_UP - DELPHI14_UP Defined when compiling with Delphi 2010 for Win32 or higher - DELPHI2010_UP Alias for DELPHI14_UP - DELPHI15_UP Defined when compiling with Delphi XE for Win32 or higher - DELPHIXE_UP Alias for DELPHI15_UP - DELPHI16_UP Defined when compiling with Delphi XE2 for Win32 or higher - DELPHIXE2_UP Alias for DELPHI16_UP - DELPHI17_UP Defined when compiling with Delphi XE3 for Win32 or higher - DELPHIXE3_UP Alias for DELPHI17_UP - - -- Kylix Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is Kylix (ie KYLIX is defined). - - Directive Description - ------------------------------------------------------------------------------ - KYLIX1 Defined when compiling with Kylix 1 - KYLIX2 Defined when compiling with Kylix 2 - KYLIX3 Defined when compiling with Kylix 3 (Codename CORTEZ) - KYLIX1_UP Defined when compiling with Kylix 1 or higher - KYLIX2_UP Defined when compiling with Kylix 2 or higher - KYLIX3_UP Defined when compiling with Kylix 3 or higher - - -- Delphi Compiler Versions (Delphi / Kylix, not in BCB mode) - - Directive Description - ------------------------------------------------------------------------------ - DELPHICOMPILER1 Defined when compiling with Delphi 1 - DELPHICOMPILER2 Defined when compiling with Delphi 2 - DELPHICOMPILER3 Defined when compiling with Delphi 3 - DELPHICOMPILER4 Defined when compiling with Delphi 4 - DELPHICOMPILER5 Defined when compiling with Delphi 5 - DELPHICOMPILER6 Defined when compiling with Delphi 6 or Kylix 1, 2 or 3 - DELPHICOMPILER7 Defined when compiling with Delphi 7 - DELPHICOMPILER8 Defined when compiling with Delphi 8 - DELPHICOMPILER9 Defined when compiling with Delphi 2005 - DELPHICOMPILER10 Defined when compiling with Delphi Personality of BDS 4.0 - DELPHICOMPILER11 Defined when compiling with Delphi 2007 for Win32 - DELPHICOMPILER12 Defined when compiling with Delphi Personality of BDS 6.0 - DELPHICOMPILER14 Defined when compiling with Delphi Personality of BDS 7.0 - DELPHICOMPILER15 Defined when compiling with Delphi Personality of BDS 8.0 - DELPHICOMPILER16 Defined when compiling with Delphi Personality of BDS 9.0 - DELPHICOMPILER17 Defined when compiling with Delphi Personality of BDS 10.0 - DELPHICOMPILER1_UP Defined when compiling with Delphi 1 or higher - DELPHICOMPILER2_UP Defined when compiling with Delphi 2 or higher - DELPHICOMPILER3_UP Defined when compiling with Delphi 3 or higher - DELPHICOMPILER4_UP Defined when compiling with Delphi 4 or higher - DELPHICOMPILER5_UP Defined when compiling with Delphi 5 or higher - DELPHICOMPILER6_UP Defined when compiling with Delphi 6 or Kylix 1, 2 or 3 or higher - DELPHICOMPILER7_UP Defined when compiling with Delphi 7 or higher - DELPHICOMPILER8_UP Defined when compiling with Delphi 8 or higher - DELPHICOMPILER9_UP Defined when compiling with Delphi 2005 - DELPHICOMPILER10_UP Defined when compiling with Delphi 2006 or higher - DELPHICOMPILER11_UP Defined when compiling with Delphi 2007 for Win32 or higher - DELPHICOMPILER12_UP Defined when compiling with Delphi 2009 for Win32 or higher - DELPHICOMPILER14_UP Defined when compiling with Delphi 2010 for Win32 or higher - DELPHICOMPILER15_UP Defined when compiling with Delphi XE for Win32 or higher - DELPHICOMPILER16_UP Defined when compiling with Delphi XE2 for Win32 or higher - DELPHICOMPILER17_UP Defined when compiling with Delphi XE3 for Win32 or higher - - -- C++Builder Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is C++Builder (ie BCB is defined). - - Directive Description - ------------------------------------------------------------------------------ - BCB1 Defined when compiling with C++Builder 1 - BCB3 Defined when compiling with C++Builder 3 - BCB4 Defined when compiling with C++Builder 4 - BCB5 Defined when compiling with C++Builder 5 (Codename RAMPAGE) - BCB6 Defined when compiling with C++Builder 6 (Codename RIPTIDE) - BCB10 Defined when compiling with C++Builder Personality of BDS 4.0 (also known as C++Builder 2006) (Codename DEXTER) - BCB11 Defined when compiling with C++Builder Personality of RAD Studio 2007 (also known as C++Builder 2007) (Codename COGSWELL) - BCB12 Defined when compiling with C++Builder Personality of RAD Studio 2009 (also known as C++Builder 2009) (Codename TIBURON) - BCB14 Defined when compiling with C++Builder Personality of RAD Studio 2010 (also known as C++Builder 2010) (Codename WEAVER) - BCB15 Defined when compiling with C++Builder Personality of RAD Studio XE (also known as C++Builder XE) (Codename FULCRUM) - BCB16 Defined when compiling with C++Builder Personality of RAD Studio XE2 (also known as C++Builder XE2) (Codename PULSAR) - BCB17 Defined when compiling with C++Builder Personality of RAD Studio XE3 (also known as C++Builder XE3) (Codename WATERDRAGON) - BCB1_UP Defined when compiling with C++Builder 1 or higher - BCB3_UP Defined when compiling with C++Builder 3 or higher - BCB4_UP Defined when compiling with C++Builder 4 or higher - BCB5_UP Defined when compiling with C++Builder 5 or higher - BCB6_UP Defined when compiling with C++Builder 6 or higher - BCB10_UP Defined when compiling with C++Builder Personality of BDS 4.0 or higher - BCB11_UP Defined when compiling with C++Builder Personality of RAD Studio 2007 or higher - BCB12_UP Defined when compiling with C++Builder Personality of RAD Studio 2009 or higher - BCB14_UP Defined when compiling with C++Builder Personality of RAD Studio 2010 or higher - BCB15_UP Defined when compiling with C++Builder Personality of RAD Studio XE or higher - BCB16_UP Defined when compiling with C++Builder Personality of RAD Studio XE2 or higher - BCB17_UP Defined when compiling with C++Builder Personality of RAD Studio XE3 or higher - - -- RAD Studio / Borland Developer Studio Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated IDE. These directives are only defined if - the IDE is Borland Developer Studio Version 2 or above. - - Note: Borland Developer Studio 2006 is marketed as Delphi 2006 or C++Builder 2006, - but those provide only different labels for identical content. - - Directive Description - ------------------------------------------------------------------------------ - BDS Defined when compiling with BDS version of dcc32.exe (Codename SIDEWINDER) - BDS2 Defined when compiling with BDS 2.0 (Delphi 8) (Codename OCTANE) - BDS3 Defined when compiling with BDS 3.0 (Delphi 2005) (Codename DIAMONDBACK) - BDS4 Defined when compiling with BDS 4.0 (Borland Developer Studio 2006) (Codename DEXTER) - BDS5 Defined when compiling with BDS 5.0 (CodeGear RAD Studio 2007) (Codename HIGHLANDER) - BDS6 Defined when compiling with BDS 6.0 (CodeGear RAD Studio 2009) (Codename TIBURON) - BDS7 Defined when compiling with BDS 7.0 (Embarcadero RAD Studio 2010) (Codename WEAVER) - BDS8 Defined when compiling with BDS 8.0 (Embarcadero RAD Studio XE) (Codename FULCRUM) - BDS9 Defined when compiling with BDS 9.0 (Embarcadero RAD Studio XE2) (Codename PULSAR) - BDS10 Defined when compiling with BDS 10.0 (Embarcadero RAD Studio XE3) (Codename WATERDRAGON) - BDS2_UP Defined when compiling with BDS 2.0 or higher - BDS3_UP Defined when compiling with BDS 3.0 or higher - BDS4_UP Defined when compiling with BDS 4.0 or higher - BDS5_UP Defined when compiling with BDS 5.0 or higher - BDS6_UP Defined when compiling with BDS 6.0 or higher - BDS7_UP Defined when compiling with BDS 7.0 or higher - BDS8_UP Defined when compiling with BDS 8.0 or higher - BDS9_UP Defined when compiling with BDS 9.0 or higher - BDS10_UP Defined when compiling with BDS 10.0 or higher - -- Compiler Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. Unlike the DELPHI_X and BCB_X - directives, these directives are indepedent of the development environment. - That is, they are defined regardless of whether compilation takes place using - Delphi or C++Builder. - - Directive Description - ------------------------------------------------------------------------------ - COMPILER1 Defined when compiling with Delphi 1 - COMPILER2 Defined when compiling with Delphi 2 or C++Builder 1 - COMPILER3 Defined when compiling with Delphi 3 - COMPILER35 Defined when compiling with C++Builder 3 - COMPILER4 Defined when compiling with Delphi 4 or C++Builder 4 - COMPILER5 Defined when compiling with Delphi 5 or C++Builder 5 - COMPILER6 Defined when compiling with Delphi 6 or C++Builder 6 - COMPILER7 Defined when compiling with Delphi 7 - COMPILER8 Defined when compiling with Delphi 8 - COMPILER9 Defined when compiling with Delphi 9 - COMPILER10 Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 - COMPILER11 Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 - COMPILER12 Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 - COMPILER14 Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 - COMPILER15 Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 - COMPILER16 Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 - COMPILER17 Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 - COMPILER1_UP Defined when compiling with Delphi 1 or higher - COMPILER2_UP Defined when compiling with Delphi 2 or C++Builder 1 or higher - COMPILER3_UP Defined when compiling with Delphi 3 or higher - COMPILER35_UP Defined when compiling with C++Builder 3 or higher - COMPILER4_UP Defined when compiling with Delphi 4 or C++Builder 4 or higher - COMPILER5_UP Defined when compiling with Delphi 5 or C++Builder 5 or higher - COMPILER6_UP Defined when compiling with Delphi 6 or C++Builder 6 or higher - COMPILER7_UP Defined when compiling with Delphi 7 - COMPILER8_UP Defined when compiling with Delphi 8 - COMPILER9_UP Defined when compiling with Delphi Personalities of BDS 3.0 - COMPILER10_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 or higher - COMPILER11_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 or higher - COMPILER12_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 or higher - COMPILER14_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 or higher - COMPILER15_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 or higher - COMPILER16_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 or higher - COMPILER17_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 or higher - - -- RTL Versions - - Use e.g. following to determine the exact RTL version since version 14.0: - {$IFDEF CONDITIONALEXPRESSIONS} - {$IF Declared(RTLVersion) and (RTLVersion >= 14.2)} - // code for Delphi 6.02 or higher, Kylix 2 or higher, C++Builder 6 or higher - ... - {$IFEND} - {$ENDIF} - - Directive Description - ------------------------------------------------------------------------------ - RTL80_UP Defined when compiling with Delphi 1 or higher - RTL90_UP Defined when compiling with Delphi 2 or higher - RTL93_UP Defined when compiling with C++Builder 1 or higher - RTL100_UP Defined when compiling with Delphi 3 or higher - RTL110_UP Defined when compiling with C++Builder 3 or higher - RTL120_UP Defined when compiling with Delphi 4 or higher - RTL125_UP Defined when compiling with C++Builder 4 or higher - RTL130_UP Defined when compiling with Delphi 5 or C++Builder 5 or higher - RTL140_UP Defined when compiling with Delphi 6, Kylix 1, 2 or 3 or C++Builder 6 or higher - RTL150_UP Defined when compiling with Delphi 7 or higher - RTL160_UP Defined when compiling with Delphi 8 or higher - RTL170_UP Defined when compiling with Delphi Personalities of BDS 3.0 or higher - RTL180_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 or higher - RTL185_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 or higher - RTL190_UP Defined when compiling with Delphi.NET of BDS 5.0 or higher - RTL200_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 or higher - RTL210_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 or higher - RTL220_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 or higher - RTL230_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 or higher - RTL240_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 or higher - - -- CLR Versions - - Directive Description - ------------------------------------------------------------------------------ - CLR Defined when compiling for .NET - CLR10 Defined when compiling for .NET 1.0 (may be overriden by FORCE_CLR10) - CLR10_UP Defined when compiling for .NET 1.0 or higher - CLR11 Defined when compiling for .NET 1.1 (may be overriden by FORCE_CLR11) - CLR11_UP Defined when compiling for .NET 1.1 or higher - CLR20 Defined when compiling for .NET 2.0 (may be overriden by FORCE_CLR20) - CLR20_UP Defined when compiling for .NET 2.0 or higher - - -- Feature Directives - - The features directives are used to test if the compiler supports specific - features, such as method overloading, and adjust the sources accordingly. Use - of these directives is preferred over the use of the DELPHI and COMPILER - directives. - - Directive Description - ------------------------------------------------------------------------------ - SUPPORTS_CONSTPARAMS Compiler supports const parameters (D1+) - SUPPORTS_SINGLE Compiler supports the Single type (D1+) - SUPPORTS_DOUBLE Compiler supports the Double type (D1+) - SUPPORTS_EXTENDED Compiler supports the Extended type (D1+) - SUPPORTS_CURRENCY Compiler supports the Currency type (D2+) - SUPPORTS_THREADVAR Compiler supports threadvar declarations (D2+) - SUPPORTS_OUTPARAMS Compiler supports out parameters (D3+) - SUPPORTS_VARIANT Compiler supports variant (D2+) - SUPPORTS_WIDECHAR Compiler supports the WideChar type (D2+) - SUPPORTS_WIDESTRING Compiler supports the WideString type (D3+/BCB3+) - SUPPORTS_INTERFACE Compiler supports interfaces (D3+/BCB3+) - SUPPORTS_DISPINTERFACE Compiler supports dispatch interfaces (D3+/BCB3+) - SUPPORTS_DISPID Compiler supports dispatch ids (D3+/BCB3+/FPC) - SUPPORTS_EXTSYM Compiler supports the $EXTERNALSYM directive (D4+/BCB3+) - SUPPORTS_NODEFINE Compiler supports the $NODEFINE directive (D4+/BCB3+) - SUPPORTS_LONGWORD Compiler supports the LongWord type (unsigned 32 bit) (D4+/BCB4+) - SUPPORTS_INT64 Compiler supports the Int64 type (D4+/BCB4+) - SUPPORTS_UINT64 Compiler supports the UInt64 type (D XE+ ?) - SUPPORTS_DYNAMICARRAYS Compiler supports dynamic arrays (D4+/BCB4+) - SUPPORTS_DEFAULTPARAMS Compiler supports default parameters (D4+/BCB4+) - SUPPORTS_OVERLOAD Compiler supports overloading (D4+/BCB4+) - SUPPORTS_IMPLEMENTS Compiler supports implements (D4+/BCB4+) - SUPPORTS_DEPRECATED Compiler supports the deprecated directive (D6+/BCB6+) - SUPPORTS_PLATFORM Compiler supports the platform directive (D6+/BCB6+) - SUPPORTS_LIBRARY Compiler supports the library directive (D6+/BCB6+/FPC) - SUPPORTS_LOCAL Compiler supports the local directive (D6+/BCB6+) - SUPPORTS_SETPEFLAGS Compiler supports the SetPEFlags directive (D6+/BCB6+) - SUPPORTS_EXPERIMENTAL_WARNINGS Compiler supports the WARN SYMBOL_EXPERIMENTAL and WARN UNIT_EXPERIMENTAL directives (D6+/BCB6+) - SUPPORTS_INLINE Compiler supports the inline directive (D9+/FPC) - SUPPORTS_FOR_IN Compiler supports for in loops (D9+) - SUPPORTS_NESTED_CONSTANTS Compiler supports nested constants (D9+) - SUPPORTS_NESTED_TYPES Compiler supports nested types (D9+) - SUPPORTS_REGION Compiler supports the REGION and ENDREGION directives (D9+) - SUPPORTS_ENHANCED_RECORDS Compiler supports class [operator|function|procedure] for record types (D9.NET, D10+) - SUPPORTS_CLASS_FIELDS Compiler supports class fields (D9.NET, D10+) - SUPPORTS_CLASS_HELPERS Compiler supports class helpers (D9.NET, D10+) - SUPPORTS_CLASS_OPERATORS Compiler supports class operators (D9.NET, D10+) - SUPPORTS_CLASS_CTORDTORS Compiler supports class contructors/destructors (D14+) - SUPPORTS_STRICT Compiler supports strict keyword (D9.NET, D10+) - SUPPORTS_STATIC Compiler supports static keyword (D9.NET, D10+) - SUPPORTS_FINAL Compiler supports final keyword (D9.NET, D10+) - SUPPORTS_METHODINFO Compiler supports the METHODINFO directives (D10+) - SUPPORTS_GENERICS Compiler supports generic implementations (D11.NET, D12+) - SUPPORTS_DEPRECATED_DETAILS Compiler supports additional text for the deprecated directive (D11.NET, D12+) - ACCEPT_DEPRECATED Compiler supports or ignores the deprecated directive (D6+/BCB6+/FPC) - ACCEPT_PLATFORM Compiler supports or ignores the platform directive (D6+/BCB6+/FPC) - ACCEPT_LIBRARY Compiler supports or ignores the library directive (D6+/BCB6+) - SUPPORTS_CUSTOMVARIANTS Compiler supports custom variants (D6+/BCB6+) - SUPPORTS_VARARGS Compiler supports varargs (D6+/BCB6+) - SUPPORTS_ENUMVALUE Compiler supports assigning ordinalities to values of enums (D6+/BCB6+) - SUPPORTS_DEPRECATED_WARNINGS Compiler supports deprecated warnings (D6+/BCB6+) - SUPPORTS_LIBRARY_WARNINGS Compiler supports library warnings (D6+/BCB6+) - SUPPORTS_PLATFORM_WARNINGS Compiler supports platform warnings (D6+/BCB6+) - SUPPORTS_UNSAFE_WARNINGS Compiler supports unsafe warnings (D7) - SUPPORTS_WEAKPACKAGEUNIT Compiler supports the WEAKPACKAGEUNIT directive - SUPPORTS_COMPILETIME_MESSAGES Compiler supports the MESSAGE directive - SUPPORTS_PACKAGES Compiler supports Packages - HAS_UNIT_LIBC Unit Libc exists (Kylix, FPC on Linux/x86) - HAS_UNIT_RTLCONSTS Unit RTLConsts exists (D6+/BCB6+/FPC) - HAS_UNIT_TYPES Unit Types exists (D6+/BCB6+/FPC) - HAS_UNIT_VARIANTS Unit Variants exists (D6+/BCB6+/FPC) - HAS_UNIT_STRUTILS Unit StrUtils exists (D6+/BCB6+/FPC) - HAS_UNIT_DATEUTILS Unit DateUtils exists (D6+/BCB6+/FPC) - HAS_UNIT_CONTNRS Unit contnrs exists (D6+/BCB6+/FPC) - HAS_UNIT_HTTPPROD Unit HTTPProd exists (D9+) - HAS_UNIT_GIFIMG Unit GifImg exists (D11+) - HAS_UNIT_ANSISTRINGS Unit AnsiStrings exists (D12+) - HAS_UNIT_PNGIMAGE Unit PngImage exists (D12+) - HAS_UNIT_CHARACTER Unit Character exists (D12+) - XPLATFORM_RTL The RTL supports crossplatform function names (e.g. RaiseLastOSError) (D6+/BCB6+/FPC) - SUPPORTS_UNICODE string type is aliased to an unicode string (WideString or UnicodeString) (DX.NET, D12+) - SUPPORTS_UNICODE_STRING Compiler supports UnicodeString (D12+) - SUPPORTS_INT_ALIASES Types Int8, Int16, Int32, UInt8, UInt16 and UInt32 are defined in the unit System (D12+) - HAS_UNIT_RTTI Unit RTTI is available (D14+) - SUPPORTS_CAST_INTERFACE_TO_OBJ The compiler supports casts from interfaces to objects (D14+) - SUPPORTS_DELAYED_LOADING The compiler generates stubs for delaying imported function loads (D14+) - HAS_UNIT_REGULAREXPRESSIONSAPI Unit RegularExpressionsAPI is available (D15+) - HAS_UNIT_SYSTEM_UITYPES Unit System.UITypes is available (D16+) - HAS_UNIT_SYSTEM_ACTIONS Unit System.Actions is available (D17+) - - -- Compiler Settings - - The compiler settings directives indicate whether a specific compiler setting - is in effect. This facilitates changing compiler settings locally in a more - compact and readible manner. - - Directive Description - ------------------------------------------------------------------------------ - ALIGN_ON Compiling in the A+ state (no alignment) - BOOLEVAL_ON Compiling in the B+ state (complete boolean evaluation) - ASSERTIONS_ON Compiling in the C+ state (assertions on) - DEBUGINFO_ON Compiling in the D+ state (debug info generation on) - IMPORTEDDATA_ON Compiling in the G+ state (creation of imported data references) - LONGSTRINGS_ON Compiling in the H+ state (string defined as AnsiString) - IOCHECKS_ON Compiling in the I+ state (I/O checking enabled) - WRITEABLECONST_ON Compiling in the J+ state (typed constants can be modified) - LOCALSYMBOLS Compiling in the L+ state (local symbol generation) - LOCALSYMBOLS_ON Alias of LOCALSYMBOLS - TYPEINFO_ON Compiling in the M+ state (RTTI generation on) - OPTIMIZATION_ON Compiling in the O+ state (code optimization on) - OPENSTRINGS_ON Compiling in the P+ state (variable string parameters are openstrings) - OVERFLOWCHECKS_ON Compiling in the Q+ state (overflow checing on) - RANGECHECKS_ON Compiling in the R+ state (range checking on) - TYPEDADDRESS_ON Compiling in the T+ state (pointers obtained using the @ operator are typed) - SAFEDIVIDE_ON Compiling in the U+ state (save FDIV instruction through RTL emulation) - VARSTRINGCHECKS_ON Compiling in the V+ state (type checking of shortstrings) - STACKFRAMES_ON Compiling in the W+ state (generation of stack frames) - EXTENDEDSYNTAX_ON Compiling in the X+ state (Delphi extended syntax enabled) -*) - -{$DEFINE BORLAND} - -{ Set FreePascal to Delphi mode } -{$IFDEF FPC} - {$MODE DELPHI} - {$ASMMODE Intel} - {$UNDEF BORLAND} - {$DEFINE CPUASM} - // FPC defines CPU32, CPU64 and Unix automatically -{$ENDIF} - -{$IFDEF BORLAND} - {$IFDEF LINUX} - {$DEFINE KYLIX} - {$ENDIF LINUX} - {$IFNDEF CLR} - {$IFNDEF CPUX86} - {$IFNDEF CPUX64} - {$DEFINE CPU386} // For Borland compilers select the x86 compat assembler by default - {$DEFINE CPU32} // Assume Borland compilers are 32-bit (rather than 64-bit) - {$DEFINE CPUASM} - {$ELSE ~CPUX64} - {$DEFINE CPU64} - {$DEFINE CPUASM} - {$DEFINE DELPHI64_TEMPORARY} - {$ENDIF ~CPUX64} - {$ELSE ~CPUX86} - {$DEFINE CPU386} - {$DEFINE CPU32} - {$DEFINE CPUASM} - {$ENDIF ~CPUX86} - {$ENDIF ~CLR} -{$ENDIF BORLAND} - -{------------------------------------------------------------------------------} -{ VERXXX to COMPILERX, DELPHIX and BCBX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BORLAND} - {$IFDEF KYLIX} - {$I kylix.inc} // FPC incompatible stuff - {$ELSE ~KYLIX} - - {$DEFINE UNKNOWN_COMPILER_VERSION} - - {$IFDEF VER80} - {$DEFINE COMPILER1} - {$DEFINE DELPHI1} - {$DEFINE DELPHICOMPILER1} - {$DEFINE RTL80_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER90} - {$DEFINE COMPILER2} - {$DEFINE DELPHI2} - {$DEFINE DELPHICOMPILER2} - {$DEFINE RTL90_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER93} - {$DEFINE COMPILER2} - {$DEFINE BCB1} - {$DEFINE BCB} - {$DEFINE RTL93_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER100} - {$DEFINE COMPILER3} - {$DEFINE DELPHI3} - {$DEFINE DELPHICOMPILER3} - {$DEFINE RTL100_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER110} - {$DEFINE COMPILER35} - {$DEFINE BCB3} - {$DEFINE BCB} - {$DEFINE RTL110_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER120} - {$DEFINE COMPILER4} - {$DEFINE DELPHI4} - {$DEFINE DELPHICOMPILER4} - {$DEFINE RTL120_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER125} - {$DEFINE COMPILER4} - {$DEFINE BCB4} - {$DEFINE BCB} - {$DEFINE RTL125_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER130} - {$DEFINE COMPILER5} - {$IFDEF BCB} - {$DEFINE BCB5} - {$ELSE} - {$DEFINE DELPHI5} - {$DEFINE DELPHICOMPILER5} - {$ENDIF} - {$DEFINE RTL130_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER140} - {$DEFINE COMPILER6} - {$IFDEF BCB} - {$DEFINE BCB6} - {$ELSE} - {$DEFINE DELPHI6} - {$DEFINE DELPHICOMPILER6} - {$ENDIF} - {$DEFINE RTL140_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER150} - {$DEFINE COMPILER7} - {$DEFINE DELPHI7} - {$DEFINE DELPHICOMPILER7} - {$DEFINE RTL150_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER160} - {$DEFINE BDS2} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR10} - {$ENDIF CLR} - {$DEFINE COMPILER8} - {$DEFINE DELPHI8} - {$DEFINE DELPHICOMPILER8} - {$DEFINE RTL160_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER170} - {$DEFINE BDS3} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR11} - {$ENDIF CLR} - {$DEFINE COMPILER9} - {$DEFINE DELPHI9} - {$DEFINE DELPHI2005} // synonym to DELPHI9 - {$DEFINE DELPHICOMPILER9} - {$DEFINE RTL170_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER180} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR11} - {$ENDIF CLR} - {$IFDEF VER185} - {$DEFINE BDS5} - {$DEFINE COMPILER11} - {$IFDEF BCB} - {$DEFINE BCB11} - {$ELSE} - {$DEFINE DELPHI11} - {$DEFINE DELPHI2007} // synonym to DELPHI11 - {$DEFINE DELPHICOMPILER11} - {$ENDIF} - {$DEFINE RTL185_UP} - {$ELSE ~~VER185} - {$DEFINE BDS4} - {$DEFINE COMPILER10} - {$IFDEF BCB} - {$DEFINE BCB10} - {$ELSE} - {$DEFINE DELPHI10} - {$DEFINE DELPHI2006} // synonym to DELPHI10 - {$DEFINE DELPHICOMPILER10} - {$ENDIF} - {$DEFINE RTL180_UP} - {$ENDIF ~VER185} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER190} // Delphi 2007 for .NET - {$DEFINE BDS} - {$DEFINE BDS5} - {$IFDEF CLR} - {$DEFINE CLR20} - {$ENDIF CLR} - {$DEFINE COMPILER11} - {$DEFINE DELPHI11} - {$DEFINE DELPHI2007} // synonym to DELPHI11 - {$DEFINE DELPHICOMPILER11} - {$DEFINE RTL190_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER190} - - {$IFDEF VER200} // RAD Studio 2009 - {$DEFINE BDS} - {$DEFINE BDS6} - {$IFDEF CLR} - {$DEFINE CLR20} - {$ENDIF CLR} - {$DEFINE COMPILER12} - {$IFDEF BCB} - {$DEFINE BCB12} - {$ELSE} - {$DEFINE DELPHI12} - {$DEFINE DELPHI2009} // synonym to DELPHI12 - {$DEFINE DELPHICOMPILER12} - {$ENDIF BCB} - {$IFDEF CLR} - {$DEFINE RTL190_UP} - {$ELSE} - {$DEFINE RTL200_UP} - {$ENDIF} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER200} - - {$IFDEF VER210} // RAD Studio 2010 - {$DEFINE BDS} - {$DEFINE BDS7} - {$DEFINE COMPILER14} - {$IFDEF BCB} - {$DEFINE BCB14} - {$ELSE} - {$DEFINE DELPHI14} - {$DEFINE DELPHI2010} // synonym to DELPHI14 - {$DEFINE DELPHICOMPILER14} - {$ENDIF BCB} - {$DEFINE RTL210_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER210} - - {$IFDEF VER220} // RAD Studio XE - {$DEFINE BDS} - {$DEFINE BDS8} - {$DEFINE COMPILER15} - {$IFDEF BCB} - {$DEFINE BCB15} - {$ELSE} - {$DEFINE DELPHI15} - {$DEFINE DELPHIXE} // synonym to DELPHI15 - {$DEFINE DELPHICOMPILER15} - {$ENDIF BCB} - {$DEFINE RTL220_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER220} - - {$IFDEF VER230} // RAD Studio XE2 - {$DEFINE BDS} - {$DEFINE BDS9} - {$DEFINE COMPILER16} - {$IFDEF BCB} - {$DEFINE BCB16} - {$ELSE} - {$DEFINE DELPHI16} - {$DEFINE DELPHIXE2} // synonym to DELPHI16 - {$DEFINE DELPHICOMPILER16} - {$ENDIF BCB} - {$DEFINE RTL230_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER230} - - {$IFDEF VER240} // RAD Studio XE3 - {$DEFINE BDS} - {$DEFINE BDS10} - {$DEFINE COMPILER17} - {$IFDEF BCB} - {$DEFINE BCB17} - {$ELSE} - {$DEFINE DELPHI17} - {$DEFINE DELPHIXE3} // synonym to DELPHI17 - {$DEFINE DELPHICOMPILER17} - {$ENDIF BCB} - {$DEFINE RTL240_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER240} - - {$IFDEF UNKNOWN_COMPILER_VERSION} // adjust for newer version (always use latest version) - {$DEFINE BDS} - {$DEFINE BDS10} - {$DEFINE COMPILER17} - {$IFDEF BCB} - {$DEFINE BCB17} - {$ELSE} - {$DEFINE DELPHI17} - {$DEFINE DELPHIXE3} // synonym to DELPHI17 - {$DEFINE DELPHICOMPILER17} - {$ENDIF BCB} - {$DEFINE RTL240_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$ENDIF ~KYLIX} - - {$IFDEF BCB} - {$DEFINE CPPBUILDER} - {$DEFINE BCBCOMPILER} - {$ELSE ~BCB} - {$DEFINE DELPHI} - {$DEFINE DELPHICOMPILER} - {$ENDIF ~BCB} - -{$ENDIF BORLAND} - -{------------------------------------------------------------------------------} -{ DELPHIX_UP from DELPHIX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHI17} {$DEFINE DELPHI17_UP} {$ENDIF} -{$IFDEF DELPHI16} {$DEFINE DELPHI16_UP} {$ENDIF} -{$IFDEF DELPHI15} {$DEFINE DELPHI15_UP} {$ENDIF} -{$IFDEF DELPHI14} {$DEFINE DELPHI14_UP} {$ENDIF} -{$IFDEF DELPHI12} {$DEFINE DELPHI12_UP} {$ENDIF} -{$IFDEF DELPHI11} {$DEFINE DELPHI11_UP} {$ENDIF} -{$IFDEF DELPHI10} {$DEFINE DELPHI10_UP} {$ENDIF} -{$IFDEF DELPHI9} {$DEFINE DELPHI9_UP} {$ENDIF} -{$IFDEF DELPHI8} {$DEFINE DELPHI8_UP} {$ENDIF} -{$IFDEF DELPHI7} {$DEFINE DELPHI7_UP} {$ENDIF} -{$IFDEF DELPHI6} {$DEFINE DELPHI6_UP} {$ENDIF} -{$IFDEF DELPHI5} {$DEFINE DELPHI5_UP} {$ENDIF} -{$IFDEF DELPHI4} {$DEFINE DELPHI4_UP} {$ENDIF} -{$IFDEF DELPHI3} {$DEFINE DELPHI3_UP} {$ENDIF} -{$IFDEF DELPHI2} {$DEFINE DELPHI2_UP} {$ENDIF} -{$IFDEF DELPHI1} {$DEFINE DELPHI1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHIX_UP from DELPHIX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHI17_UP} - {$DEFINE DELPHIXE3_UP} // synonym to DELPHI17_UP - {$DEFINE DELPHI16_UP} -{$ENDIF} - -{$IFDEF DELPHI16_UP} - {$DEFINE DELPHIXE2_UP} // synonym to DELPHI16_UP - {$DEFINE DELPHI15_UP} -{$ENDIF} - -{$IFDEF DELPHI15_UP} - {$DEFINE DELPHIXE_UP} // synonym to DELPHI15_UP - {$DEFINE DELPHI14_UP} -{$ENDIF} - -{$IFDEF DELPHI14_UP} - {$DEFINE DELPHI2010_UP} // synonym to DELPHI14_UP - {$DEFINE DELPHI12_UP} -{$ENDIF} - -{$IFDEF DELPHI12_UP} - {$DEFINE DELPHI2009_UP} // synonym to DELPHI12_UP - {$DEFINE DELPHI11_UP} -{$ENDIF} - -{$IFDEF DELPHI11_UP} - {$DEFINE DELPHI2007_UP} // synonym to DELPHI11_UP - {$DEFINE DELPHI10_UP} -{$ENDIF} - -{$IFDEF DELPHI10_UP} - {$DEFINE DELPHI2006_UP} // synonym to DELPHI10_UP - {$DEFINE DELPHI9_UP} -{$ENDIF} - -{$IFDEF DELPHI9_UP} - {$DEFINE DELPHI2005_UP} // synonym to DELPHI9_UP - {$DEFINE DELPHI8_UP} -{$ENDIF} - -{$IFDEF DELPHI8_UP} {$DEFINE DELPHI7_UP} {$ENDIF} -{$IFDEF DELPHI7_UP} {$DEFINE DELPHI6_UP} {$ENDIF} -{$IFDEF DELPHI6_UP} {$DEFINE DELPHI5_UP} {$ENDIF} -{$IFDEF DELPHI5_UP} {$DEFINE DELPHI4_UP} {$ENDIF} -{$IFDEF DELPHI4_UP} {$DEFINE DELPHI3_UP} {$ENDIF} -{$IFDEF DELPHI3_UP} {$DEFINE DELPHI2_UP} {$ENDIF} -{$IFDEF DELPHI2_UP} {$DEFINE DELPHI1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BCBX_UP from BCBX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BCB17} {$DEFINE BCB17_UP} {$ENDIF} -{$IFDEF BCB16} {$DEFINE BCB16_UP} {$ENDIF} -{$IFDEF BCB15} {$DEFINE BCB15_UP} {$ENDIF} -{$IFDEF BCB14} {$DEFINE BCB14_UP} {$ENDIF} -{$IFDEF BCB12} {$DEFINE BCB12_UP} {$ENDIF} -{$IFDEF BCB11} {$DEFINE BCB11_UP} {$ENDIF} -{$IFDEF BCB10} {$DEFINE BCB10_UP} {$ENDIF} -{$IFDEF BCB6} {$DEFINE BCB6_UP} {$ENDIF} -{$IFDEF BCB5} {$DEFINE BCB5_UP} {$ENDIF} -{$IFDEF BCB4} {$DEFINE BCB4_UP} {$ENDIF} -{$IFDEF BCB3} {$DEFINE BCB3_UP} {$ENDIF} -{$IFDEF BCB1} {$DEFINE BCB1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BCBX_UP from BCBX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BCB17_UP} {$DEFINE BCB16_UP} {$ENDIF} -{$IFDEF BCB16_UP} {$DEFINE BCB15_UP} {$ENDIF} -{$IFDEF BCB15_UP} {$DEFINE BCB14_UP} {$ENDIF} -{$IFDEF BCB14_UP} {$DEFINE BCB12_UP} {$ENDIF} -{$IFDEF BCB12_UP} {$DEFINE BCB11_UP} {$ENDIF} -{$IFDEF BCB11_UP} {$DEFINE BCB10_UP} {$ENDIF} -{$IFDEF BCB10_UP} {$DEFINE BCB6_UP} {$ENDIF} -{$IFDEF BCB6_UP} {$DEFINE BCB5_UP} {$ENDIF} -{$IFDEF BCB5_UP} {$DEFINE BCB4_UP} {$ENDIF} -{$IFDEF BCB4_UP} {$DEFINE BCB3_UP} {$ENDIF} -{$IFDEF BCB3_UP} {$DEFINE BCB1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BDSX_UP from BDSX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BDS10} {$DEFINE BDS10_UP} {$ENDIF} -{$IFDEF BDS9} {$DEFINE BDS9_UP} {$ENDIF} -{$IFDEF BDS8} {$DEFINE BDS8_UP} {$ENDIF} -{$IFDEF BDS7} {$DEFINE BDS7_UP} {$ENDIF} -{$IFDEF BDS6} {$DEFINE BDS6_UP} {$ENDIF} -{$IFDEF BDS5} {$DEFINE BDS5_UP} {$ENDIF} -{$IFDEF BDS4} {$DEFINE BDS4_UP} {$ENDIF} -{$IFDEF BDS3} {$DEFINE BDS3_UP} {$ENDIF} -{$IFDEF BDS2} {$DEFINE BDS2_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BDSX_UP from BDSX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BDS10_UP} {$DEFINE BDS9_UP} {$ENDIF} -{$IFDEF BDS9_UP} {$DEFINE BDS8_UP} {$ENDIF} -{$IFDEF BDS8_UP} {$DEFINE BDS7_UP} {$ENDIF} -{$IFDEF BDS7_UP} {$DEFINE BDS6_UP} {$ENDIF} -{$IFDEF BDS6_UP} {$DEFINE BDS5_UP} {$ENDIF} -{$IFDEF BDS5_UP} {$DEFINE BDS4_UP} {$ENDIF} -{$IFDEF BDS4_UP} {$DEFINE BDS3_UP} {$ENDIF} -{$IFDEF BDS3_UP} {$DEFINE BDS2_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHICOMPILERX_UP from DELPHICOMPILERX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER17} {$DEFINE DELPHICOMPILER17_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER16} {$DEFINE DELPHICOMPILER16_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER15} {$DEFINE DELPHICOMPILER15_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER14} {$DEFINE DELPHICOMPILER14_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER12} {$DEFINE DELPHICOMPILER12_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER11} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER10} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER9} {$DEFINE DELPHICOMPILER9_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8} {$DEFINE DELPHICOMPILER8_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER7} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER6} {$DEFINE DELPHICOMPILER6_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER5} {$DEFINE DELPHICOMPILER5_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER4} {$DEFINE DELPHICOMPILER4_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER3} {$DEFINE DELPHICOMPILER3_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER2} {$DEFINE DELPHICOMPILER2_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER1} {$DEFINE DELPHICOMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHICOMPILERX_UP from DELPHICOMPILERX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER17_UP} {$DEFINE DELPHICOMPILER16_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER16_UP} {$DEFINE DELPHICOMPILER15_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER15_UP} {$DEFINE DELPHICOMPILER14_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER14_UP} {$DEFINE DELPHICOMPILER12_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER12_UP} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER11_UP} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER10_UP} {$DEFINE DELPHICOMPILER9_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER9_UP} {$DEFINE DELPHICOMPILER8_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8_UP} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8_UP} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER7_UP} {$DEFINE DELPHICOMPILER6_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER6_UP} {$DEFINE DELPHICOMPILER5_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER5_UP} {$DEFINE DELPHICOMPILER4_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER4_UP} {$DEFINE DELPHICOMPILER3_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER3_UP} {$DEFINE DELPHICOMPILER2_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER2_UP} {$DEFINE DELPHICOMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ COMPILERX_UP from COMPILERX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF COMPILER17} {$DEFINE COMPILER17_UP} {$ENDIF} -{$IFDEF COMPILER16} {$DEFINE COMPILER16_UP} {$ENDIF} -{$IFDEF COMPILER15} {$DEFINE COMPILER15_UP} {$ENDIF} -{$IFDEF COMPILER14} {$DEFINE COMPILER14_UP} {$ENDIF} -{$IFDEF COMPILER12} {$DEFINE COMPILER12_UP} {$ENDIF} -{$IFDEF COMPILER11} {$DEFINE COMPILER11_UP} {$ENDIF} -{$IFDEF COMPILER10} {$DEFINE COMPILER10_UP} {$ENDIF} -{$IFDEF COMPILER9} {$DEFINE COMPILER9_UP} {$ENDIF} -{$IFDEF COMPILER8} {$DEFINE COMPILER8_UP} {$ENDIF} -{$IFDEF COMPILER7} {$DEFINE COMPILER7_UP} {$ENDIF} -{$IFDEF COMPILER6} {$DEFINE COMPILER6_UP} {$ENDIF} -{$IFDEF COMPILER5} {$DEFINE COMPILER5_UP} {$ENDIF} -{$IFDEF COMPILER4} {$DEFINE COMPILER4_UP} {$ENDIF} -{$IFDEF COMPILER35} {$DEFINE COMPILER35_UP} {$ENDIF} -{$IFDEF COMPILER3} {$DEFINE COMPILER3_UP} {$ENDIF} -{$IFDEF COMPILER2} {$DEFINE COMPILER2_UP} {$ENDIF} -{$IFDEF COMPILER1} {$DEFINE COMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ COMPILERX_UP from COMPILERX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF COMPILER17_UP} {$DEFINE COMPILER16_UP} {$ENDIF} -{$IFDEF COMPILER16_UP} {$DEFINE COMPILER15_UP} {$ENDIF} -{$IFDEF COMPILER15_UP} {$DEFINE COMPILER14_UP} {$ENDIF} -{$IFDEF COMPILER14_UP} {$DEFINE COMPILER12_UP} {$ENDIF} -{$IFDEF COMPILER12_UP} {$DEFINE COMPILER11_UP} {$ENDIF} -{$IFDEF COMPILER11_UP} {$DEFINE COMPILER10_UP} {$ENDIF} -{$IFDEF COMPILER10_UP} {$DEFINE COMPILER9_UP} {$ENDIF} -{$IFDEF COMPILER9_UP} {$DEFINE COMPILER8_UP} {$ENDIF} -{$IFDEF COMPILER8_UP} {$DEFINE COMPILER7_UP} {$ENDIF} -{$IFDEF COMPILER7_UP} {$DEFINE COMPILER6_UP} {$ENDIF} -{$IFDEF COMPILER6_UP} {$DEFINE COMPILER5_UP} {$ENDIF} -{$IFDEF COMPILER5_UP} {$DEFINE COMPILER4_UP} {$ENDIF} -{$IFDEF COMPILER4_UP} {$DEFINE COMPILER35_UP} {$ENDIF} -{$IFDEF COMPILER35_UP} {$DEFINE COMPILER3_UP} {$ENDIF} -{$IFDEF COMPILER3_UP} {$DEFINE COMPILER2_UP} {$ENDIF} -{$IFDEF COMPILER2_UP} {$DEFINE COMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ RTLX_UP from RTLX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF RTL240_UP} {$DEFINE RTL230_UP} {$ENDIF} -{$IFDEF RTL230_UP} {$DEFINE RTL220_UP} {$ENDIF} -{$IFDEF RTL220_UP} {$DEFINE RTL210_UP} {$ENDIF} -{$IFDEF RTL210_UP} {$DEFINE RTL200_UP} {$ENDIF} -{$IFDEF RTL200_UP} {$DEFINE RTL190_UP} {$ENDIF} -{$IFDEF RTL190_UP} {$DEFINE RTL185_UP} {$ENDIF} -{$IFDEF RTL185_UP} {$DEFINE RTL180_UP} {$ENDIF} -{$IFDEF RTL180_UP} {$DEFINE RTL170_UP} {$ENDIF} -{$IFDEF RTL170_UP} {$DEFINE RTL160_UP} {$ENDIF} -{$IFDEF RTL160_UP} {$DEFINE RTL150_UP} {$ENDIF} -{$IFDEF RTL150_UP} {$DEFINE RTL145_UP} {$ENDIF} -{$IFDEF RTL145_UP} {$DEFINE RTL142_UP} {$ENDIF} -{$IFDEF RTL142_UP} {$DEFINE RTL140_UP} {$ENDIF} -{$IFDEF RTL140_UP} {$DEFINE RTL130_UP} {$ENDIF} -{$IFDEF RTL130_UP} {$DEFINE RTL125_UP} {$ENDIF} -{$IFDEF RTL125_UP} {$DEFINE RTL120_UP} {$ENDIF} -{$IFDEF RTL120_UP} {$DEFINE RTL110_UP} {$ENDIF} -{$IFDEF RTL110_UP} {$DEFINE RTL100_UP} {$ENDIF} -{$IFDEF RTL100_UP} {$DEFINE RTL93_UP} {$ENDIF} -{$IFDEF RTL93_UP} {$DEFINE RTL90_UP} {$ENDIF} -{$IFDEF RTL90_UP} {$DEFINE RTL80_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ Check for CLR overrides of default detection } -{------------------------------------------------------------------------------} - -{$IFDEF CLR} - {$IFDEF FORCE_CLR10} - {$DEFINE CLR10} - {$UNDEF CLR11} - {$UNDEF CLR20} - {$ENDIF FORCE_CLR10} - - {$IFDEF FORCE_CLR11} - {$UNDEF CLR10} - {$DEFINE CLR11} - {$UNDEF CLR20} - {$ENDIF FORCE_CLR11} - - {$IFDEF FORCE_CLR20} - {$UNDEF CLR10} - {$UNDEF CLR11} - {$DEFINE CLR20} - {$ENDIF FORCE_CLR20} -{$ENDIF CLR} - -{------------------------------------------------------------------------------} -{ CLRX from CLRX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF CLR10} {$DEFINE CLR10_UP} {$ENDIF} -{$IFDEF CLR11} {$DEFINE CLR11_UP} {$ENDIF} -{$IFDEF CLR20} {$DEFINE CLR20_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ CLRX_UP from CLRX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF CLR20_UP} {$DEFINE CLR11_UP} {$ENDIF} -{$IFDEF CLR11_UP} {$DEFINE CLR10_UP} {$ENDIF} - -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER} - {$DEFINE DELPHILANGUAGE} -{$ENDIF} - -{$IFDEF BCBCOMPILER} - {$DEFINE DELPHILANGUAGE} -{$ENDIF} - -{------------------------------------------------------------------------------} -{ KYLIXX_UP from KYLIXX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF KYLIX3} {$DEFINE KYLIX3_UP} {$ENDIF} -{$IFDEF KYLIX2} {$DEFINE KYLIX2_UP} {$ENDIF} -{$IFDEF KYLIX1} {$DEFINE KYLIX1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ KYLIXX_UP from KYLIXX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF KYLIX3_UP} {$DEFINE KYLIX2_UP} {$ENDIF} -{$IFDEF KYLIX2_UP} {$DEFINE KYLIX1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ Map COMPILERX_UP to friendly feature names } -{------------------------------------------------------------------------------} - -{$IFDEF FPC} - {$IFDEF VER1_0} - Please use FPC 2.0 or higher to compile this. - {$ELSE} - {$DEFINE SUPPORTS_OUTPARAMS} - {$DEFINE SUPPORTS_WIDECHAR} - {$DEFINE SUPPORTS_WIDESTRING} - {$IFDEF HASINTF} - {$DEFINE SUPPORTS_INTERFACE} - {$ENDIF} - {$IFDEF HASVARIANT} - {$DEFINE SUPPORTS_VARIANT} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_SINGLE} - {$DEFINE SUPPORTS_SINGLE} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_DOUBLE} - {$DEFINE SUPPORTS_DOUBLE} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_EXTENDED} - {$DEFINE SUPPORTS_EXTENDED} - {$ENDIF} - {$IFDEF HASCURRENCY} - {$DEFINE SUPPORTS_CURRENCY} - {$ENDIF} - {$DEFINE SUPPORTS_THREADVAR} - {$DEFINE SUPPORTS_CONSTPARAMS} - {$DEFINE SUPPORTS_LONGWORD} - {$DEFINE SUPPORTS_INT64} - {$DEFINE SUPPORTS_DYNAMICARRAYS} - {$DEFINE SUPPORTS_DEFAULTPARAMS} - {$DEFINE SUPPORTS_OVERLOAD} - {$DEFINE ACCEPT_DEPRECATED} // 2.2 also gives warnings - {$DEFINE ACCEPT_PLATFORM} // 2.2 also gives warnings - {$DEFINE ACCEPT_LIBRARY} - {$DEFINE SUPPORTS_EXTSYM} - {$DEFINE SUPPORTS_NODEFINE} - - {$DEFINE SUPPORTS_CUSTOMVARIANTS} - {$DEFINE SUPPORTS_VARARGS} - {$DEFINE SUPPORTS_ENUMVALUE} - {$IFDEF LINUX} - {$DEFINE HAS_UNIT_LIBC} - {$ENDIF LINUX} - {$DEFINE HAS_UNIT_CONTNRS} - {$DEFINE HAS_UNIT_TYPES} - {$DEFINE HAS_UNIT_VARIANTS} - {$DEFINE HAS_UNIT_STRUTILS} - {$DEFINE HAS_UNIT_DATEUTILS} - {$DEFINE HAS_UNIT_RTLCONSTS} - - {$DEFINE XPLATFORM_RTL} - - {$IFDEF VER2_2} - {$DEFINE SUPPORTS_DISPINTERFACE} - {$DEFINE SUPPORTS_IMPLEMENTS} - {$DEFINE SUPPORTS_DISPID} - {$ELSE} - {$UNDEF SUPPORTS_DISPINTERFACE} - {$UNDEF SUPPORTS_IMPLEMENTS} - {$endif} - {$UNDEF SUPPORTS_UNSAFE_WARNINGS} - {$ENDIF} -{$ENDIF FPC} - -{$IFDEF CLR} - {$DEFINE SUPPORTS_UNICODE} -{$ENDIF CLR} - -{$IFDEF COMPILER1_UP} - {$DEFINE SUPPORTS_CONSTPARAMS} - {$DEFINE SUPPORTS_SINGLE} - {$DEFINE SUPPORTS_DOUBLE} - {$DEFINE SUPPORTS_EXTENDED} - {$DEFINE SUPPORTS_PACKAGES} -{$ENDIF COMPILER1_UP} - -{$IFDEF COMPILER2_UP} - {$DEFINE SUPPORTS_CURRENCY} - {$DEFINE SUPPORTS_THREADVAR} - {$DEFINE SUPPORTS_VARIANT} - {$DEFINE SUPPORTS_WIDECHAR} -{$ENDIF COMPILER2_UP} - -{$IFDEF COMPILER3_UP} - {$DEFINE SUPPORTS_OUTPARAMS} - {$DEFINE SUPPORTS_WIDESTRING} - {$DEFINE SUPPORTS_INTERFACE} - {$DEFINE SUPPORTS_DISPINTERFACE} - {$DEFINE SUPPORTS_DISPID} - {$DEFINE SUPPORTS_WEAKPACKAGEUNIT} -{$ENDIF COMPILER3_UP} - -{$IFDEF COMPILER35_UP} - {$DEFINE SUPPORTS_EXTSYM} - {$DEFINE SUPPORTS_NODEFINE} -{$ENDIF COMPILER35_UP} - -{$IFDEF COMPILER4_UP} - {$DEFINE SUPPORTS_LONGWORD} - {$DEFINE SUPPORTS_INT64} - {$DEFINE SUPPORTS_DYNAMICARRAYS} - {$DEFINE SUPPORTS_DEFAULTPARAMS} - {$DEFINE SUPPORTS_OVERLOAD} - {$DEFINE SUPPORTS_IMPLEMENTS} -{$ENDIF COMPILER4_UP} - -{$IFDEF COMPILER6_UP} - {$DEFINE SUPPORTS_DEPRECATED} - {$DEFINE SUPPORTS_LIBRARY} - {$DEFINE SUPPORTS_PLATFORM} - {$DEFINE SUPPORTS_LOCAL} - {$DEFINE SUPPORTS_SETPEFLAGS} - {$DEFINE SUPPORTS_EXPERIMENTAL_WARNINGS} - {$DEFINE ACCEPT_DEPRECATED} - {$DEFINE ACCEPT_PLATFORM} - {$DEFINE ACCEPT_LIBRARY} - {$DEFINE SUPPORTS_DEPRECATED_WARNINGS} - {$DEFINE SUPPORTS_LIBRARY_WARNINGS} - {$DEFINE SUPPORTS_PLATFORM_WARNINGS} - {$DEFINE SUPPORTS_CUSTOMVARIANTS} - {$DEFINE SUPPORTS_VARARGS} - {$DEFINE SUPPORTS_ENUMVALUE} - {$DEFINE SUPPORTS_COMPILETIME_MESSAGES} -{$ENDIF COMPILER6_UP} - -{$IFDEF COMPILER7_UP} - {$DEFINE SUPPORTS_UNSAFE_WARNINGS} -{$ENDIF COMPILER7_UP} - -{$IFDEF COMPILER9_UP} - {$DEFINE SUPPORTS_FOR_IN} - {$DEFINE SUPPORTS_INLINE} - {$DEFINE SUPPORTS_NESTED_CONSTANTS} - {$DEFINE SUPPORTS_NESTED_TYPES} - {$DEFINE SUPPORTS_REGION} - {$IFDEF CLR} - {$DEFINE SUPPORTS_ENHANCED_RECORDS} - {$DEFINE SUPPORTS_CLASS_FIELDS} - {$DEFINE SUPPORTS_CLASS_HELPERS} - {$DEFINE SUPPORTS_CLASS_OPERATORS} - {$DEFINE SUPPORTS_STRICT} - {$DEFINE SUPPORTS_STATIC} - {$DEFINE SUPPORTS_FINAL} - {$ENDIF CLR} -{$ENDIF COMPILER9_UP} - -{$IFDEF COMPILER10_UP} - {$DEFINE SUPPORTS_ENHANCED_RECORDS} - {$DEFINE SUPPORTS_CLASS_FIELDS} - {$DEFINE SUPPORTS_CLASS_HELPERS} - {$DEFINE SUPPORTS_CLASS_OPERATORS} - {$DEFINE SUPPORTS_STRICT} - {$DEFINE SUPPORTS_STATIC} - {$DEFINE SUPPORTS_FINAL} - {$DEFINE SUPPORTS_METHODINFO} -{$ENDIF COMPILER10_UP} - -{$IFDEF COMPILER11_UP} - {$IFDEF CLR} - {$DEFINE SUPPORTS_GENERICS} - {$DEFINE SUPPORTS_DEPRECATED_DETAILS} - {$ENDIF CLR} -{$ENDIF COMPILER11_UP} - -{$IFDEF COMPILER12_UP} - {$DEFINE SUPPORTS_GENERICS} - {$DEFINE SUPPORTS_DEPRECATED_DETAILS} - {$DEFINE SUPPORTS_INT_ALIASES} - {$IFNDEF CLR} - {$DEFINE SUPPORTS_UNICODE} - {$DEFINE SUPPORTS_UNICODE_STRING} - {$ENDIF CLR} -{$ENDIF COMPILER12_UP} - -{$IFDEF COMPILER14_UP} - {$DEFINE SUPPORTS_CLASS_CTORDTORS} - {$DEFINE HAS_UNIT_RTTI} - {$DEFINE SUPPORTS_CAST_INTERFACE_TO_OBJ} - {$DEFINE SUPPORTS_DELAYED_LOADING} -{$ENDIF COMPILER14_UP} - -{$IFDEF COMPILER16_UP} - {$DEFINE USE_64BIT_TYPES} -{$ENDIF COMPILER16_UP} - -{$IFDEF RTL130_UP} - {$DEFINE HAS_UNIT_CONTNRS} -{$ENDIF RTL130_UP} - -{$IFDEF RTL140_UP} - {$IFDEF LINUX} - {$DEFINE HAS_UNIT_LIBC} - {$ENDIF LINUX} - {$DEFINE HAS_UNIT_RTLCONSTS} - {$DEFINE HAS_UNIT_TYPES} - {$DEFINE HAS_UNIT_VARIANTS} - {$DEFINE HAS_UNIT_STRUTILS} - {$DEFINE HAS_UNIT_DATEUTILS} - {$DEFINE XPLATFORM_RTL} -{$ENDIF RTL140_UP} - -{$IFDEF RTL170_UP} - {$DEFINE HAS_UNIT_HTTPPROD} -{$ENDIF RTL170_UP} - -{$IFDEF RTL185_UP} - {$DEFINE HAS_UNIT_GIFIMG} -{$ENDIF RTL185_UP} - -{$IFDEF RTL200_UP} - {$DEFINE HAS_UNIT_ANSISTRINGS} - {$DEFINE HAS_UNIT_PNGIMAGE} - {$DEFINE HAS_UNIT_CHARACTER} -{$ENDIF RTL200_UP} - -{$IFDEF RTL220_UP} - {$DEFINE SUPPORTS_UINT64} - {$DEFINE HAS_UNIT_REGULAREXPRESSIONSAPI} -{$ENDIF RTL220_UP} - -{$IFDEF RTL230_UP} - {$DEFINE HAS_UNITSCOPE} - {$DEFINE HAS_UNIT_SYSTEM_UITYPES} -{$ENDIF RTL230_UP} - -{$IFDEF RTL240_UP} - {$DEFINE HAS_UNIT_SYSTEM_ACTIONS} -{$ENDIF RTL240_UP} - -{------------------------------------------------------------------------------} -{ Cross-platform related defines } -{------------------------------------------------------------------------------} - -{$IFNDEF CPUASM} - {$DEFINE PUREPASCAL} -{$ENDIF ~CPUASM} - -{$IFDEF WIN32} - {$DEFINE MSWINDOWS} // predefined for D6+/BCB6+ - {$DEFINE Win32API} -{$ENDIF} - -{$IFDEF DELPHILANGUAGE} - {$IFDEF LINUX} - {$DEFINE UNIX} - {$ENDIF} - - {$IFNDEF CONSOLE} - {$IFDEF LINUX} - {$DEFINE VisualCLX} - {$ENDIF} - {$IFNDEF VisualCLX} - {$DEFINE VCL} - {$ENDIF} - {$ENDIF ~CONSOLE} -{$ENDIF DELPHILANGUAGE} - -{------------------------------------------------------------------------------} -{ Compiler settings } -{------------------------------------------------------------------------------} - -{$IFOPT A+} {$DEFINE ALIGN_ON} {$ENDIF} -{$IFOPT B+} {$DEFINE BOOLEVAL_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT C+} {$DEFINE ASSERTIONS_ON} {$ENDIF} -{$ENDIF} -{$IFOPT D+} {$DEFINE DEBUGINFO_ON} {$ENDIF} -{$IFOPT G+} {$DEFINE IMPORTEDDATA_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT H+} {$DEFINE LONGSTRINGS_ON} {$ENDIF} -{$ENDIF} - -// Hints -{$IFOPT I+} {$DEFINE IOCHECKS_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT J+} {$DEFINE WRITEABLECONST_ON} {$ENDIF} -{$ENDIF} -{$IFOPT L+} {$DEFINE LOCALSYMBOLS} {$DEFINE LOCALSYMBOLS_ON} {$ENDIF} -{$IFOPT M+} {$DEFINE TYPEINFO_ON} {$ENDIF} -{$IFOPT O+} {$DEFINE OPTIMIZATION_ON} {$ENDIF} -{$IFOPT P+} {$DEFINE OPENSTRINGS_ON} {$ENDIF} -{$IFOPT Q+} {$DEFINE OVERFLOWCHECKS_ON} {$ENDIF} -{$IFOPT R+} {$DEFINE RANGECHECKS_ON} {$ENDIF} - -// Real compatibility -{$IFOPT T+} {$DEFINE TYPEDADDRESS_ON} {$ENDIF} -{$IFOPT U+} {$DEFINE SAFEDIVIDE_ON} {$ENDIF} -{$IFOPT V+} {$DEFINE VARSTRINGCHECKS_ON} {$ENDIF} -{$IFOPT W+} {$DEFINE STACKFRAMES_ON} {$ENDIF} - -// Warnings -{$IFOPT X+} {$DEFINE EXTENDEDSYNTAX_ON} {$ENDIF} - -// for Delphi/BCB trial versions remove the point from the line below -{.$UNDEF SUPPORTS_WEAKPACKAGEUNIT} - -{$ENDIF ~JEDI_INC} diff --git a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/readme-dev.txt b/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/readme-dev.txt deleted file mode 100644 index 4ee09c3d24..0000000000 --- a/plugins/!Deprecated/MirandaNGHistoryToDB/HistoryToDBUpdater/readme-dev.txt +++ /dev/null @@ -1,38 +0,0 @@ -HistoryToDBUpdater ------------------- - -Утилита установки/обновления компонентов плагинов RnQHistoryToDB, QIPHistoryToDB, MirandaIMHistoryToDB, MirandaNGHistoryToDB. - -Автор: Михаил Григорьев -E-Mail: sleuthhound@gmail.com -ICQ: 161867489 -WWW: http://www.im-history.ru -Лицензия: GNU GPLv3 - -Системные требования: ---------------------- -РћРЎ: Win2000/XP/2003/Vista/7 -IM-клиент: Любой -БД: MySQL 4.0, 4.1, 5.0, 5.1 - PostgreSQL 7.1 - 8.3 - Oracle 8i - 11i - SQLite 3 - Firebird 2.x - -Необходимые компоненты для СЃР±РѕСЂРєРё плагина: ------------------------------------------- - -1. Embarcadero RAD Studio XE3 - -2. IM-History Downloader Component - See also directory IMDownloaderComponent - -3. DCPcrypt Cryptographic Component Library v2 - http://www.cityinthesky.co.uk/ - -Описание параметров запуска: ----------------------------- - -HistoryToDBUpdater.exe <1> - -<1> - (Необязательный параметр) - Путь РґРѕ файла настроек HistoryToDB.ini (Например: "C:\Program Files\QIP Infium\Profiles\username@qip.ru\Plugins\QIPHistoryToDB\") -- cgit v1.2.3