BIOS.

Programação Delphi e Pascal

Moderadores: 51, guest2003

Mensagempor tcpipchip » 25 Set 2008 11:54

Ops...desculpe...o Wagner ja tinha dito
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor Wagner de Queiroz » 25 Set 2008 15:27

Falou e disse.

Entao, o Link do Joao é muito bom, segue aquele link que vc ta feito. Nunca pensei que usar WMI no delphi era tao estranho. Mas ta valendo. Só trocar a mensagem pela informacao que vc quer.

getWMIstring('','Win32_BIOS','VoltageCaps');

aqui vc tem uma lista dos verbos

http://vbnet.mvps.org/index.html?code/w ... cessor.htm

Bom. Agora vc tem o caminho das pedras, boa sorte!
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor Pacheco » 03 Out 2008 10:37

Pegando informações do WMI com o Delphi

www.magsys.co.uk/delphi/

Arilson.
Pacheco
Bit
 
Mensagens: 10
Registrado em: 17 Nov 2006 08:26

Mensagempor fabim » 03 Out 2008 10:48

é pacheco eu dei uma estudada mais não serve para o que eu preciso.
Eu preciso de apenas estas informações.
CPU USAGE %
MEMORY USAGE
MEMORY FREE
CPU TEMP
MB TEMP
HD CAPACITY
HD USAGE
HD FREE
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

duvida com ddl no vsc#

Mensagempor esobrinho » 23 Out 2008 14:55

Galera, do link, http://www.alcpu.com/CoreTemp/, que o Wagner passou, eu baixei o projeto(vsc# demo do cara... o projeto dele acessa uma dll que ele disponibiliza. só que parece que dá um erro, em tempo de execução, que indica que aparentemente ele não está conseguindo acessar a dll, pois ele nao consegue ler as info do processador.

o erro é o mesmo deste chineizinho aqui:

http://www.alcpu.com/forums/viewtopic.php?t=492

ele responde que:

"Core Temp must be running for this to work."

tipo, a ddl tem que estar rodando?? como assim, não entendi... sou novo no c# e visual studio...

Obrigado pela ajuda

Abbraço
esobrinho
Bit
 
Mensagens: 11
Registrado em: 23 Jul 2007 15:23

Mensagempor Wagner de Queiroz » 23 Out 2008 16:12

fabim escreveu:é pacheco eu dei uma estudada mais não serve para o que eu preciso.
Eu preciso de apenas estas informações.
CPU USAGE %
MEMORY USAGE
MEMORY FREE
CPU TEMP
MB TEMP
HD CAPACITY
HD USAGE
HD FREE


Eu me lembro a um tempo atras quando era moda colocar LCD 16x2 no PC tinha algumas aplicacoes livres com source code que mostravam estas informacoes no LCD.

Aqui esta o mais conhecido:
http://lcdsmartie.sourceforge.net/smartied.htm

O Smartie parece que foi feito em delphi. Nao consigo baixar o codigo fonte dele no sourceforge. o CVS via web nao ta abrindo



agora tem este artigo interessante:

http://www.codeproject.com/KB/system/pr ... usage.aspx


infelizmente nao sei C ao ponto de te ajudar. eu tento olhar as funcoes que ele chama e tento ver na API do windows como chamar para o delphi.


EM TEMPO:


Eu consegui acessar os sources do SmartIE e o programa foi realmente feito no delphi. Aqui esta o fragmento do codigo que pega o uso do processador. Se vc tentar compilar, nao deve funcionar pq ta faltando umas variaveis declaradas em outros cantos da unit. Mas serve de aperitivo.


Código: Selecionar todos
function GetCPUUsage(Index: Integer): Double;
begin
    if _IsWinNT then
    begin
        if _ProcessorsCount < 0 then CollectCPUData;
        if (Index >= _ProcessorsCount) or (Index < 0) then
            raise Exception.Create('CPU index out of bounds');
        if _PrevSysTime = _SysTime then result:=0 else
        result:=1-(_Counters[index] - _PrevCounters[index])/(_SysTime-_PrevSysTime);
    end else
    begin
        if Index <> 0 then
            raise Exception.Create('CPU index out of bounds');
        if not _W9xCollecting then CollectCPUData;
        result:=_W9xCpuUsage / 100;
    end;
end;

var VI: TOSVERSIONINFO;

//------------------------------------------------------------------------------
procedure CollectCPUData;
var BS: integer;
    i: Integer;
    _PCB_Instance: PPERF_COUNTER_BLOCK;
    _PID_Instance: PPERF_INSTANCE_DEFINITION;
    ST: TFileTime;

var H: HKEY;
    R: DWORD;
    dwDataSize, dwType: DWORD;
begin
    if _IsWinNT then
    begin
        BS:=_BufferSize;
        while RegQueryValueEx( HKEY_PERFORMANCE_DATA, Processor_IDX_Str, nil, nil,
                PByte(_PerfData), @BS ) = ERROR_MORE_DATA do
        begin
            // Get a buffer that is big enough.
            INC(_BufferSize,$1000);
            BS:=_BufferSize;
            ReallocMem( _PerfData, _BufferSize );
        end;

        // Locate the performance object
        _POT := PPERF_OBJECT_TYPE(DWORD(_PerfData) + _PerfData.HeaderLength);
        for i := 1 to _PerfData.NumObjectTypes do
        begin
            if _POT.ObjectNameTitleIndex = Processor_IDX then Break;
            _POT := PPERF_OBJECT_TYPE(DWORD(_POT) + _POT.TotalByteLength);
        end;

        // Check for success
        if _POT.ObjectNameTitleIndex <> Processor_IDX then
            raise Exception.Create('Unable to locate the "Processor" performance object');

        if _ProcessorsCount < 0 then
        begin
            _ProcessorsCount:=_POT.NumInstances;
            GetMem(_Counters,_ProcessorsCount*SizeOf(TInt64));
            GetMem(_PrevCounters,_ProcessorsCount*SizeOf(TInt64));
        end;

        // Locate the "% CPU usage" counter definition
        _PCD := PPERF_Counter_DEFINITION(DWORD(_POT) + _POT.HeaderLength);
        for i := 1 to _POT.NumCounters do
        begin
            if _PCD.CounterNameTitleIndex = CPUUsageIDX then break;
            _PCD := PPERF_COUNTER_DEFINITION(DWORD(_PCD) + _PCD.ByteLength);
        end;

        // Check for success
        if _PCD.CounterNameTitleIndex <> CPUUsageIDX then
            raise Exception.Create('Unable to locate the "% of CPU usage" performance counter');

        // Collecting coutners
        _PID_Instance := PPERF_INSTANCE_DEFINITION(DWORD(_POT) + _POT.DefinitionLength);
        for i := 0 to _ProcessorsCount-1 do
        begin
            _PCB_Instance := PPERF_COUNTER_BLOCK(DWORD(_PID_Instance) + _PID_Instance.ByteLength );

            _PrevCounters[i]:=_Counters[i];
            _Counters[i]:=FInt64(PInt64(DWORD(_PCB_Instance) + _PCD.CounterOffset)^);

            _PID_Instance := PPERF_INSTANCE_DEFINITION(DWORD(_PCB_Instance) + _PCB_Instance.ByteLength);
        end;

        _PrevSysTime:=_SysTime;
        SystemTimeToFileTime(_PerfData.SystemTime, ST);
        _SysTime:=FInt64(TInt64(ST));
    end else
    begin
        if not _W9xCollecting then
        begin
            R:=RegOpenKeyEx( HKEY_DYN_DATA, 'PerfStats\StartStat', 0, KEY_ALL_ACCESS, H );
            if R <> ERROR_SUCCESS then
                raise Exception.Create('Unable to start performance monitoring');

            dwDataSize:=sizeof(DWORD);

            RegQueryValueEx( H, 'KERNEL\CPUUsage', nil, @dwType, PBYTE(@_W9xCpuUsage), @dwDataSize );

            RegCloseKey(H);

            R:=RegOpenKeyEx( HKEY_DYN_DATA, 'PerfStats\StatData', 0,KEY_READ, _W9xCpuKey );

            if R <> ERROR_SUCCESS then
                raise Exception.Create('Unable to read performance data');

            _W9xCollecting:=True;
        end;

        dwDataSize:=sizeof(DWORD);
        RegQueryValueEx( _W9xCpuKey, 'KERNEL\CPUUsage', nil,@dwType, PBYTE(@_W9xCpuUsage), @dwDataSize );
    end;
end;
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Re: duvida com ddl no vsc#

Mensagempor esobrinho » 24 Out 2008 14:31

esobrinho escreveu:Galera, do link, http://www.alcpu.com/CoreTemp/, que o Wagner passou, eu baixei o projeto(vsc# demo do cara... o projeto dele acessa uma dll que ele disponibiliza. só que parece que dá um erro, em tempo de execução, que indica que aparentemente ele não está conseguindo acessar a dll, pois ele nao consegue ler as info do processador.

o erro é o mesmo deste chineizinho aqui:

http://www.alcpu.com/forums/viewtopic.php?t=492

ele responde que:

"Core Temp must be running for this to work."

tipo, a ddl tem que estar rodando?? como assim, não entendi... sou novo no c# e visual studio...

Obrigado pela ajuda

Abbraço


alguém pode me dar uma ajuda?
esobrinho
Bit
 
Mensagens: 11
Registrado em: 23 Jul 2007 15:23

Mensagempor Wagner de Queiroz » 24 Out 2008 14:43

esobrinho, acho que é melhor vc criar um topico novo na area do C. Nem todos que conhecemos sao partidarios do Delphi. O topico aqui em questão é para o Delphi.

Os programadores C e de Delphi costumam brigar mais que os Hatfield e McCoys para dizer que linguagem é melhor. (O mesmo foi para a turma do VB e Delphi)
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor esobrinho » 24 Out 2008 16:10

Wagner de Queiroz escreveu:esobrinho, acho que é melhor vc criar um topico novo na area do C. Nem todos que conhecemos sao partidarios do Delphi. O topico aqui em questão é para o Delphi.

Os programadores C e de Delphi costumam brigar mais que os Hatfield e McCoys para dizer que linguagem é melhor. (O mesmo foi para a turma do VB e Delphi)


blz cara, obrigado
esobrinho
Bit
 
Mensagens: 11
Registrado em: 23 Jul 2007 15:23

Mensagempor vtrx » 26 Out 2008 11:45

Olha,ja fiz um aplicativo desses para reparação remota,mas não acho os fontes completos.
Vai ter que ir por partes pois para windows baseado no xp alguns itens vc tem que ler do registro.
Poe uma lista doque vc quer 'ler'.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Anterior

Voltar para Delphi e Pascal

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes

x