|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 73
|
[Java] Rilevare Hardware e Software
Salve a tutti,
vorrei sviluppare un software in Java che mi permetta di rilevare l'Hardware e il Software di un PC, sia locale che attraverso la rete, purtroppo non so da dove partire. Qualcuno mi da qualche dritta? Oppure può indirizzarmi a qualche esempio di programma Open Source che si trova in rete? Grazie 1000 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Penso che tu possa iniziare scartabellando internet alla ricerca delle funzioni del sistema operativo che restituiscono quelle informazioni. Dopodichè si tratta semplicemente di "generalizzare" quelle funzioni in una classe che disporrà dell'insieme di metodi nativi necessari e sufficienti a passare dallo strato nativo a quello Java.
Ad esempio, potresti iniziare chiedendoti "voglio sapere il tipo della CPU". Puoi creare una capsula per queste informazioni: Codice:
interface CPUInfo {
String getType();
}
Codice:
if(SystemInfo.available()) {
SystemInfo system = new SystemInfo();
CPUInfo = system.getCPUInfo();
}
Codice:
package systeminfo;
public class SystemInfo {
private static boolean available;
static {
try {
System.loadLibrary("systeminfo");
available = true;
} catch(UnsatisfiedLinkError e) {
available = false;
}
}
public static boolean available() {
return available;
}
private static class SimpleCPUInfo implements CPUInfo {
private String type;
private SimpleCPUInfo(String type) { this.type = type; }
public String getType() { return type; }
};
public CPUInfo getCPUInfo() {
String type = getCPUType();
if(type == null) {
type = "Unavailable";
}
return new SimpleCPUInfo(type);
}
private native String getCPUType();
}
Ottieni il prototipo di quella funzione con javah. Codice:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class systeminfo_SystemInfo */
#ifndef _Included_systeminfo_SystemInfo
#define _Included_systeminfo_SystemInfo
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: systeminfo_SystemInfo
* Method: getCPUType
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_systeminfo_SystemInfo_getCPUType
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
La versione windows (non sono un esperto in materia) potrebbe essere: Codice:
#include "systeminfo_SystemInfo.h"
#include <jni.h>
#include <windows.h>
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_systeminfo_SystemInfo_getCPUType(JNIEnv *env, jobject this) {
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
WORD arch = sysinfo.wProcessorArchitecture;
if(arch == PROCESSOR_ARCHITECTURE_AMD64) {
return (*env)->NewStringUTF(env, "AMD64");
} else if(arch == PROCESSOR_ARCHITECTURE_IA64) {
return (*env)->NewStringUTF(env, "IA64");
} else if(arch == PROCESSOR_ARCHITECTURE_INTEL) {
return (*env)->NewStringUTF(env, "x86");
} else {
return (*env)->NewStringUTF(env, "Unknown processor");
}
}
Codice:
JNIEXPORT jstring JNICALL Java_systeminfo_SystemInfo_getCPUType(JNIEnv *env, jobject this) {
//restituisci un jstring che rappresenta il tipo di CPU
}
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Dipende inoltre da cosa ti serve conoscere.
In alcuni casi, puoi evitare l'uso delle JNI poiche' alcune info sono gia' disponibili. Per esempio, per le info sul sistema operativo in uso, potresti utilizzare direttamente le proprieta' messe a disposizione dall'ambiente Java....
__________________
In God we trust; all others bring data |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quello sono utili quanto un pugno di vespe inferocite. Oppure io ho un processore a 256bit
java -Dos.arch="x256" ...
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Alternativamente, la macchina a 256 bit la devi proprio comprare...
__________________
In God we trust; all others bring data |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 73
|
Grazie 1000 a tutti, proverò utilizzando i consigili che mi avete dato
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:31.




















