|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
11-08-2009, 14.18.00 | #1 |
Junior Member
Registrato: 30-03-2009
Loc.: Genova
Messaggi: 61
|
Misura della temperatura del processore con vb6
Ho altro quesito da chiedere. Mi piacerebbe creare con vb6 o Vb5 un softwarino che legge la temperatura del processore se la scheda madre lo prevede. So che ci sono già pronti e anche Free, ma sarebbe una mia piccola soddisfazione crearne uno da me. Da dove devo iniziare ? Quali sono i registri da consultare e come ? magari un piccolo esempio ... |
01-09-2009, 22.58.15 | #2 |
Newbie
Registrato: 01-09-2009
Messaggi: 3
|
Ho trovato in giro su internet questo...forse potrebbe essere di aiuto?
Imports System Imports System.Management Public Class frmMain Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Dim searcher As New ManagementObjectSearcher("root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature") For Each queryObj As ManagementObject In searcher.Get() Dim temp As Double = CDbl(queryObj("CurrentTemperature")) temp = (temp - 2732) / 10.0 MessageBox.Show(temp.ToString) Next Catch ex As ManagementException MessageBox.Show(ex.Message) End Try End Sub End Class |
01-09-2009, 23.31.59 | #3 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
"Quali sono i registri da consultare e come ?"
L'esempio che hai riportato non è proprio in Vb5/6, anche se a WMI potresti accedere comunque attraverso l'utilizzo di un componente aggiuntivo ... Certo, WMI è pratico ma la domanda rimane quella lassù |
02-09-2009, 09.02.42 | #4 |
Guest
Messaggi: n/a
|
Dipende dal driver della scheda madre, la lettura della temperatura...non c'è una API standard. Bisogna importare la funzione specifica dalla dll (stile asus.dll ha GetCPUTemperature)
|
02-09-2009, 09.48.39 | #5 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Mmm ... l'esempio fa accesso ad ACPI ... al BIOS.
A quale indirizzo punta MSAcpi_ThermalZoneTemperature ? Certo, hai ragione anche tu Semi.genius ... Se Asus ha predisposto una dll specifica per le sue schede madri, il reversing della chiamata GetCPUTemperature potrebbe forse rivelarcelo ? E se ACPI fosse uno standard ? Qualunque scheda madre che lo supporti potrebbe fornirci la lettura della temperatura , ed in questo caso WMI potrebbe avere davvero senso ... |
02-09-2009, 09.59.13 | #6 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Anche secondo me l'uso di WMI ha un senso in questo caso, molti software di rilevazione come il ben noto SpeedFan ne fanno uso appoggiandosi anche alle API del controllo delle performance di windows (perfos.dll)
Appoggiarsi ad un driver specifico del produttore dell'hardware implica dover gestire chiamate che possono essere diverse per modello di scheda madre, inoltre alle volte possono differire anche tra revisioni degli stessi driver. Lo standard ACPI è ormai largamente supportato dall'hardware e il sistema dispone dei relativi performance coutners per cui a mio avviso una query wmi è senz'altro da preferire... |
02-09-2009, 11.35.36 | #7 |
Junior Member
Registrato: 30-03-2009
Loc.: Genova
Messaggi: 61
|
Salve a tutti.
Cos'è WMI ? E' un software aggiuntivo da installare e come si usa ? |
02-09-2009, 11.46.40 | #8 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
WMI ovvero Windows Management Instrumentation (strumentazione gestione windows) è un'infrastruttura integrata nel sistema operativo che, attraverso un processo host (wmiprvse) - wmi provider service permette di eseguire interrogazioni a livello programmatico sul sistema utilizzando una sintassi molto simile a t-sql per sottoporre query riguardanti la configurazione hardware e software del sistema.
Praticamente è un servizio integrato che ti fornisce informazioni sul sistema. |
02-09-2009, 12.00.57 | #9 |
Guest
Messaggi: n/a
|
uhm..siete sicuri che con WMI si possa ricavare la temperatura? iirc, si può sapere le informazioni sul sensore, ma il valore "CurrentReading" non lo popola...
http://msdn.microsoft.com/en-us/libr...93(VS.85).aspx ..come è scritto qui... |
02-09-2009, 12.19.40 | #10 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Questo codice :
Codice:
Try Dim searcher As New ManagementObjectSearcher("root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature") For Each queryObj As ManagementObject In searcher.Get() Dim temp As Double = CDbl(queryObj("CurrentTemperature")) temp = (temp - 2732) / 10.0 MessageBox.Show(temp.ToString) Next Catch err As ManagementException MessageBox.Show("An error occurred while querying for WMI data: " & err.Message) End Try Chiedo scusa all'utente che ha iniziato il thread per non aver postato codice vb5 o vb6 se non ricordo male per l'interazione wmi occorre un componente aggiuntivo. |
02-09-2009, 15.00.12 | #11 |
Junior Member
Registrato: 30-03-2009
Loc.: Genova
Messaggi: 61
|
Ci mancherebbe altro, vi ringrazio tutti.
Per provare il codice che hai messo a disposizione occorre prima installare WMI presumo. Usando vb5&6 devo scaricare un particolare file di installazione o è sufficiente entrare nel Sito della Microsoft ? Qual'è il link più giusto ? |
02-09-2009, 15.04.21 | #12 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
WMI non si installa, è integrato in windows...
|
02-09-2009, 15.17.57 | #13 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Con il metodo getobject di vb6 recuperi l'"istanza" di wmi su cui fare la query, guarda questo link e magari prova direttamente dato che (se non ricordo male) alcuni provider sono preinstallati nel sistema, probabilmente non avrai bisogno di librerie aggiuntive
http://www.eggheadcafe.com/tutorials...dows-mana.aspx Se invece l'istruzione getobject ritorna errore oppure Nothing allora occorre cercare una libreria di interfacciamento per wmi con vb. |
02-09-2009, 16.32.11 | #14 |
Junior Member
Registrato: 30-03-2009
Loc.: Genova
Messaggi: 61
|
L'esempio che è scritto sul Link funziona.
Mi restituisce l'elenco dei programmi (processi) in esecuzione nella macchina. Ma come faccio ad adattarlo alle mie esigenze ? Mi sento molto ignorante sull'argomento. |
02-09-2009, 16.41.55 | #15 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Bene, vuol dire che non hai bisogno di provider aggiuntivi in quanto la tua vb virtual machine lo include già...
Per il codice, devi fare un porting tra vb.net e vb6, viene una cosa simile a questa: Codice:
dim coltemp dim objtemp ' forse anche così : ' Set coltemp = GetObject("Winmgmts:root\WMI").ExecQuery("SELECT * FROM MSAcpi_ThermalZoneTemperature ") Set coltemp = GetObject("Winmgmts:").ExecQuery("SELECT * FROM MSAcpi_ThermalZoneTemperature ") For Each objtemp In colProcessList List1.AddItem "Temp =" & objtemp.CurrentTemperature Next ' set oggetti = nothing End Sub |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Crociera virtuale intorno al mondo, unico bagaglio... fantasia! | Lionsquid | Chiacchiere in libertà | 1492 | 24-04-2009 08.08.28 |
revoca dello Status di Obiettori di Coscienza | top gun | Chiacchiere in libertà | 101 | 12-09-2005 18.10.47 |
BUONA PASQUA , celebrazione di un evento. | Giorgio Drudi | Chiacchiere in libertà | 78 | 27-03-2005 12.18.05 |
beep al boot | maefe | Hardware e Overclock | 6 | 08-11-2003 11.06.56 |