Ola.Essa semana, pelos comentarios, perguntaram como acessar o uso de memoria RAM e de CPU no Visual Basic 6, uma vez que o MultiSystem Sidebar consegue tal feito. Ensinarei aqui o codigo necessario para acessar tais informacoes.Primeiramente se deve saber de uma coisa: o funcionamento ou nao do codigo dependera do sistema operacional utilizado. Pelo menos aqui no Seven funciona, no Vista tambem funciona (ja testei) e no XP, idem (foi la onde desenvolvi o aplicativo). Sendo assim, o codigo devera nao funcionar em sistemas operacionais antigos como WinME ou Win98. Mas quem ainda usa esses sistemas operacionais hoje em dia?? Enfim.Irei dividir em duas partes: a primeira tratara do uso de RAM e o outro tratara do uso de CPU. Uso de RAMIremos precisar da API GlobalMemoryStatus da biblioteca kernel32 (onde a maioria das APIs sao para acesso a secao de hardware. Beep e um exemplo.) cujo unico parametro e uma referencia do tipo MEMORYSTATUS.Antes de comecarmos, crie um novo projeto Standard EXE (pode ser tambem uma DLL). Adicione ao projeto um modulo e uma classe. Chamaremos o modulo de mApi (mas pode-se colocar qualquer nome no modulo;a classe trataremos depois, portanto, nao mexa nela).Feito isso, adicione o seguinte codigo ao modulo:Public Type MEMORYSTATUS dwLength As Long dwMemoryLoad As Long dwTotalPhys As Long dwAvailPhys As Long dwTotalPageFile As Long dwAvailPageFile As Long dwTotalVirtual As Long dwAvailVirtual As LongEnd TypePublic Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)Feita a declaracao da API e do tipo necessarios para a obtencao das informacoes desejadas, iremos criar uma funcao que retornara o valor de utilizacao da memoria RAM. Adicione a seguinte funcao abaixo das declaracoes do modulo:Public Function UsoDeRAM() As String 'Aqui pode ser qualquer nome que desejar.Dim Mem As MEMORYSTATUSMem.dwLength = Len(Mem)GlobalMemoryStatus MemUsoDeRAM=CStr(Mem.dwMemoryLoad) 'Se alterar o nome da funcao, altere aqui tambem!End FunctionFeito isso, voce pode usar a funcao UsoDeRAM a qualquer momento, seja na atribuicao a propriedade Caption de uma label ou a uma funcao Print de algum container.Uso de CPUA obtencao do uso de CPU requer uma classe. Utilizaremos a classe que criamos anteriormente. Nomeie-a de cCpu.Nela, insira o seguinte codigo:Option ExplicitPrivate Const SYSTEM_BASICINFORMATION = 0&Private Const SYSTEM_PERFORMANCEINFORMATION = 2&Private Const SYSTEM_TIMEINFORMATION = 3&Private Const NO_ERROR = 0Private Type LARGE_INTEGER dwLow As Long dwHigh As LongEnd TypePrivate Type SYSTEM_BASIC_INFORMATION dwUnknown1 As Long uKeMaximumIncrement As Long uPageSize As Long uMmNumberOfPhysicalPages As Long uMmLowestPhysicalPage As Long uMmHighestPhysicalPage As Long uAllocationGranularity As Long pLowestUserAddress As Long pMmHighestUserAddress As Long uKeActiveProcessors As Long bKeNumberProcessors As Byte bUnknown2 As Byte wUnknown3 As IntegerEnd TypePrivate Type SYSTEM_PERFORMANCE_INFORMATION liIdleTime As LARGE_INTEGER dwSpare(0 To 75) As LongEnd TypePrivate Type SYSTEM_TIME_INFORMATION liKeBootTime As LARGE_INTEGER liKeSystemTime As LARGE_INTEGER liExpTimeZoneBias As LARGE_INTEGER uCurrentTimeZoneId As Long dwReserved As LongEnd TypePrivate Declare Function NtQuerySystemInformation Lib "ntdll" (ByVal dwInfoType As Long, ByVal lpStructure As Long, ByVal dwSize As Long, ByVal dwReserved As Long) As LongPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)Private liOldIdleTime As LARGE_INTEGERPrivate liOldSystemTime As LARGE_INTEGERPublic Sub Initialize() Dim SysTimeInfo As SYSTEM_TIME_INFORMATION Dim SysPerfInfo As SYSTEM_PERFORMANCE_INFORMATION Dim Ret As Long Ret = NtQuerySystemInformation(SYSTEM_TIMEINFORMATION, VarPtr(SysTimeInfo),