Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: seba123neo en 9 Junio 2008, 01:41 am



Título: Temperatura Del Disco
Publicado por: seba123neo en 9 Junio 2008, 01:41 am
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.


Título: Re: Temperatura Del Disco
Publicado por: LeandroA en 9 Junio 2008, 02:44 am
Hola Seba esta muy bueno, esta lindo para un widget. tenes alguna pagina de todas la data que se puede obtener con WMI?.


SAludos


Título: Re: Temperatura Del Disco
Publicado por: seba123neo en 9 Junio 2008, 02:59 am
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.


Título: Re: Temperatura Del Disco
Publicado por: invisible_hack en 9 Junio 2008, 16:13 pm
Anda, te ha quedado chulo tio  ;D

O sea, abrimos el programa, y ya nos dice la temperatura ¿no?  :D

Saludos!!


Título: Re: Temperatura Del Disco
Publicado por: 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


Título: Re: Temperatura Del Disco
Publicado por: SKL (orignal) en 9 Junio 2008, 18:31 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


Título: Re: Temperatura Del Disco
Publicado por: invisible_hack en 9 Junio 2008, 19:56 pm
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


Título: Re: Temperatura Del Disco
Publicado por: 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  ::) :-(,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.


Título: Re: Temperatura Del Disco
Publicado por: invisible_hack en 9 Junio 2008, 22:14 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


Título: Re: Temperatura Del Disco
Publicado por: ~~ en 10 Junio 2008, 03:25 am
Está muy ben la herramienta, te la añado a la biblioteca de códigos interesantes

Salu2


Título: Re: Temperatura Del Disco
Publicado por: Banker25 en 10 Junio 2008, 20:05 pm
 :D :D :D :D :D esta exlecente


Título: Re: Temperatura Del Disco
Publicado por: Dosjota en 10 Junio 2008, 20:41 pm
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


Título: Re: Temperatura Del Disco
Publicado por: viviz02 en 10 Junio 2008, 22:19 pm
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


Título: Re: Temperatura Del Disco
Publicado por: 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...


Título: Re: Temperatura Del Disco
Publicado por: SKL (orignal) en 11 Junio 2008, 02:47 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


Título: Re: Temperatura Del Disco
Publicado por: viviz02 en 11 Junio 2008, 11:32 am
Me lo marca en el Next de Private Function TemperaturaDelDisco() As Integer
Y me dice "run-time error '92': For loop not initialized".



Título: Re: Temperatura Del Disco
Publicado por: Hans el Topo en 11 Junio 2008, 11:53 am
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  :-\


Código:
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
 


Título: Re: Temperatura Del Disco
Publicado por: Pox1 en 12 Junio 2008, 15:48 pm
Ummm
Que no le vas a decir nada uyyyyyy.
Mas candelero..


Título: Re: Temperatura Del Disco
Publicado por: Ch3ck en 17 Junio 2008, 02:01 am
Jajaja no lo puedo descargar porque no muestra la imagen del Captcha o como se llame, habra que esperar....

Se vé interesante. Saludos!!!!


Título: Re: Temperatura Del Disco
Publicado por: seba123neo en 17 Junio 2008, 02:07 am
no anda la pagina por ahora....la estan cambiando de servidor...


Título: Re: Temperatura Del Disco
Publicado por: krackwar en 17 Junio 2008, 02:46 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?


Título: Re: Temperatura Del Disco
Publicado por: seba123neo en 17 Junio 2008, 18:00 pm
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..


Título: Re: Temperatura Del Disco
Publicado por: krackwar en 17 Junio 2008, 21:20 pm
Este code saca info de el WMI esta en la msdn:
Código:
#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.

}


Título: Re: Temperatura Del Disco
Publicado por: SKL (orignal) en 18 Junio 2008, 22:57 pm
no anda la pagina por ahora....la estan cambiando de servidor...

la web ya funciona perfectamente, disculpen los inconvenientes...

muchas gracias =)