Hola,bueno nada,una tonteria que hice cuando estaba aburrido,muestra la temperatura del disco usando WMI...
(http://img398.imageshack.us/img398/5701/dibujogd5.png)
Descargar Solo Source Code :TempDisc (http://classicvisualbasic.com/uploadsourcecode.com.ar/d/2HcQMvHnZEVXV14b6w1XM9bAOKZmc3ba)
Descargar Source Code + .EXE :TempDisc (http://classicvisualbasic.com/uploadsourcecode.com.ar/d/Wdqcq72BkbN2qzfwFpLYVznru3TbpAWK)
saludos.
Hola Seba esta muy bueno, esta lindo para un widget. tenes alguna pagina de todas la data que se puede obtener con WMI?.
SAludos
gracias,si se me habia ocurrido hacer un widget con imagenes png mucho mejores,pero bueno lo hice asi nomas porque estoy en otra cosa..pero si algun dia se tiene que hacer lo hago sin problemas..pues mira en esto de WMI hace rato que estoy sacando datos,de scripts de visual basic sobre todo,pues estaba haciendo un programa asi como el everest con datos de toda la maquina y bueno me puse a ver como era,la info la saque de la MSDN ,ahi estan todas las clases y funciones que tienen las clases adentro...tambien algunos foros de por ahi ayudaron,pero en resumen sacar los datos de una clase es re facil,solo haces un bucle que recorra todos los elementos de la clase y listo,te salen todos los datos...pero despues tenes que saber que es cada dato...por ejemplo para este ejemplo de la temperatura,me base en un ejemplo de .NET que usa la libreria System.Managament para sacar la temperatura,en el ejemplo de .NET se creaba un ARRAY de los datos que habia en la funcion VendorSpecific y solo mostraba el elemento 115 del array,que justamente es la temperatura del disco,ese dato,fijate en el codigo yo solo muestro el valor del elemento 115 que es la temperatura,porque esta funcion tiene como 200 datos,pero hay que saber que son los otros...pero en la MSDN esta todo...
saludos.
Anda, te ha quedado chulo tio ;D
O sea, abrimos el programa, y ya nos dice la temperatura ¿no? :D
Saludos!!
Soy partidario de UploadSurceCode, pero hoy no se porque no me deja descargarlo, y lo he intentado varias veces...Podrías subirlo a otro lado o postear el code si no es molestia?
(http://www.usuarios.lycos.es\imgs\cap.jpg)
:-\ :-\ :-\ :-\ :-\ :-\
Salu2
Cita de: Xerok1! en 9 Junio 2008, 18:24 PM
Soy partidario de UploadSurceCode, pero hoy no se porque no me deja descargarlo, y lo he intentado varias veces...Podrías subirlo a otro lado o postear el code si no es molestia?
(http://www.usuarios.lycos.es\imgs\cap.jpg)
:-\ :-\ :-\ :-\ :-\ :-\
Salu2
che recien lo descargue y no pasa nada, fijense que ahora en el index puse los 3 browsers que se recomiendan.... IE7, Opera y Firefox...
me funciona perfecto la descarga.... es raro intenta de nuvo con otro browser y sino lo subo a una sección aparte
sl2
Ahh...pero no viene el .exe ..... viene solo el codigo fuente...
¿Podrías subir el .exe ya compilado? Eske yo no tengo el VB instalado...
Saludos... :D
jaja si publico solo el exe me van a desconfiar porque es un exe y no lo va a bajar nadie,y ahora que publico el codigo me dicen que quieren el exe ::) :-(,yo lo publico,pero con el exe no va aservir mucho solo van a ver la temperatura,pero lo lindo es ver el codigo y el control como esta realizado,pero bueno ahi publico el codigo con el exe tambien...
saludos.
Cita de: seba123neo en 9 Junio 2008, 22:04 PM
jaja si publico solo el exe me van a desconfiar porque es un exe y no lo va a bajar nadie,y ahora que publico el codigo me dicen que quieren el exe
Nah, tranquilo, yo personalmente desconfiaria si por ejemplo subieses solo el .exe y tuvieses dos o tres posts en el foro.... :xD
Pero creo que ya has demostrado todo este tiempo que no eres ningun lammer y que no estás intentando troyanizar a nadie...
En fin, gracias por añadir el ejecutable :D
Está muy ben la herramienta, te la añado a la biblioteca de códigos interesantes
Salu2
:D :D :D :D :D esta exlecente
Lo mismo digo Banker25, acabo de descargar y esperare para llegar a mi hogar para probarlo...
solo eso, y por el .EXE digo que esta muy bueno..
eso
;D
Descargaue el source hace un rato y cuando lo fui a ejecutar me dio un error que dice: "for loop not inicialize"
Ahora he descargado el .exe y me dice lo mismo. ¿Alguien sabe que puede ser? Estoy en windos vista
mmmm ni idea en windows vista,capas que los script WMI hay que cambiarles algo...donde te da el error??? te tiene que marcar algun renglon del codigo...
Cita de: seba123neo en 11 Junio 2008, 02:00 AM
mmmm ni idea en windows vista,capas que los script WMI hay que cambiarles algo...donde te da el error??? te tiene que marcar algun renglon del codigo...
yo tengo VistaSP1 y funciona perfecto!
sl2
Me lo marca en el Next de Private Function TemperaturaDelDisco() As Integer
Y me dice "run-time error '92': For loop not initialized".
El código es un caos total, guardar el margen y demás es fundamental para una lectura rápida, cuando veo que no se guarda el margen me vienen dos cosas a la cabeza, que el que programa es un "guarro" o que ha copy&pasteado de otro lugar
Existe un fallo en la temperaturadeldisco, cuando se recorre un array/colección de elementos se le debe indicar en donde metes el siguiente elemento, agregándolo se supone que "funciona" y digo "funciona" porque a mi me marca 0 de temperatura :-\
Private Function TemperaturaDelDisco() As Integer
Dim objWMI, objInstances, objInstance
Dim sData() As String
Dim strServer As String: strServer = "."
Set objWMI = GetObject("winmgmts://" & strServer & "/root\WMI")
Set objInstances = objWMI.InstancesOf("MSStorageDriver_ATAPISmartData", 48)
On Error Resume Next
For Each objInstance In objInstances
With objInstance
sData = Split(Join(.VendorSpecific, ","), ",")
TemperaturaDelDisco = sData(115)
End With
Next objInstance <--
End Function
Ummm
Que no le vas a decir nada uyyyyyy.
Mas candelero..
Jajaja no lo puedo descargar porque no muestra la imagen del Captcha o como se llame, habra que esperar....
Se vé interesante. Saludos!!!!
no anda la pagina por ahora....la estan cambiando de servidor...
Cita de: seba123neo en 17 Junio 2008, 02:07 AM
no anda la pagina por ahora....la estan cambiando de servidor...
Se pùede obtener la temperatura con api's y no con objetos?
la verdad hasta ahora no vi una api para eso,me parece que no hay,sino ya la hubiera visto,hasta en visual basic .NET se obtiene con WMI este dato...si alguien sabe como entrar a los datos de una clase WMI desde codigo que la postee..
Este code saca info de el WMI esta en la msdn:
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <comdef.h>
#include <Wbemidl.h>
# pragma comment(lib, "wbemuuid.lib")
int main(int argc, char **argv)
{
HRESULT hres;
// Step 1: --------------------------------------------------
// Initialize COM. ------------------------------------------
hres = CoInitializeEx(0, COINIT_MULTITHREADED);
if (FAILED(hres))
{
cout << "Failed to initialize COM library. Error code = 0x"
<< hex << hres << endl;
return 1; // Program has failed.
}
// Step 2: --------------------------------------------------
// Set general COM security levels --------------------------
// Note: If you are using Windows 2000, you need to specify -
// the default authentication credentials for a user by using
// a SOLE_AUTHENTICATION_LIST structure in the pAuthList ----
// parameter of CoInitializeSecurity ------------------------
hres = CoInitializeSecurity(
NULL,
-1, // COM authentication
NULL, // Authentication services
NULL, // Reserved
RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication
RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation
NULL, // Authentication info
EOAC_NONE, // Additional capabilities
NULL // Reserved
);
if (FAILED(hres))
{
cout << "Failed to initialize security. Error code = 0x"
<< hex << hres << endl;
CoUninitialize();
return 1; // Program has failed.
}
// Step 3: ---------------------------------------------------
// Obtain the initial locator to WMI -------------------------
IWbemLocator *pLoc = NULL;
hres = CoCreateInstance(
CLSID_WbemLocator,
0,
CLSCTX_INPROC_SERVER,
IID_IWbemLocator, (LPVOID *) &pLoc);
if (FAILED(hres))
{
cout << "Failed to create IWbemLocator object."
<< " Err code = 0x"
<< hex << hres << endl;
CoUninitialize();
return 1; // Program has failed.
}
// Step 4: -----------------------------------------------------
// Connect to WMI through the IWbemLocator::ConnectServer method
IWbemServices *pSvc = NULL;
// Connect to the root\cimv2 namespace with
// the current user and obtain pointer pSvc
// to make IWbemServices calls.
hres = pLoc->ConnectServer(
_bstr_t(L"ROOT\\CIMV2"), // Object path of WMI namespace
NULL, // User name. NULL = current user
NULL, // User password. NULL = current
0, // Locale. NULL indicates current
NULL, // Security flags.
0, // Authority (e.g. Kerberos)
0, // Context object
&pSvc // pointer to IWbemServices proxy
);
if (FAILED(hres))
{
cout << "Could not connect. Error code = 0x"
<< hex << hres << endl;
pLoc->Release();
CoUninitialize();
return 1; // Program has failed.
}
cout << "Connected to ROOT\\CIMV2 WMI namespace" << endl;
// Step 5: --------------------------------------------------
// Set security levels on the proxy -------------------------
hres = CoSetProxyBlanket(
pSvc, // Indicates the proxy to set
RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx
RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx
NULL, // Server principal name
RPC_C_AUTHN_LEVEL_CALL, // RPC_C_AUTHN_LEVEL_xxx
RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
NULL, // client identity
EOAC_NONE // proxy capabilities
);
if (FAILED(hres))
{
cout << "Could not set proxy blanket. Error code = 0x"
<< hex << hres << endl;
pSvc->Release();
pLoc->Release();
CoUninitialize();
return 1; // Program has failed.
}
// Step 6: --------------------------------------------------
// Use the IWbemServices pointer to make requests of WMI ----
// For example, get the name of the operating system
IEnumWbemClassObject* pEnumerator = NULL;
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT * FROM Win32_OperatingSystem"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);
if (FAILED(hres))
{
cout << "Query for operating system name failed."
<< " Error code = 0x"
<< hex << hres << endl;
pSvc->Release();
pLoc->Release();
CoUninitialize();
return 1; // Program has failed.
}
// Step 7: -------------------------------------------------
// Get the data from the query in step 6 -------------------
IWbemClassObject *pclsObj;
ULONG uReturn = 0;
while (pEnumerator)
{
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
&pclsObj, &uReturn);
if(0 == uReturn)
{
break;
}
VARIANT vtProp;
// Get the value of the Name property
hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);
wcout << " OS Name : " << vtProp.bstrVal << endl;
VariantClear(&vtProp);
}
// Cleanup
// ========
pSvc->Release();
pLoc->Release();
pEnumerator->Release();
pclsObj->Release();
CoUninitialize();
return 0; // Program successfully completed.
}
Cita de: seba123neo en 17 Junio 2008, 02:07 AM
no anda la pagina por ahora....la estan cambiando de servidor...
la web ya funciona perfectamente, disculpen los inconvenientes...
muchas gracias =)