Delay em um aplicativo

9 respostas
JP1

Galerinha do bem,

Estou desenvolvendo um outro projeto, no caso para area de Redes.

desenvolvi um cliente que me retorna alguns dados dos pcs da rede.

import java.io.IOException;

public class PegaInfoPC {

    public static void main(String[] args) {
        try {
            Runtime.getRuntime().exec("cmd /C systeminfo > /info.txt");
            Runtime.getRuntime().exec("notepad /info.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.exit(0);
    }
    
}

Logicamente ele esta em beta ainda, apenas pega as informações, joga em um TXT, so que na hroa de abrir(futuramente, enviar para o BD), ele abre o TXT em branco, logico, pq o syusteminfo fica em segundo plano pegando as infos...

COmo eu faço para que ele aguarde o system info terminar?

Seria melhor usando Threads?

9 Respostas

T

Você deve ter visto que exec() retorna um objeto Process.
Esse objeto Process tem um método waitFor, que é o que você quer.

danieldestro

Nossa, para que isso???

Runtime.getRuntime().exec(“notepad /info.txt”);

Não sabe como ler arquivos com Java?

JP1

Sei ler sim, eu disse que éa apenas pra abrir o txt.

este cliente não é grafico, não pra ter Frame nem nada.

por isso inclui a linha pra abir no notepad, simplesmente é pra demonstração.

Você entendeu o proprosito do cliente? Ele pega as informações, sutilmente, se fosse pra que os usuários percebessem a existência do programa, ele perdia o sentido, é pra ser parte de uma ferramenta para monitorar as máquinas.

Mas obrigado pelo seu comentátrio, muito gratificante

E no futuro não vai gravar em TXT e sim em um bando de dados(conhece), por isso eu pedi aajuda aqui.

mas fiz errado?

cv1

JP, acho que o post do thingol matou a duvida, mas de qqer forma, vc nao precisa daquele System.exit(0) ali :wink:

JP1

Obrigado cv, erros de quem ta aprendendo.

fmeyer
JP®:
Galerinha do bem,

Estou desenvolvendo um outro projeto, no caso para area de Redes.

desenvolvi um cliente que me retorna alguns dados dos pcs da rede.

import java.io.IOException;

public class PegaInfoPC {

    public static void main(String[] args) {
        try {
            Runtime.getRuntime().exec("cmd /C systeminfo > /info.txt");
            Runtime.getRuntime().exec("notepad /info.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.exit(0);
    }
    
}

Logicamente ele esta em beta ainda, apenas pega as informações, joga em um TXT, so que na hroa de abrir(futuramente, enviar para o BD), ele abre o TXT em branco, logico, pq o syusteminfo fica em segundo plano pegando as infos...

COmo eu faço para que ele aguarde o system info terminar?

Seria melhor usando Threads?

Que tal usar snmp ? http://net-snmp.sourceforge.net/

Conectar em um serviço na maquina cliente e requisitar os dados diretamente seria a melhor maneira ao meu ver. :D

JP1

Obrigado

Vou dar uma olhada.

T

Vivendo e aprendendo.
Nem sabia que existia esse comando systeminfo.
Deve ter aparecido no XP, já que estou usando o 2003, mas consigo obter dados de uma estação rodando Windows 2000 (embora o systeminfo não esteja disponível no 2000, ele usa as interfaces WMI pelo que estou supondo).
O bom de um fórum é que não é só quem pergunta que aprende alguma coisa. Quem responde também.
Como usa WMI, leva cerca de 1 minuto para obter a informação completa.
Um exemplo da saída do systeminfo (com os parâmetros default: usando o parâmetro /FO CSV você tem a saída em formato CSV, o que permite o uso por programas)

Host Name:                 XXXXX
OS Name:                   Microsoft Windows 2000 Professional
OS Version:                5.0.2195 Service Pack 4 Build 2195
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Member Workstation
OS Build Type:             Uniprocessor Free
Registered Owner:          XXXXX
Registered Organization:   XXXXX
Product ID:                XXXXX-XXX-XXXXXXX-XXXXX
Original Install Date:     14/12/2004, 21:41:14
System Up Time:            0 Days, 0 Hours, 40 Minutes, 5 Seconds
System Manufacturer:       INTEL_
System Model:              D865GLC_
System Type:               X86-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 3 Stepping 3 GenuineIntel ~2793 Mhz
BIOS Version:              BIOS Date: 06/22/04 03:49:15 Ver: 08.00.10
Windows Directory:         C:\WINNT
System Directory:          C:\WINNT\system32
Boot Device:               \Device\Harddisk0\Partition1
System Locale:             en-us;English (United States)
Input Locale:              en-us;English (United States)
Time Zone:                 (GMT-03:00) Brasilia
Total Physical Memory:     1.007 MB
Available Physical Memory: 440 MB
Page File: Max Size:       2.945 MB
Page File: Available:      1.967 MB
Page File: In Use:         978 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    XXXXXX
Logon Server:              N/A
JP1

é realmente uma ferramenta e tanto.

obrigado a todos.

Criado 21 de junho de 2005
Ultima resposta 25 de jun. de 2005
Respostas 9
Participantes 5