Commit 6663eb4f3b8fb039a214f6d596d88408b3171c81
1 parent
619432b8
Exists in
master
Implementação de USBDetect, ajustes para suporte de coleta de softwares à plataf…
…orma MS-Windows Vista/Seven, pequenas correções e faxina de código. git-svn-id: http://svn.softwarepublico.gov.br/svn/cacic/cacic/trunk/agente-windows@949 fecfc0c7-e812-0410-ae72-849f08638ee7
Showing
26 changed files
with
563 additions
and
230 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,164 @@ |
| 1 | +unit USBdetectClass; | |
| 2 | +// Código Original obtido em http://www.delphi3000.com/articles/article_4841.asp?SK= | |
| 3 | +interface | |
| 4 | +uses Windows, Messages, SysUtils, Classes; | |
| 5 | + | |
| 6 | +type | |
| 7 | + { Event Types } | |
| 8 | + TOnUsbChangeEvent = procedure(AObject : TObject; | |
| 9 | + const ADevType,AVendorID, | |
| 10 | + AProductID : string) of object; | |
| 11 | + | |
| 12 | + { USB Class } | |
| 13 | + TUsbClass = class(TObject) | |
| 14 | + private | |
| 15 | + FHandle : HWND; | |
| 16 | + FOnUsbRemoval, | |
| 17 | + FOnUsbInsertion : TOnUsbChangeEvent; | |
| 18 | + procedure GetUsbInfo(const ADeviceString : string; | |
| 19 | + out ADevType,AVendorID, | |
| 20 | + AProductID : string); | |
| 21 | + procedure WinMethod(var AMessage : TMessage); | |
| 22 | + procedure RegisterUsbHandler; | |
| 23 | + procedure WMDeviceChange(var AMessage : TMessage); | |
| 24 | + procedure Split(const Delimiter: Char;Input: string;const Strings: TStrings); | |
| 25 | + public | |
| 26 | + constructor Create; | |
| 27 | + destructor Destroy; override; | |
| 28 | + property OnUsbInsertion : TOnUsbChangeEvent read FOnUsbInsertion | |
| 29 | + write FOnUsbInsertion; | |
| 30 | + property OnUsbRemoval : TOnUsbChangeEvent read FOnUsbRemoval | |
| 31 | + write FOnUsbRemoval; | |
| 32 | + end; | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | +// ----------------------------------------------------------------------------- | |
| 37 | +implementation | |
| 38 | + | |
| 39 | +type | |
| 40 | + // Win API Definitions | |
| 41 | + PDevBroadcastDeviceInterface = ^DEV_BROADCAST_DEVICEINTERFACE; | |
| 42 | + DEV_BROADCAST_DEVICEINTERFACE = record | |
| 43 | + dbcc_size : DWORD; | |
| 44 | + dbcc_devicetype : DWORD; | |
| 45 | + dbcc_reserved : DWORD; | |
| 46 | + dbcc_classguid : TGUID; | |
| 47 | + dbcc_name : char; | |
| 48 | + end; | |
| 49 | + | |
| 50 | +const | |
| 51 | + // Miscellaneous | |
| 52 | + GUID_DEVINTF_USB_DEVICE : TGUID = '{A5DCBF10-6530-11D2-901F-00C04FB951ED}'; | |
| 53 | + USB_INTERFACE = $00000005; // Device interface class | |
| 54 | + USB_INSERTION = $8000; // System detected a new device | |
| 55 | + USB_REMOVAL = $8004; // Device is gone | |
| 56 | + | |
| 57 | +constructor TUsbClass.Create; | |
| 58 | +begin | |
| 59 | + inherited Create; | |
| 60 | + FHandle := AllocateHWnd(WinMethod); | |
| 61 | + RegisterUsbHandler; | |
| 62 | +end; | |
| 63 | + | |
| 64 | +destructor TUsbClass.Destroy; | |
| 65 | +begin | |
| 66 | + DeallocateHWnd(FHandle); | |
| 67 | + inherited Destroy; | |
| 68 | +end; | |
| 69 | + | |
| 70 | +procedure TUsbClass.GetUsbInfo(const ADeviceString : string; | |
| 71 | + out ADevType,AVendorID, | |
| 72 | + AProductID : string); | |
| 73 | +var sWork,sKey1 : string; | |
| 74 | + tstrAUX1,tstrAUX2 : TStringList; | |
| 75 | +begin | |
| 76 | + ADevType := ''; | |
| 77 | + AVendorID := ''; | |
| 78 | + AProductID := ''; | |
| 79 | + | |
| 80 | + if ADeviceString <> '' then | |
| 81 | + Begin | |
| 82 | + sWork := copy(ADeviceString,pos('#',ADeviceString) + 1,1026); | |
| 83 | + sKey1 := copy(sWork,1,pos('#',sWork) - 1); | |
| 84 | + | |
| 85 | + tstrAUX1 := TStringList.Create; | |
| 86 | + tstrAUX2 := TStringList.Create; | |
| 87 | + | |
| 88 | + Split('&',sKey1,tstrAUX1); | |
| 89 | + | |
| 90 | + Split('_',tstrAUX1[0],tstrAUX2); | |
| 91 | + AVendorID := tstrAUX2[1]; | |
| 92 | + | |
| 93 | + Split('_',tstrAUX1[1],tstrAUX2); | |
| 94 | + AProductID := tstrAUX2[1]; | |
| 95 | + | |
| 96 | + tstrAUX1.Free; | |
| 97 | + tstrAUX2.Free; | |
| 98 | + End; | |
| 99 | +end; | |
| 100 | + | |
| 101 | +procedure TUsbClass.Split(const Delimiter: Char; | |
| 102 | + Input: string; | |
| 103 | + const Strings: TStrings) ; | |
| 104 | +begin | |
| 105 | + Assert(Assigned(Strings)) ; | |
| 106 | + Strings.Clear; | |
| 107 | + Strings.Delimiter := Delimiter; | |
| 108 | + Strings.DelimitedText := Input; | |
| 109 | +end; | |
| 110 | + | |
| 111 | +procedure TUsbClass.WMDeviceChange(var AMessage : TMessage); | |
| 112 | +var iDevType : integer; | |
| 113 | + sDevString,sDevType, | |
| 114 | + sVendorID,sProductID : string; | |
| 115 | + pData : PDevBroadcastDeviceInterface; | |
| 116 | +begin | |
| 117 | + if (AMessage.wParam = USB_INSERTION) or | |
| 118 | + (AMessage.wParam = USB_REMOVAL) then | |
| 119 | + Begin | |
| 120 | + pData := PDevBroadcastDeviceInterface(AMessage.LParam); | |
| 121 | + iDevType := pData^.dbcc_devicetype; | |
| 122 | + | |
| 123 | + // Se for um dispositivo USB... | |
| 124 | + if iDevType = USB_INTERFACE then | |
| 125 | + Begin | |
| 126 | + sDevString := PChar(@pData^.dbcc_name); | |
| 127 | + | |
| 128 | + GetUsbInfo(sDevString,sDevType,sVendorID,sProductID); | |
| 129 | + | |
| 130 | + // O evento é disparado conforme a mensagem | |
| 131 | + if (AMessage.wParam = USB_INSERTION) and Assigned(FOnUsbInsertion) then | |
| 132 | + FOnUsbInsertion(self,sDevType,sVendorID,sProductID); | |
| 133 | + if (AMessage.wParam = USB_REMOVAL) and Assigned(FOnUsbRemoval) then | |
| 134 | + FOnUsbRemoval(self,sDevType,sVendorID,sProductID); | |
| 135 | + End; | |
| 136 | + End; | |
| 137 | +end; | |
| 138 | + | |
| 139 | +procedure TUsbClass.WinMethod(var AMessage : TMessage); | |
| 140 | +begin | |
| 141 | + if (AMessage.Msg = WM_DEVICECHANGE) then | |
| 142 | + WMDeviceChange(AMessage) | |
| 143 | + else | |
| 144 | + AMessage.Result := DefWindowProc(FHandle,AMessage.Msg, | |
| 145 | + AMessage.wParam,AMessage.lParam); | |
| 146 | +end; | |
| 147 | + | |
| 148 | + | |
| 149 | +procedure TUsbClass.RegisterUsbHandler; | |
| 150 | +var rDbi : DEV_BROADCAST_DEVICEINTERFACE; | |
| 151 | + iSize : integer; | |
| 152 | +begin | |
| 153 | + iSize := SizeOf(DEV_BROADCAST_DEVICEINTERFACE); | |
| 154 | + ZeroMemory(@rDbi,iSize); | |
| 155 | + rDbi.dbcc_size := iSize; | |
| 156 | + rDbi.dbcc_devicetype := USB_INTERFACE; | |
| 157 | + rDbi.dbcc_reserved := 0; | |
| 158 | + rDbi.dbcc_classguid := GUID_DEVINTF_USB_DEVICE; | |
| 159 | + rDbi.dbcc_name := #0; | |
| 160 | + RegisterDeviceNotification(FHandle,@rDbi,DEVICE_NOTIFY_WINDOW_HANDLE); | |
| 161 | +end; | |
| 162 | + | |
| 163 | + | |
| 164 | +end. | ... | ... |
cacic2.dpr
| ... | ... | @@ -26,7 +26,8 @@ uses |
| 26 | 26 | frmLog in 'frmLog.pas' {FormLog}, |
| 27 | 27 | LibXmlParser, |
| 28 | 28 | WinVNC in 'winvnc.pas', |
| 29 | - CACIC_Library in 'CACIC_Library.pas'; | |
| 29 | + CACIC_Library in 'CACIC_Library.pas', | |
| 30 | + USBdetectClass in 'USBdetectClass.pas'; | |
| 30 | 31 | |
| 31 | 32 | {$R *.res} |
| 32 | 33 | |
| ... | ... | @@ -62,5 +63,5 @@ begin |
| 62 | 63 | Application.Initialize; |
| 63 | 64 | Application.Title := 'cacic2'; |
| 64 | 65 | Application.CreateForm(TFormularioGeral, FormularioGeral); |
| 65 | - Application.Run; | |
| 66 | + Application.Run; | |
| 66 | 67 | end. | ... | ... |
cacic2.res
No preview for this file type
cacicservice/CACICsvc.cfg
| ... | ... | @@ -31,5 +31,6 @@ |
| 31 | 31 | -M |
| 32 | 32 | -$M16384,1048576 |
| 33 | 33 | -K$00400000 |
| 34 | --LE"c:\arquivos de programas\borland\delphi7\Projects\Bpl" | |
| 35 | --LN"c:\arquivos de programas\borland\delphi7\Projects\Bpl" | |
| 34 | +-E"..\" | |
| 35 | +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" | |
| 36 | +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" | ... | ... |
cacicservice/CACICsvc.dof
| ... | ... | @@ -90,7 +90,7 @@ MaxStackSize=1048576 |
| 90 | 90 | ImageBase=4194304 |
| 91 | 91 | ExeDescription= |
| 92 | 92 | [Directories] |
| 93 | -OutputDir= | |
| 93 | +OutputDir=..\ | |
| 94 | 94 | UnitOutputDir= |
| 95 | 95 | PackageDLLOutputDir= |
| 96 | 96 | PackageDCPOutputDir= |
| ... | ... | @@ -113,9 +113,9 @@ RootDir=E:\NTService\ |
| 113 | 113 | IncludeVerInfo=1 |
| 114 | 114 | AutoIncBuild=0 |
| 115 | 115 | MajorVer=2 |
| 116 | -MinorVer=5 | |
| 116 | +MinorVer=6 | |
| 117 | 117 | Release=0 |
| 118 | -Build=774 | |
| 118 | +Build=2 | |
| 119 | 119 | Debug=0 |
| 120 | 120 | PreRelease=0 |
| 121 | 121 | Special=0 |
| ... | ... | @@ -124,13 +124,19 @@ DLL=0 |
| 124 | 124 | Locale=11274 |
| 125 | 125 | CodePage=1252 |
| 126 | 126 | [Version Info Keys] |
| 127 | -CompanyName=Dataprev - Emp. de TI da Prev Social - URES | |
| 128 | -FileDescription=CACICservice - Módulo Serviço para Sustentação do Agente Principal | |
| 129 | -FileVersion=2.5.0.774 | |
| 127 | +CompanyName=Dataprev - Emp. de TI da Prev Social - UDSL/SSLC | |
| 128 | +FileDescription=Sistema CACIC - Módulo para Sustentação do Agente Principal | |
| 129 | +FileVersion=2.6.0.2 | |
| 130 | 130 | InternalName= |
| 131 | 131 | LegalCopyright= |
| 132 | 132 | LegalTrademarks= |
| 133 | 133 | OriginalFilename= |
| 134 | 134 | ProductName= |
| 135 | -ProductVersion=2.6 | |
| 136 | -Comments=Baseado na Licença GNU/GPL | |
| 135 | +ProductVersion=2.6.0.1 | |
| 136 | +Comments=Licença: GNU/LGPL | |
| 137 | +[HistoryLists\hlUnitAliases] | |
| 138 | +Count=1 | |
| 139 | +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; | |
| 140 | +[HistoryLists\hlOutputDirectorry] | |
| 141 | +Count=1 | |
| 142 | +Item0=..\ | ... | ... |
cacicservice/CACICsvc.res
No preview for this file type
chkcacic/chkcacic.res
No preview for this file type
chksis/chksis.res
No preview for this file type
col_anvi/col_anvi.dpr
| ... | ... | @@ -420,31 +420,31 @@ begin |
| 420 | 420 | Begin |
| 421 | 421 | g_oCacic.setCacicPath(strAux); |
| 422 | 422 | |
| 423 | - v_Debugs := false; | |
| 424 | - if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then | |
| 425 | - Begin | |
| 426 | - if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then | |
| 427 | - Begin | |
| 428 | - v_Debugs := true; | |
| 429 | - log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.'); | |
| 423 | + v_Debugs := false; | |
| 424 | + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then | |
| 425 | + Begin | |
| 426 | + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then | |
| 427 | + Begin | |
| 428 | + v_Debugs := true; | |
| 429 | + log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.'); | |
| 430 | + End; | |
| 430 | 431 | End; |
| 431 | - End; | |
| 432 | 432 | |
| 433 | - v_tstrCipherOpened := TStrings.Create; | |
| 434 | - v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + g_oCacic.getDatFileName); | |
| 433 | + v_tstrCipherOpened := TStrings.Create; | |
| 434 | + v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + g_oCacic.getDatFileName); | |
| 435 | 435 | |
| 436 | - v_tstrCipherOpened1 := TStrings.Create; | |
| 437 | - v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_anvi.dat'); | |
| 436 | + v_tstrCipherOpened1 := TStrings.Create; | |
| 437 | + v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_anvi.dat'); | |
| 438 | 438 | |
| 439 | - Try | |
| 440 | - Executa_Col_Anvi; | |
| 441 | - Except | |
| 442 | - Begin | |
| 443 | - SetValorDatMemoria('Col_Anvi.nada', 'nada', v_tstrCipherOpened1); | |
| 444 | - CipherClose(g_oCacic.getCacicPath + 'temp\col_anvi.dat', v_tstrCipherOpened1); | |
| 445 | - End; | |
| 446 | - End; | |
| 439 | + Try | |
| 440 | + Executa_Col_Anvi; | |
| 441 | + Except | |
| 442 | + Begin | |
| 443 | + SetValorDatMemoria('Col_Anvi.nada', 'nada', v_tstrCipherOpened1); | |
| 444 | + CipherClose(g_oCacic.getCacicPath + 'temp\col_anvi.dat', v_tstrCipherOpened1); | |
| 445 | + End; | |
| 446 | + End; | |
| 447 | + End; | |
| 447 | 448 | End; |
| 448 | - End; | |
| 449 | 449 | g_oCacic.Free(); |
| 450 | 450 | end. | ... | ... |
col_comp/col_comp.res
No preview for this file type
col_hard/col_hard.dpr
| ... | ... | @@ -48,8 +48,6 @@ var |
| 48 | 48 | intAux : integer; |
| 49 | 49 | g_oCacic : TCACIC; |
| 50 | 50 | |
| 51 | -const | |
| 52 | - CACIC_APP_NAME = 'col_hard'; | |
| 53 | 51 | |
| 54 | 52 | // Dica baixada de http://www.marcosdellantonio.net/2007/06/14/operador-if-ternario-em-delphi-e-c/ |
| 55 | 53 | // Fiz isso para não ter que acrescentar o componente Math ao USES! |
| ... | ... | @@ -538,6 +536,16 @@ var v_te_cpu_fabricante, |
| 538 | 536 | |
| 539 | 537 | begin |
| 540 | 538 | |
| 539 | + v_Debugs := false; | |
| 540 | + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then | |
| 541 | + Begin | |
| 542 | + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then | |
| 543 | + Begin | |
| 544 | + v_Debugs := true; | |
| 545 | + //log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.'); | |
| 546 | + End; | |
| 547 | + End; | |
| 548 | + | |
| 541 | 549 | Try |
| 542 | 550 | SetValorDatMemoria('Col_Hard.Inicio', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); |
| 543 | 551 | v_Report := TStringList.Create; |
| ... | ... | @@ -973,51 +981,48 @@ begin |
| 973 | 981 | g_oCacic.Free(); |
| 974 | 982 | end; |
| 975 | 983 | |
| 976 | -var strAux : String; | |
| 984 | +// ATENÇÃO: Caso haja falha na execução deste agente pela estação de trabalho, | |
| 985 | +// a provável causa será a falta da Runtime Library RTL70.BPL, que | |
| 986 | +// costuma ser "confundida" com vírus e apagada por alguns anti-vírus | |
| 987 | +// como o Avasti. | |
| 988 | +// SOLUÇÃO: Baixar a partir do endereço http://nwvault.ign.com/View.php?view=Other.Detail&id=119 o pacote | |
| 989 | +// D70_Installer.zip, descompactar e executar na estação de trabalho. | |
| 990 | +var strAux : String; | |
| 991 | +const CACIC_APP_NAME = 'col_hard'; | |
| 977 | 992 | begin |
| 978 | 993 | g_oCacic := TCACIC.Create(); |
| 979 | - | |
| 980 | 994 | g_oCacic.setBoolCipher(true); |
| 981 | 995 | |
| 982 | 996 | if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then |
| 983 | - if (ParamCount>0) then | |
| 984 | - Begin | |
| 985 | - strAux := ''; | |
| 986 | - For intAux := 1 to ParamCount do | |
| 987 | - Begin | |
| 988 | - if LowerCase(Copy(ParamStr(intAux),1,11)) = '/cacicpath=' then | |
| 989 | - begin | |
| 990 | - strAux := Trim(Copy(ParamStr(intAux),12,Length((ParamStr(intAux))))); | |
| 991 | - log_DEBUG('Parâmetro /CacicPath recebido com valor="'+strAux+'"'); | |
| 992 | - end; | |
| 993 | - end; | |
| 994 | - | |
| 995 | - if (strAux <> '') then | |
| 996 | - Begin | |
| 997 | - g_oCacic.setCacicPath(strAux); | |
| 997 | + if (ParamCount>0) then | |
| 998 | + Begin | |
| 999 | + strAux := ''; | |
| 1000 | + For intAux := 1 to ParamCount do | |
| 1001 | + Begin | |
| 1002 | + if LowerCase(Copy(ParamStr(intAux),1,11)) = '/cacicpath=' then | |
| 1003 | + begin | |
| 1004 | + strAux := Trim(Copy(ParamStr(intAux),12,Length((ParamStr(intAux))))); | |
| 1005 | + //log_DEBUG('Parâmetro /CacicPath recebido com valor="'+strAux+'"'); | |
| 1006 | + end; | |
| 1007 | + end; | |
| 998 | 1008 | |
| 999 | - v_tstrCipherOpened := TStrings.Create; | |
| 1000 | - v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + g_oCacic.getDatFileName); | |
| 1009 | + if (strAux <> '') then | |
| 1010 | + Begin | |
| 1011 | + g_oCacic.setCacicPath(strAux); | |
| 1001 | 1012 | |
| 1002 | - v_tstrCipherOpened1 := TStrings.Create; | |
| 1003 | - v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_hard.dat'); | |
| 1013 | + v_tstrCipherOpened := TStrings.Create; | |
| 1014 | + v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + g_oCacic.getDatFileName); | |
| 1004 | 1015 | |
| 1005 | - Try | |
| 1006 | - v_Debugs := false; | |
| 1007 | - if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then | |
| 1008 | - Begin | |
| 1009 | - if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then | |
| 1010 | - Begin | |
| 1011 | - v_Debugs := true; | |
| 1012 | - log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.'); | |
| 1013 | - End; | |
| 1014 | - End; | |
| 1015 | - Executa_Col_Hard; | |
| 1016 | - Except | |
| 1017 | - SetValorDatMemoria('Col_Hard.nada', 'nada', v_tstrCipherOpened1); | |
| 1018 | - CipherClose(g_oCacic.getCacicPath + 'temp\col_hard.dat', v_tstrCipherOpened1); | |
| 1019 | - End; | |
| 1020 | - End; | |
| 1021 | - End; | |
| 1016 | + v_tstrCipherOpened1 := TStrings.Create; | |
| 1017 | + v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_hard.dat'); | |
| 1022 | 1018 | |
| 1019 | + Try | |
| 1020 | + Executa_Col_Hard; | |
| 1021 | + Except | |
| 1022 | + SetValorDatMemoria('Col_Hard.nada', 'nada', v_tstrCipherOpened1); | |
| 1023 | + CipherClose(g_oCacic.getCacicPath + 'temp\col_hard.dat', v_tstrCipherOpened1); | |
| 1024 | + End; | |
| 1025 | + Halt(0); | |
| 1026 | + End; | |
| 1027 | + End; | |
| 1023 | 1028 | end. | ... | ... |
col_hard/col_hard.res
No preview for this file type
col_moni/col_moni.res
No preview for this file type
col_patr/col_patr.res
No preview for this file type
col_soft/col_soft.dpr
| ... | ... | @@ -480,12 +480,15 @@ end; |
| 480 | 480 | |
| 481 | 481 | procedure Executa_Col_Soft; |
| 482 | 482 | var te_versao_mozilla, te_versao_ie, te_versao_jre, te_versao_acrobat_reader, |
| 483 | - UVC,ValorChaveRegistro, te_inventario_softwares, te_variaveis_ambiente : String; | |
| 483 | + UVC,ValorChaveRegistro, te_inventario_softwares, te_variaveis_ambiente, | |
| 484 | + strDisplayName, | |
| 485 | + strKeyName : String; | |
| 484 | 486 | InfoSoft, v_Report : TStringList; |
| 485 | 487 | i : integer; |
| 486 | 488 | v_SOFTWARE : TMiTeC_Software; |
| 487 | 489 | v_ENGINES : TMiTeC_Engines; |
| 488 | 490 | v_OS : TMiTeC_OperatingSystem; |
| 491 | + registrySoftwares : TRegistry; | |
| 489 | 492 | begin |
| 490 | 493 | Try |
| 491 | 494 | log_diario('Coletando informações de Softwares Básicos.'); |
| ... | ... | @@ -495,44 +498,112 @@ begin |
| 495 | 498 | te_versao_jre := GetVersaoJRE; |
| 496 | 499 | te_versao_acrobat_reader := GetVersaoAcrobatReader; |
| 497 | 500 | te_inventario_softwares := ''; |
| 501 | + InfoSoft := TStringList.Create; | |
| 498 | 502 | |
| 499 | - Try | |
| 500 | - InfoSoft := TStringList.Create; | |
| 501 | - v_SOFTWARE := TMiTeC_Software.Create(nil); | |
| 502 | - v_SOFTWARE.RefreshData; | |
| 503 | - MSI_XML_Reports.Software_XML_Report(v_SOFTWARE,true,InfoSoft); | |
| 503 | + if not g_oCacic.isWindowsGEVista then | |
| 504 | + Begin | |
| 505 | + Try | |
| 506 | + v_SOFTWARE := TMiTeC_Software.Create(nil); | |
| 507 | + v_SOFTWARE.RefreshData; | |
| 508 | + MSI_XML_Reports.Software_XML_Report(v_SOFTWARE,true,InfoSoft); | |
| 509 | + | |
| 510 | + // Caso exista a pasta ..temp/debugs, será criado o arquivo diário debug_<coletor>.txt | |
| 511 | + // Usar esse recurso apenas para debug de coletas mal-sucedidas através do componente MSI-Mitec. | |
| 512 | + if v_Debugs then | |
| 513 | + Begin | |
| 514 | + v_Report := TStringList.Create; | |
| 504 | 515 | |
| 505 | - // Caso exista a pasta ..temp/debugs, será criado o arquivo diário debug_<coletor>.txt | |
| 506 | - // Usar esse recurso apenas para debug de coletas mal-sucedidas através do componente MSI-Mitec. | |
| 507 | - if v_Debugs then | |
| 508 | - Begin | |
| 509 | - v_Report := TStringList.Create; | |
| 516 | + MSI_XML_Reports.Software_XML_Report(v_SOFTWARE,true,v_Report); | |
| 517 | + v_SOFTWARE.Free; | |
| 510 | 518 | |
| 511 | - MSI_XML_Reports.Software_XML_Report(v_SOFTWARE,true,v_Report); | |
| 512 | - v_SOFTWARE.Free; | |
| 519 | + v_OS := TMiTeC_OperatingSystem.Create(nil); | |
| 520 | + v_OS.RefreshData; | |
| 513 | 521 | |
| 514 | - v_OS := TMiTeC_OperatingSystem.Create(nil); | |
| 515 | - v_OS.RefreshData; | |
| 522 | + MSI_XML_Reports.OperatingSystem_XML_Report(v_OS,true,v_Report); | |
| 523 | + v_OS.Free; | |
| 524 | + End | |
| 516 | 525 | |
| 517 | - MSI_XML_Reports.OperatingSystem_XML_Report(v_OS,true,v_Report); | |
| 518 | - v_OS.Free; | |
| 519 | - End | |
| 526 | + except | |
| 527 | + log_diario('Problema em Software Report!'); | |
| 528 | + end; | |
| 520 | 529 | |
| 521 | - except | |
| 522 | - log_diario('Problema em Software Report!'); | |
| 523 | - end; | |
| 530 | + for i := 0 to v_SOFTWARE.Count - 1 do | |
| 531 | + begin | |
| 532 | + if (trim(Copy(InfoSoft[i],1,14))='<section name=') then | |
| 533 | + Begin | |
| 534 | + if (te_inventario_softwares <> '') then | |
| 535 | + te_inventario_softwares := te_inventario_softwares + '#'; | |
| 536 | + te_inventario_softwares := te_inventario_softwares + Copy(InfoSoft[i],16,Pos('">',InfoSoft[i])-16); | |
| 537 | + End; | |
| 538 | + end; | |
| 539 | + | |
| 540 | + v_SOFTWARE.Free; | |
| 541 | + end | |
| 542 | + else | |
| 543 | + Begin | |
| 544 | + // Chave para 64Bits | |
| 545 | + strKeyName := 'Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'; | |
| 546 | + | |
| 547 | + registrySoftwares := TRegistry.Create; | |
| 548 | + with registrySoftwares do | |
| 549 | + begin | |
| 550 | + RootKey:=HKEY_LOCAL_MACHINE; | |
| 551 | + if OpenKey(strKeyName,False)=True then GetKeyNames(InfoSoft); | |
| 552 | + CloseKey; | |
| 553 | + | |
| 554 | + for i:=0 to InfoSoft.Count-1 do | |
| 555 | + begin | |
| 556 | + RootKey:=HKEY_LOCAL_MACHINE; | |
| 557 | + OpenKey(strKeyName + '\'+InfoSoft[i],False); | |
| 558 | + strDisplayName := ReadString('DisplayName'); | |
| 559 | + if (strDisplayName <> '') then | |
| 560 | + Begin | |
| 561 | + if (Copy(strDisplayName,1,1)='{') then | |
| 562 | + begin | |
| 563 | + OpenKey(strKeyName + '\'+InfoSoft[i]+'\'+strDisplayName,False); | |
| 564 | + strDisplayName := ReadString('DisplayName'); | |
| 565 | + end; | |
| 566 | + | |
| 567 | + if (te_inventario_softwares <> '') then | |
| 568 | + te_inventario_softwares := te_inventario_softwares + '#'; | |
| 569 | + te_inventario_softwares := te_inventario_softwares + strDisplayName; | |
| 570 | + end; | |
| 571 | + CloseKey; | |
| 572 | + end; | |
| 573 | + end; | |
| 574 | + | |
| 575 | + // Caso a consulta acima tenha retornado vazio, tentarei a chave para 32Bits | |
| 576 | + strKeyName := 'Software\Microsoft\Windows\CurrentVersion\Uninstall'; | |
| 524 | 577 | |
| 525 | - for i := 0 to v_SOFTWARE.Count - 1 do | |
| 526 | - begin | |
| 527 | - if (trim(Copy(InfoSoft[i],1,14))='<section name=') then | |
| 578 | + with registrySoftwares do | |
| 579 | + begin | |
| 580 | + RootKey:=HKEY_LOCAL_MACHINE; | |
| 581 | + if OpenKey(strKeyName,False)=True then GetKeyNames(InfoSoft); | |
| 582 | + CloseKey; | |
| 583 | + | |
| 584 | + for i:=0 to InfoSoft.Count-1 do | |
| 585 | + begin | |
| 586 | + RootKey:=HKEY_LOCAL_MACHINE; | |
| 587 | + OpenKey(strKeyName + '\'+InfoSoft[i],False); | |
| 588 | + strDisplayName := ReadString('DisplayName'); | |
| 589 | + if (strDisplayName <> '') then | |
| 528 | 590 | Begin |
| 591 | + if (Copy(strDisplayName,1,1)='{') then | |
| 592 | + begin | |
| 593 | + OpenKey(strKeyName + '\'+InfoSoft[i]+'\'+strDisplayName,False); | |
| 594 | + strDisplayName := ReadString('DisplayName'); | |
| 595 | + end; | |
| 596 | + | |
| 529 | 597 | if (te_inventario_softwares <> '') then |
| 530 | - te_inventario_softwares := te_inventario_softwares + '#'; | |
| 531 | - te_inventario_softwares := te_inventario_softwares + Copy(InfoSoft[i],16,Pos('">',InfoSoft[i])-16); | |
| 532 | - End; | |
| 533 | - end; | |
| 598 | + te_inventario_softwares := te_inventario_softwares + '#'; | |
| 599 | + te_inventario_softwares := te_inventario_softwares + strDisplayName; | |
| 600 | + end; | |
| 601 | + CloseKey; | |
| 602 | + end; | |
| 603 | + end; | |
| 534 | 604 | |
| 535 | - v_SOFTWARE.Free; | |
| 605 | + // | |
| 606 | + end; | |
| 536 | 607 | |
| 537 | 608 | try |
| 538 | 609 | te_inventario_softwares := AnsiToAscii(te_inventario_softwares); | ... | ... |
col_soft/col_soft.res
No preview for this file type
col_undi/col_undi.res
No preview for this file type
frmsenha.dfm
ger_cols/ger_cols.dpr
| ... | ... | @@ -56,6 +56,7 @@ var |
| 56 | 56 | v_Endereco_Servidor, |
| 57 | 57 | v_Aux, |
| 58 | 58 | strAux, |
| 59 | + strUSBinfo, | |
| 59 | 60 | endereco_servidor_cacic, |
| 60 | 61 | v_ModulosOpcoes, |
| 61 | 62 | v_ResultCompress, |
| ... | ... | @@ -328,6 +329,7 @@ var v_strCipherOpenImploded, |
| 328 | 329 | v_DatFileDebug : TextFile; |
| 329 | 330 | v_cs_cipher : boolean; |
| 330 | 331 | begin |
| 332 | + log_DEBUG('CipherClose: datFileName="' + g_oCacic.getDatFileName + '"'); | |
| 331 | 333 | try |
| 332 | 334 | FileSetAttr (p_DatFileName,0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000 |
| 333 | 335 | AssignFile(v_DatFile,p_DatFileName); {Associa o arquivo a uma variável do tipo TextFile} |
| ... | ... | @@ -347,6 +349,7 @@ begin |
| 347 | 349 | {$IOChecks on} |
| 348 | 350 | Append(v_DatFileDebug); |
| 349 | 351 | End; |
| 352 | + log_DEBUG('CipherClose: separatorKey="' + g_oCacic.getSeparatorKey + '"'); | |
| 350 | 353 | |
| 351 | 354 | v_strCipherOpenImploded := g_oCacic.implode(p_tstrCipherOpened,g_oCacic.getSeparatorKey); |
| 352 | 355 | |
| ... | ... | @@ -2277,10 +2280,10 @@ Begin |
| 2277 | 2280 | SetValorDatMemoria('Configs.te_palavra_chave',strAux, v_tstrCipherOpened); |
| 2278 | 2281 | |
| 2279 | 2282 | // Verifico se srCACIC está em execução e em caso positivo entrego a chave atualizada |
| 2280 | - Matar(g_oCacic.getCacicPath+'Temp\','aguarde_SRCACIC.txt'); | |
| 2281 | - sleep(2000); | |
| 2282 | - if (FileExists(g_oCacic.getCacicPath + 'Temp\aguarde_SRCACIC.txt')) then | |
| 2283 | - Begin | |
| 2283 | + //Matar(g_oCacic.getCacicPath+'Temp\','aguarde_SRCACIC.txt'); | |
| 2284 | + //sleep(2000); | |
| 2285 | + //if (FileExists(g_oCacic.getCacicPath + 'Temp\aguarde_SRCACIC.txt')) then | |
| 2286 | + // Begin | |
| 2284 | 2287 | // Alguns cuidados necessários ao tráfego e recepção de valores pelo Gerente WEB |
| 2285 | 2288 | // Some cares about send and receive at Gerente WEB |
| 2286 | 2289 | v_Aux := StringReplace(strAux ,' ' ,'<ESPACE>' ,[rfReplaceAll]); |
| ... | ... | @@ -2296,7 +2299,7 @@ Begin |
| 2296 | 2299 | Append(v_txtCookie); |
| 2297 | 2300 | Writeln(v_txtCookie,v_Aux); |
| 2298 | 2301 | CloseFile(v_txtCookie); |
| 2299 | - End; | |
| 2302 | + // End; | |
| 2300 | 2303 | |
| 2301 | 2304 | |
| 2302 | 2305 | Request_SVG.Values['te_palavra_chave'] := g_oCacic.enCrypt(strAux); |
| ... | ... | @@ -2495,7 +2498,8 @@ Begin |
| 2495 | 2498 | end; |
| 2496 | 2499 | |
| 2497 | 2500 | procedure Executa_Ger_Cols; |
| 2498 | -var strDtHrColetaForcada, | |
| 2501 | +var strRetorno, | |
| 2502 | + strDtHrColetaForcada, | |
| 2499 | 2503 | strDtHrUltimaColeta : String; |
| 2500 | 2504 | Begin |
| 2501 | 2505 | Try |
| ... | ... | @@ -2505,6 +2509,7 @@ Begin |
| 2505 | 2509 | // /coletas => Chamada para ativação das coletas |
| 2506 | 2510 | // /recuperaSR => Chamada para tentativa de recuperação do módulo srCACIC |
| 2507 | 2511 | // /patrimonio => Chamada para ativação do Formulário de Patrimônio |
| 2512 | + // USBinfo => Informação sobre dispositivo USB inserido/removido | |
| 2508 | 2513 | // UpdatePrincipal => Atualização do Agente Principal |
| 2509 | 2514 | // Chamada com parâmetros pelo chkcacic.exe ou linha de comando |
| 2510 | 2515 | // Chamada efetuada pelo Cacic2.exe quando da existência de temp\cacic2.exe para AutoUpdate |
| ... | ... | @@ -2552,6 +2557,34 @@ Begin |
| 2552 | 2557 | Sair; |
| 2553 | 2558 | End; |
| 2554 | 2559 | |
| 2560 | + strUSBinfo := ''; | |
| 2561 | + | |
| 2562 | + // Chamada com informação de dispositivo USB inserido/removido | |
| 2563 | + For intAux := 1 to ParamCount do | |
| 2564 | + If LowerCase(Copy(ParamStr(intAux),1,9)) = '/usbinfo=' then | |
| 2565 | + strUSBinfo := Trim(Copy(ParamStr(intAux),10,Length((ParamStr(intAux))))); | |
| 2566 | + | |
| 2567 | + // Envio da informação sobre o dispositivo USB ao Gerente WEB | |
| 2568 | + if (strUSBinfo <> '') then | |
| 2569 | + begin | |
| 2570 | + log_DEBUG('Parâmetro USBinfo recebido: "'+strUSBinfo+'"'); | |
| 2571 | + v_acao_gercols := 'Informando ao Gerente WEB sobre dispositivo USB inserido/removido.'; | |
| 2572 | + | |
| 2573 | + ChecaCipher; | |
| 2574 | + ChecaCompress; | |
| 2575 | + | |
| 2576 | + Request_Ger_Cols := TStringList.Create; | |
| 2577 | + log_DEBUG('Preparando para criptografar "'+strUSBinfo+'"'); | |
| 2578 | + Request_Ger_Cols.Values['te_usb_info'] := StringReplace(g_oCacic.enCrypt(strUSBinfo),'+','<MAIS>',[rfReplaceAll]); | |
| 2579 | + log_DEBUG('Preparando para empacotar "'+Request_Ger_Cols.Values['te_usb_info']+'"'); | |
| 2580 | + strRetorno := ComunicaServidor('set_usbinfo.php', Request_Ger_Cols, '>> Enviando informações sobre ' + IfThen(Copy(strUSBinfo,1,1)='I','Inserção','Remoção')+ ' de dispositivo USB ao Gerente WEB!'); | |
| 2581 | + if (g_oCacic.deCrypt(XML_RetornaValor('nm_device', strRetorno)) <> '') then | |
| 2582 | + log_diario('Dispositivo USB ' + IfThen(Copy(strUSBinfo,1,1)='I','Inserido','Removido')+': "' + g_oCacic.deCrypt(XML_RetornaValor('nm_device', strRetorno)+'"')+'"'); | |
| 2583 | + Request_Ger_Cols.Free; | |
| 2584 | + | |
| 2585 | + Finalizar(true); | |
| 2586 | + end; | |
| 2587 | + | |
| 2555 | 2588 | For intAux := 1 to ParamCount do |
| 2556 | 2589 | Begin |
| 2557 | 2590 | if LowerCase(Copy(ParamStr(intAux),1,15)) = '/ip_serv_cacic=' then |
| ... | ... | @@ -2656,7 +2689,9 @@ Begin |
| 2656 | 2689 | Finalizar(false); |
| 2657 | 2690 | Sair; |
| 2658 | 2691 | End; |
| 2659 | - End; | |
| 2692 | + End | |
| 2693 | + else | |
| 2694 | + log_Diario('Indicador CS_AUTO_UPDATE="N". O recomendado é que esteja em "S" no Gerente WEB!'); | |
| 2660 | 2695 | |
| 2661 | 2696 | if ((GetValorDatMemoria('Configs.CS_COLETA_HARDWARE' , v_tstrCipherOpened) = 'S') or |
| 2662 | 2697 | (GetValorDatMemoria('Configs.CS_COLETA_SOFTWARE' , v_tstrCipherOpened) = 'S') or |
| ... | ... | @@ -3272,15 +3307,28 @@ Begin |
| 3272 | 3307 | // g_oCacic.Free; |
| 3273 | 3308 | End; |
| 3274 | 3309 | |
| 3310 | +procedure CriaCookie; | |
| 3311 | +Begin | |
| 3312 | + // A existência e bloqueio do arquivo abaixo evitará que Cacic2.exe chame o Ger_Cols quando este estiver em funcionamento | |
| 3313 | + AssignFile(v_Aguarde,g_oCacic.getCacicPath + 'temp\aguarde_GER.txt'); {Associa o arquivo a uma variável do tipo TextFile} | |
| 3314 | + {$IOChecks off} | |
| 3315 | + Reset(v_Aguarde); {Abre o arquivo texto} | |
| 3316 | + {$IOChecks on} | |
| 3317 | + if (IOResult <> 0) then // Arquivo não existe, será recriado. | |
| 3318 | + Rewrite (v_Aguarde); | |
| 3319 | + | |
| 3320 | + Append(v_Aguarde); | |
| 3321 | + Writeln(v_Aguarde,'Apenas um pseudo-cookie para o Cacic2 esperar o término de Ger_Cols'); | |
| 3322 | + Append(v_Aguarde); | |
| 3323 | +End; | |
| 3324 | + | |
| 3275 | 3325 | begin |
| 3276 | 3326 | g_oCacic := TCACIC.Create(); |
| 3277 | - | |
| 3278 | 3327 | if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then |
| 3279 | 3328 | begin |
| 3280 | 3329 | if ParamCount > 0 then |
| 3281 | 3330 | Begin |
| 3282 | 3331 | strAux := ''; |
| 3283 | - | |
| 3284 | 3332 | For intAux := 1 to ParamCount do |
| 3285 | 3333 | Begin |
| 3286 | 3334 | if (LowerCase(Copy(ParamStr(intAux),1,11)) = '/cacicpath=') then |
| ... | ... | @@ -3322,18 +3370,8 @@ begin |
| 3322 | 3370 | log_DEBUG('Te_So obtido: "' + g_oCacic.getWindowsStrId() +'"'); |
| 3323 | 3371 | |
| 3324 | 3372 | v_scripter := 'wscript.exe'; |
| 3325 | - // A existência e bloqueio do arquivo abaixo evitará que Cacic2.exe chame o Ger_Cols quando este estiver em funcionamento | |
| 3326 | - AssignFile(v_Aguarde,g_oCacic.getCacicPath + 'temp\aguarde_GER.txt'); {Associa o arquivo a uma variável do tipo TextFile} | |
| 3327 | - {$IOChecks off} | |
| 3328 | - Reset(v_Aguarde); {Abre o arquivo texto} | |
| 3329 | - {$IOChecks on} | |
| 3330 | - if (IOResult <> 0) then // Arquivo não existe, será recriado. | |
| 3331 | - Rewrite (v_Aguarde); | |
| 3332 | - | |
| 3333 | - Append(v_Aguarde); | |
| 3334 | - Writeln(v_Aguarde,'Apenas um pseudo-cookie para o Cacic2 esperar o término de Ger_Cols'); | |
| 3335 | - Append(v_Aguarde); | |
| 3336 | 3373 | |
| 3374 | + CriaCookie; | |
| 3337 | 3375 | ChecaCipher; |
| 3338 | 3376 | ChecaCompress; |
| 3339 | 3377 | ... | ... |
ger_cols/ger_cols.res
No preview for this file type
ini_cols/ini_cols.dpr
| ... | ... | @@ -324,6 +324,7 @@ begin |
| 324 | 324 | log_DEBUG('Chamando "' + v_tstrModuloOpcao[0]+'.exe " /p_Option='+v_tstrModuloOpcao[2]); |
| 325 | 325 | |
| 326 | 326 | g_oCacic.createSampleProcess( g_oCacic.getCacicPath + '\modulos\' + strAux, CACIC_PROCESS_WAIT ); |
| 327 | + Sleep(500); | |
| 327 | 328 | End; |
| 328 | 329 | except |
| 329 | 330 | end; | ... | ... |
ini_cols/ini_cols.res
No preview for this file type
main.dfm
| 1 | 1 | object FormularioGeral: TFormularioGeral |
| 2 | - Left = 301 | |
| 3 | - Top = 108 | |
| 2 | + Left = 300 | |
| 3 | + Top = 107 | |
| 4 | 4 | HorzScrollBar.Visible = False |
| 5 | 5 | VertScrollBar.Visible = False |
| 6 | 6 | BiDiMode = bdLeftToRight |
| ... | ... | @@ -155,7 +155,7 @@ object FormularioGeral: TFormularioGeral |
| 155 | 155 | Height = 16 |
| 156 | 156 | BevelInner = bvLowered |
| 157 | 157 | BevelOuter = bvLowered |
| 158 | - Caption = 'v. 2.4.0.xxx' | |
| 158 | + Caption = 'v. 2.6.0.xxx' | |
| 159 | 159 | Color = clBackground |
| 160 | 160 | Font.Charset = DEFAULT_CHARSET |
| 161 | 161 | Font.Color = clWhite | ... | ... |
main.pas
| ... | ... | @@ -39,7 +39,8 @@ uses |
| 39 | 39 | Buttons, |
| 40 | 40 | CACIC_Library, |
| 41 | 41 | ImgList, |
| 42 | - Graphics; | |
| 42 | + Graphics, | |
| 43 | + USBdetectClass; | |
| 43 | 44 | |
| 44 | 45 | //IdTCPServer; |
| 45 | 46 | //IdFTPServer; |
| ... | ... | @@ -211,9 +212,12 @@ type |
| 211 | 212 | procedure Popup_Menu_ContextoPopup(Sender: TObject); |
| 212 | 213 | procedure Timer_InicializaTrayTimer(Sender: TObject); |
| 213 | 214 | private |
| 215 | + FUsb : TUsbClass; | |
| 214 | 216 | ShutdownEmExecucao : Boolean; |
| 215 | 217 | IsMenuOpen : Boolean; |
| 216 | 218 | NotifyStruc : TNotifyIconData; {Estrutura do tray icon} |
| 219 | + procedure UsbIN(ASender : TObject; const ADevType,AVendorID,ADeviceID : string); | |
| 220 | + procedure UsbOUT(ASender : TObject; const ADevType,AVendorID,ADeviceID : string); | |
| 217 | 221 | procedure InicializaTray; |
| 218 | 222 | procedure Finaliza; |
| 219 | 223 | procedure VerificaDebugs; |
| ... | ... | @@ -221,7 +225,7 @@ type |
| 221 | 225 | Function RetornaValorVetorUON1(id1 : string) : String; |
| 222 | 226 | Function RetornaValorVetorUON1a(id1a : string) : String; |
| 223 | 227 | Function RetornaValorVetorUON2(id2, idLocal: string) : String; |
| 224 | - procedure Invoca_GerCols(p_acao:string); | |
| 228 | + procedure Invoca_GerCols(p_acao:string; boolShowInfo : Boolean = true); | |
| 225 | 229 | function GetVersionInfo(p_File: string):string; |
| 226 | 230 | function VerFmt(const MS, LS: DWORD): string; |
| 227 | 231 | procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; |
| ... | ... | @@ -327,6 +331,29 @@ begin |
| 327 | 331 | end; |
| 328 | 332 | inherited; |
| 329 | 333 | end; |
| 334 | + | |
| 335 | +// Início de Procedimentos para monitoramento de dispositivos USB - Anderson Peterle - 02/2010 | |
| 336 | +procedure TFormularioGeral.UsbIN(ASender : TObject; const ADevType,AVendorID,ADeviceID : string); | |
| 337 | +begin | |
| 338 | + // Envio de valores ao Gerente WEB | |
| 339 | + // Formato: USBinfo=I_ddmmyyyyhhnnss_ADeviceID | |
| 340 | + // Os valores serão armazenados localmente (cacic2.dat) se for impossível o envio. | |
| 341 | + Log_Debug('<< USB INSERIDO .:. Vendor ID => ' + AVendorID + ' .:. Device ID = ' + ADeviceID); | |
| 342 | + Invoca_GerCols('USBinfo=I_'+FormatDateTime('yyyymmddhhnnss', now) + '_' + AVendorID + '_' + ADeviceID,false); | |
| 343 | +end; | |
| 344 | + | |
| 345 | + | |
| 346 | +procedure TFormularioGeral.UsbOUT(ASender : TObject; const ADevType,AVendorID,ADeviceID : string); | |
| 347 | +begin | |
| 348 | + // Envio de valores ao Gerente WEB | |
| 349 | + // Formato: USBinfo=O_ddmmyyyyhhnnss_ADeviceID | |
| 350 | + // Os valores serão armazenados localmente (cacic2.dat) se for impossível o envio. | |
| 351 | + Log_Debug('>> USB REMOVIDO .:. Vendor ID => ' + AVendorID + ' .:. Device ID = ' + ADeviceID); | |
| 352 | + Invoca_GerCols('USBinfo=O_'+FormatDateTime('yyyymmddhhnnss', now) + '_' + AVendorID + '_' + ADeviceID,false); | |
| 353 | +end; | |
| 354 | + | |
| 355 | +// Fim de Procedimentos para monitoramento de dispositivos USB - Anderson Peterle - 02/2010 | |
| 356 | + | |
| 330 | 357 | procedure TFormularioGeral.MontaVetoresPatrimonio(p_strConfigs : String); |
| 331 | 358 | var Parser : TXmlParser; |
| 332 | 359 | i : integer; |
| ... | ... | @@ -1231,6 +1258,11 @@ var strAux, |
| 1231 | 1258 | v_SystemDrive : TStrings; |
| 1232 | 1259 | begin |
| 1233 | 1260 | |
| 1261 | + // Criação do objeto para monitoramento de dispositivos USB | |
| 1262 | + FUsb := TUsbClass.Create; | |
| 1263 | + FUsb.OnUsbInsertion := UsbIN; | |
| 1264 | + FUsb.OnUsbRemoval := UsbOUT; | |
| 1265 | + | |
| 1234 | 1266 | // Essas variáveis ajudarão a controlar o redesenho do ícone no systray, |
| 1235 | 1267 | // evitando o "roubo" do foco. |
| 1236 | 1268 | g_intTaskBarAtual := 0; |
| ... | ... | @@ -1516,6 +1548,7 @@ Begin |
| 1516 | 1548 | log_diario('PROBLEMAS NA FINALIZAÇÃO'); |
| 1517 | 1549 | End; |
| 1518 | 1550 | g_oCacic.Free; |
| 1551 | + FreeAndNil(FUsb); | |
| 1519 | 1552 | FreeMemory(0); |
| 1520 | 1553 | Application.Terminate; |
| 1521 | 1554 | End; |
| ... | ... | @@ -1527,7 +1560,7 @@ begin |
| 1527 | 1560 | If (getValorDatMemoria('Configs.SJI',v_tstrCipherOpened) = 'S') Then Finaliza; |
| 1528 | 1561 | end; |
| 1529 | 1562 | |
| 1530 | -procedure TFormularioGeral.Invoca_GerCols(p_acao:string); | |
| 1563 | +procedure TFormularioGeral.Invoca_GerCols(p_acao:string; boolShowInfo : Boolean = true); | |
| 1531 | 1564 | begin |
| 1532 | 1565 | Matar(g_oCacic.getCacicPath + 'temp\','*.txt'); |
| 1533 | 1566 | Matar(g_oCacic.getCacicPath + 'temp\','*.ini'); |
| ... | ... | @@ -1535,12 +1568,17 @@ begin |
| 1535 | 1568 | // Caso exista o Gerente de Coletas será verificada a versão e excluída caso antiga(Uma forma de ação pró-ativa) |
| 1536 | 1569 | if ChecaGERCOLS then |
| 1537 | 1570 | Begin |
| 1571 | + Timer_InicializaTray.Enabled := False; | |
| 1538 | 1572 | ChecaCONFIGS; |
| 1539 | 1573 | CipherClose; |
| 1540 | - log_diario('Invocando Gerente de Coletas com ação: "'+p_acao+'"'); | |
| 1574 | + if boolShowInfo then | |
| 1575 | + log_diario('Invocando Gerente de Coletas com ação: "'+p_acao+'"') | |
| 1576 | + else | |
| 1577 | + log_DEBUG('Invocando Gerente de Coletas com ação: "'+p_acao+'"'); | |
| 1541 | 1578 | Timer_Nu_Exec_Apos.Enabled := False; |
| 1542 | - Log_DEBUG('Criando Processo Ger_Cols...'); | |
| 1579 | + Log_DEBUG('Criando Processo Ger_Cols => "'+g_oCacic.getCacicPath + 'modulos\GER_COLS.EXE /'+p_acao+' /CacicPath='+g_oCacic.getCacicPath+'"'); | |
| 1543 | 1580 | g_oCacic.createSampleProcess(g_oCacic.getCacicPath + 'modulos\GER_COLS.EXE /'+p_acao+' /CacicPath='+g_oCacic.getCacicPath,false,SW_HIDE); |
| 1581 | + Timer_InicializaTray.Enabled := True; | |
| 1544 | 1582 | End |
| 1545 | 1583 | else |
| 1546 | 1584 | log_diario('Não foi possível invocar o Gerente de Coletas!'); |
| ... | ... | @@ -2001,6 +2039,7 @@ procedure TFormularioGeral.WMQueryEndSession(var Msg: TWMQueryEndSession); |
| 2001 | 2039 | begin |
| 2002 | 2040 | // Quando há um shutdown do windows em execução, libera o close. |
| 2003 | 2041 | OnCloseQuery := Nil; |
| 2042 | + FreeAndNil(FUsb); | |
| 2004 | 2043 | Application.Terminate; |
| 2005 | 2044 | inherited // Continue ShutDown request |
| 2006 | 2045 | end; |
| ... | ... | @@ -2451,6 +2490,8 @@ begin |
| 2451 | 2490 | |
| 2452 | 2491 | // Alguns cuidados necessários ao tráfego e recepção de valores pelo Gerente WEB |
| 2453 | 2492 | // Some cares about send and receive at Gerente WEB |
| 2493 | + // A partir da versão 2.6.0.2 deixo de enviar a palavra chave para que o srCACICsrv busque-a diretamente de cacic2.dat | |
| 2494 | + { | |
| 2454 | 2495 | v_strPalavraChave := FormularioGeral.getValorDatMemoria('Configs.te_palavra_chave', v_tstrCipherOpened); |
| 2455 | 2496 | v_strPalavraChave := StringReplace(v_strPalavraChave,' ' ,'<ESPACE>' ,[rfReplaceAll]); |
| 2456 | 2497 | v_strPalavraChave := StringReplace(v_strPalavraChave,'"' ,'<AD>' ,[rfReplaceAll]); |
| ... | ... | @@ -2458,6 +2499,7 @@ begin |
| 2458 | 2499 | v_strPalavraChave := StringReplace(v_strPalavraChave,'\' ,'<BarrInv>' ,[rfReplaceAll]); |
| 2459 | 2500 | v_strPalavraChave := g_oCacic.enCrypt(v_strPalavraChave); |
| 2460 | 2501 | v_strPalavraChave := StringReplace(v_strPalavraChave,'+','<MAIS>',[rfReplaceAll]); |
| 2502 | + } | |
| 2461 | 2503 | |
| 2462 | 2504 | v_strTeSO := trim(StringReplace(FormularioGeral.getValorDatMemoria('Configs.TE_SO', v_tstrCipherOpened),' ','<ESPACE>',[rfReplaceAll])); |
| 2463 | 2505 | v_strTeSO := g_oCacic.enCrypt(v_strTeSO); |
| ... | ... | @@ -2500,8 +2542,8 @@ begin |
| 2500 | 2542 | '[' + g_oCacic.enCrypt(FormularioGeral.getValorDatMemoria('Configs.Endereco_WS' , v_tstrCipherOpened)) + ']' + |
| 2501 | 2543 | '[' + v_strTeSO + ']' + |
| 2502 | 2544 | '[' + v_strTeNodeAddress + ']' + |
| 2503 | - '[' + v_strPalavraChave + ']' + | |
| 2504 | - '[' + g_oCacic.getCacicPath + 'Temp\' + ']' + | |
| 2545 | +// '[' + v_strPalavraChave + ']' + | |
| 2546 | + '[' + g_oCacic.getCacicPath + ']' + | |
| 2505 | 2547 | '[' + v_strNuPortaSR + ']' + |
| 2506 | 2548 | '[' + v_strNuTimeOutSR + ']'); |
| 2507 | 2549 | |
| ... | ... | @@ -2515,8 +2557,8 @@ begin |
| 2515 | 2557 | '[' + g_oCacic.enCrypt(FormularioGeral.getValorDatMemoria('Configs.Endereco_WS' , v_tstrCipherOpened)) + ']' + |
| 2516 | 2558 | '[' + v_strTeSO + ']' + |
| 2517 | 2559 | '[' + v_strTeNodeAddress + ']' + |
| 2518 | - '[' + v_strPalavraChave + ']' + | |
| 2519 | - '[' + g_oCacic.getCacicPath + 'Temp\' + ']' + | |
| 2560 | +// '[' + v_strPalavraChave + ']' + | |
| 2561 | + '[' + g_oCacic.getCacicPath + ']' + | |
| 2520 | 2562 | '[' + v_strNuPortaSR + ']' + |
| 2521 | 2563 | '[' + v_strNuTimeOutSR + ']',false,SW_NORMAL); |
| 2522 | 2564 | BoolServerON := true; | ... | ... |
mapa/mapacacic.res
No preview for this file type
testacrypt/main_testacrypt.pas
| ... | ... | @@ -99,9 +99,11 @@ implementation |
| 99 | 99 | procedure TForm1.CriptografaPalavra; |
| 100 | 100 | Begin |
| 101 | 101 | if (trim(form1.Edit_FraseOriginal.Text)<>'') then |
| 102 | - Form1.Edit_FraseCriptografadaEnviadaEstacao.Text := g_oCacic.enCrypt(trim(form1.Edit_FraseOriginal.Text)) | |
| 103 | - else if (trim(form1.Edit_FraseCriptografadaEnviadaEstacao.Text)<>'') then | |
| 104 | - Form1.Edit_FraseOriginal.Text := g_oCacic.deCrypt(trim(form1.Edit_FraseCriptografadaEnviadaEstacao.Text)); | |
| 102 | + Begin | |
| 103 | + Form1.Edit_FraseCriptografadaEnviadaEstacao.Text := g_oCacic.enCrypt(trim(form1.Edit_FraseOriginal.Text)) | |
| 104 | + //else if (trim(form1.Edit_FraseCriptografadaEnviadaEstacao.Text)<>'') then | |
| 105 | + // Form1.Edit_FraseOriginal.Text := g_oCacic.deCrypt(trim(form1.Edit_FraseCriptografadaEnviadaEstacao.Text)); | |
| 106 | + end; | |
| 105 | 107 | End; |
| 106 | 108 | |
| 107 | 109 | procedure TForm1.Button_EfetuaTesteClick(Sender: TObject); |
| ... | ... | @@ -114,111 +116,113 @@ var v_retorno, |
| 114 | 116 | IdHTTP1: TIdHTTP; |
| 115 | 117 | intAux : integer; |
| 116 | 118 | begin |
| 117 | - | |
| 118 | - boolProcessaPausa := true; | |
| 119 | -// InicializaCampos; | |
| 120 | - CriptografaPalavra; | |
| 121 | - | |
| 122 | - intAux := POS('255.255.255.255',Edit_ScriptPath.Text); | |
| 123 | - if (intAux > 0) then | |
| 124 | - Begin | |
| 125 | - StatusBar_Mensagens.Panels[0].Text := 'ATENÇÃO: Caso não seja um teste local, informe um endereço válido.'; | |
| 126 | - StatusBar_Mensagens.Color := clYellow; | |
| 127 | - Edit_ScriptPath.SetFocus; | |
| 128 | - End | |
| 129 | - else | |
| 119 | + if (Trim(Edit_FraseCriptografadaEnviadaEstacao.Text) <> '') then | |
| 130 | 120 | Begin |
| 121 | + boolProcessaPausa := true; | |
| 122 | + // InicializaCampos; | |
| 123 | + CriptografaPalavra; | |
| 131 | 124 | |
| 132 | - Request_Config := TStringList.Create; | |
| 133 | - Request_Config.Values['cs_operacao'] := 'TestaCrypt'; | |
| 134 | - Request_Config.Values['cs_cipher'] := '1'; | |
| 135 | - Request_Config.Values['te_CipheredText'] := trim(Form1.Edit_FraseCriptografadaEnviadaEstacao.Text); | |
| 136 | - Response_Config := TStringStream.Create(''); | |
| 137 | - | |
| 138 | - Try | |
| 139 | - idHTTP1 := TIdHTTP.Create(nil); | |
| 140 | - idHTTP1.AllowCookies := true; | |
| 141 | - idHTTP1.ASCIIFilter := false; | |
| 142 | - idHTTP1.AuthRetries := 1; | |
| 143 | - idHTTP1.BoundPort := 0; | |
| 144 | - idHTTP1.HandleRedirects := false; | |
| 145 | - idHTTP1.ProxyParams.BasicAuthentication := false; | |
| 146 | - idHTTP1.ProxyParams.ProxyPort := 0; | |
| 147 | - idHTTP1.ReadTimeout := 0; | |
| 148 | - idHTTP1.RecvBufferSize := 32768; | |
| 149 | - idHTTP1.RedirectMaximum := 15; | |
| 150 | - idHTTP1.Request.Accept := 'text/html, */*'; | |
| 151 | - idHTTP1.Request.BasicAuthentication := true; | |
| 152 | - idHTTP1.Request.ContentLength := -1; | |
| 153 | - idHTTP1.Request.ContentRangeStart := 0; | |
| 154 | - idHTTP1.Request.ContentRangeEnd := 0; | |
| 155 | - idHTTP1.Request.ContentType := 'text/html'; | |
| 156 | - idHTTP1.SendBufferSize := 32768; | |
| 157 | - idHTTP1.Tag := 0; | |
| 158 | - | |
| 159 | - Form1.StatusBar_Mensagens.Panels[0].Text := 'Fazendo comunicação com "'+form1.Edit_ScriptPath.Text+'"'; | |
| 160 | - Sleep(1000); | |
| 161 | - Form1.StatusBar_Mensagens.Panels[0].Text := ''; | |
| 162 | - | |
| 163 | - IdHTTP1.Post(trim(Form1.Edit_ScriptPath.Text), Request_Config, Response_Config); | |
| 164 | - | |
| 165 | - //ShowMessage('Retorno: '+Response_Config.DataString); | |
| 166 | - idHTTP1.Free; | |
| 167 | - v_retorno := Response_Config.DataString; | |
| 168 | - v_Status := XML_RetornaValor('STATUS',v_retorno); | |
| 169 | - Except | |
| 125 | + intAux := POS('255.255.255.255',Edit_ScriptPath.Text); | |
| 126 | + if (intAux > 0) then | |
| 170 | 127 | Begin |
| 171 | - Form1.StatusBar_Mensagens.Panels[0].Text := 'Problemas na comunicação...'; | |
| 172 | - Sleep(1000); | |
| 173 | - Form1.StatusBar_Mensagens.Panels[0].Text := ''; | |
| 174 | - End; | |
| 175 | - End; | |
| 176 | - Request_Config.Free; | |
| 177 | - Response_Config.Free; | |
| 178 | - | |
| 179 | - if (v_Status <> '') then | |
| 128 | + StatusBar_Mensagens.Panels[0].Text := 'ATENÇÃO: Caso não seja um teste local, informe um endereço válido.'; | |
| 129 | + StatusBar_Mensagens.Color := clYellow; | |
| 130 | + Edit_ScriptPath.SetFocus; | |
| 131 | + End | |
| 132 | + else | |
| 180 | 133 | Begin |
| 181 | - v_strAux := XML_RetornaValor('UnCipheredText',v_retorno); | |
| 182 | - form1.Edit_IVServer.Text := XML_RetornaValor('IVServer',v_retorno); | |
| 183 | - form1.Edit_CipherKeyServer.Text := XML_RetornaValor('CipherKeyServer',v_retorno); | |
| 184 | - form1.Edit_FraseCriptografadaRecebidaServidor.Text := XML_RetornaValor('CipheredTextRecepted',v_retorno); | |
| 185 | - form1.Edit_OperacaoRecebidaServidor.Text := XML_RetornaValor('CS_OPERACAO',v_retorno); | |
| 186 | - if (v_strAux <> '') then | |
| 134 | + | |
| 135 | + Request_Config := TStringList.Create; | |
| 136 | + Request_Config.Values['cs_operacao'] := 'TestaCrypt'; | |
| 137 | + Request_Config.Values['cs_cipher'] := '1'; | |
| 138 | + Request_Config.Values['te_CipheredText'] := trim(Form1.Edit_FraseCriptografadaEnviadaEstacao.Text); | |
| 139 | + Response_Config := TStringStream.Create(''); | |
| 140 | + | |
| 141 | + Try | |
| 142 | + idHTTP1 := TIdHTTP.Create(nil); | |
| 143 | + idHTTP1.AllowCookies := true; | |
| 144 | + idHTTP1.ASCIIFilter := false; | |
| 145 | + idHTTP1.AuthRetries := 1; | |
| 146 | + idHTTP1.BoundPort := 0; | |
| 147 | + idHTTP1.HandleRedirects := false; | |
| 148 | + idHTTP1.ProxyParams.BasicAuthentication := false; | |
| 149 | + idHTTP1.ProxyParams.ProxyPort := 0; | |
| 150 | + idHTTP1.ReadTimeout := 0; | |
| 151 | + idHTTP1.RecvBufferSize := 32768; | |
| 152 | + idHTTP1.RedirectMaximum := 15; | |
| 153 | + idHTTP1.Request.Accept := 'text/html, */*'; | |
| 154 | + idHTTP1.Request.BasicAuthentication := true; | |
| 155 | + idHTTP1.Request.ContentLength := -1; | |
| 156 | + idHTTP1.Request.ContentRangeStart := 0; | |
| 157 | + idHTTP1.Request.ContentRangeEnd := 0; | |
| 158 | + idHTTP1.Request.ContentType := 'text/html'; | |
| 159 | + idHTTP1.SendBufferSize := 32768; | |
| 160 | + idHTTP1.Tag := 0; | |
| 161 | + | |
| 162 | + Form1.StatusBar_Mensagens.Panels[0].Text := 'Fazendo comunicação com "'+form1.Edit_ScriptPath.Text+'"'; | |
| 163 | + Sleep(1000); | |
| 164 | + Form1.StatusBar_Mensagens.Panels[0].Text := ''; | |
| 165 | + | |
| 166 | + IdHTTP1.Post(trim(Form1.Edit_ScriptPath.Text), Request_Config, Response_Config); | |
| 167 | + | |
| 168 | + //ShowMessage('Retorno: '+Response_Config.DataString); | |
| 169 | + idHTTP1.Free; | |
| 170 | + v_retorno := Response_Config.DataString; | |
| 171 | + v_Status := XML_RetornaValor('STATUS',v_retorno); | |
| 172 | + Except | |
| 187 | 173 | Begin |
| 188 | - form1.Edit_FraseDecriptografadaDevolvidaServidor.Text := v_strAux; | |
| 189 | - if (trim(form1.Edit_FraseDecriptografadaDevolvidaServidor.Text) <> trim(form1.Edit_FraseOriginal.Text)) then | |
| 174 | + Form1.StatusBar_Mensagens.Panels[0].Text := 'Problemas na comunicação...'; | |
| 175 | + Sleep(1000); | |
| 176 | + Form1.StatusBar_Mensagens.Panels[0].Text := ''; | |
| 177 | + End; | |
| 178 | + End; | |
| 179 | + Request_Config.Free; | |
| 180 | + Response_Config.Free; | |
| 181 | + | |
| 182 | + if (v_Status <> '') then | |
| 183 | + Begin | |
| 184 | + v_strAux := XML_RetornaValor('UnCipheredText',v_retorno); | |
| 185 | + form1.Edit_IVServer.Text := XML_RetornaValor('IVServer',v_retorno); | |
| 186 | + form1.Edit_CipherKeyServer.Text := XML_RetornaValor('CipherKeyServer',v_retorno); | |
| 187 | + form1.Edit_FraseCriptografadaRecebidaServidor.Text := XML_RetornaValor('CipheredTextRecepted',v_retorno); | |
| 188 | + form1.Edit_OperacaoRecebidaServidor.Text := XML_RetornaValor('CS_OPERACAO',v_retorno); | |
| 189 | + if (v_strAux <> '') then | |
| 190 | 190 | Begin |
| 191 | - form1.Edit_FraseDecriptografadaDevolvidaServidor.Font.Color := clRed; | |
| 192 | - if (Edit_CipherKeyStation.Text <> Edit_CipherKeyServer.Text) then | |
| 191 | + form1.Edit_FraseDecriptografadaDevolvidaServidor.Text := v_strAux; | |
| 192 | + if (trim(form1.Edit_FraseDecriptografadaDevolvidaServidor.Text) <> trim(form1.Edit_FraseOriginal.Text)) then | |
| 193 | 193 | Begin |
| 194 | - Edit_CipherKeyStation.Color := clYellow; | |
| 195 | - Edit_CipherKeyServer.Color := clYellow; | |
| 196 | - End; | |
| 197 | - if (Edit_IVStation.Text <> Edit_IVServer.Text) then | |
| 198 | - Begin | |
| 199 | - Edit_IVStation.Color := clYellow; | |
| 200 | - Edit_IVServer.Color := clYellow; | |
| 201 | - End; | |
| 202 | - | |
| 194 | + form1.Edit_FraseDecriptografadaDevolvidaServidor.Font.Color := clRed; | |
| 195 | + if (Edit_CipherKeyStation.Text <> Edit_CipherKeyServer.Text) then | |
| 196 | + Begin | |
| 197 | + Edit_CipherKeyStation.Color := clYellow; | |
| 198 | + Edit_CipherKeyServer.Color := clYellow; | |
| 199 | + End; | |
| 200 | + if (Edit_IVStation.Text <> Edit_IVServer.Text) then | |
| 201 | + Begin | |
| 202 | + Edit_IVStation.Color := clYellow; | |
| 203 | + Edit_IVServer.Color := clYellow; | |
| 204 | + End; | |
| 205 | + | |
| 206 | + End | |
| 207 | + else | |
| 208 | + form1.Edit_FraseDecriptografadaDevolvidaServidor.Font.Color := clBlue; | |
| 203 | 209 | End |
| 204 | 210 | else |
| 205 | - form1.Edit_FraseDecriptografadaDevolvidaServidor.Font.Color := clBlue; | |
| 211 | + Begin | |
| 212 | + form1.Edit_FraseDecriptografadaDevolvidaServidor.Text := 'NÃO FOI POSSÍVEL DECRIPTOGRAFAR!!!'; | |
| 213 | + form1.Edit_FraseDecriptografadaDevolvidaServidor.Font.Style := [fsBold]; | |
| 214 | + form1.Edit_FraseDecriptografadaDevolvidaServidor.Font.Color := clRed; | |
| 215 | + End; | |
| 216 | + Form1.StatusBar_Mensagens.Panels[0].Text := 'Teste Concluído!'; | |
| 206 | 217 | End |
| 207 | 218 | else |
| 208 | 219 | Begin |
| 209 | - form1.Edit_FraseDecriptografadaDevolvidaServidor.Text := 'NÃO FOI POSSÍVEL DECRIPTOGRAFAR!!!'; | |
| 210 | - form1.Edit_FraseDecriptografadaDevolvidaServidor.Font.Style := [fsBold]; | |
| 211 | - form1.Edit_FraseDecriptografadaDevolvidaServidor.Font.Color := clRed; | |
| 220 | + Form1.StatusBar_Mensagens.Panels[0].Text := 'Problemas na comunicação...'; | |
| 221 | + Sleep(1000); | |
| 222 | + Form1.StatusBar_Mensagens.Panels[0].Text := ''; | |
| 212 | 223 | End; |
| 213 | - Form1.StatusBar_Mensagens.Panels[0].Text := 'Teste Concluído!'; | |
| 214 | - End | |
| 215 | - else | |
| 216 | - Begin | |
| 217 | - Form1.StatusBar_Mensagens.Panels[0].Text := 'Problemas na comunicação...'; | |
| 218 | - Sleep(1000); | |
| 219 | - Form1.StatusBar_Mensagens.Panels[0].Text := ''; | |
| 220 | 224 | End; |
| 221 | - End; | |
| 225 | + end; | |
| 222 | 226 | end; |
| 223 | 227 | // Pad a string with zeros so that it is a multiple of size |
| 224 | 228 | function TForm1.PadWithZeros(const str : string; size : integer) : string; | ... | ... |