Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: L0Ko en 19 Julio 2012, 19:46 pm



Título: Error C2664: 'WNetGetUserW' que puede ser?
Publicado por: L0Ko en 19 Julio 2012, 19:46 pm
Hola les comento encontre este codigo en http://todocporelinv.blogspot.mx/2012/02/c-win32-obtener-el-nombre-de-red-por.html (http://todocporelinv.blogspot.mx/2012/02/c-win32-obtener-el-nombre-de-red-por.html)
Pasa que necesito saber el nombre de red a la que estoy conectado ya sea por cable o inalambrica (SSID), y aprovecho para preguntar  ;D  ¿como saber la direccion mac de mi "Modem"? ( no del computador).

Para saber el nombre de red, entonces instale Visual C++ pero me manda algunos errores, he agregado la linea
Código:
#pragma comment(lib, "mpr.lib")
  pero nos e si en realidad la encuentra Visual C++,  aca les dejo el codigo de Visaul C++
Código:
#include <stdafx.h>
    #include <windows.h>
    #include <iostream>
    #pragma comment(lib, "mpr.lib")
    using namespace std;

     
    int main()
    {
        char Name[255];
        char Test[255];
        DWORD size=255;
        if (WNetGetUser(Test,Name,&size)==NO_ERROR)
        {
            cout << Name << endl;
        }
        system("PAUSE");
        return EXIT_SUCCESS;
     
    }


Aca les dejo los errores que lanza el Visual C++

Citar
1>namered.cpp
1>.\namered.cpp(34) : error C2664: 'WNetGetUserW' : no se puede convertir el parámetro 1 de 'char [255]' a 'LPCWSTR'

1>        Los tipos señalados no están relacionados; la conversión requiere reinterpret_cast, conversión de estilo de C o conversión de estilo de función

1>El registro de compilación se guardó en el "file://c:\Users\v2r3\Documents\Visual Studio 2008\Projects\namered\namered\Debug\BuildLog.htm"

1>namered - 1 errores, 0 advertencias
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========

Pero leyendo en la pagina del autor da indicaciones sobre Code Block entonces lo descargue cree un nuevo proyecto pero al tratar de ingresar el mpr.lib no lo pude encontrar no se si sea posible descargarlo? el codigo es el mismo solo qeu este no me manda ningun error solo aparece en ejecucion esto:

"Proces returned 0 <0x0> execution time:2.99 s"



No se si alguien pueda correrlo y ver como va... espero sugerencias gracias
salu2 ;-)




Título: Re: Error C2664: 'WNetGetUserW' que puede ser?
Publicado por: Khronos14 en 19 Julio 2012, 21:01 pm
Si miras el error te pone claramente que tienes un problema de conversión de tipos. El primer parámetro tiene que ser de tipo wchar_t.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa385476(v=vs.85).aspx

Saludos.


Título: Re: Error C2664: 'WNetGetUserW' que puede ser?
Publicado por: BlackZeroX en 19 Julio 2012, 23:05 pm
Busca y comenta #define UNICODE o #define _UNICODE para que trabajes con el formato ANSI y no el UNICODE

* Para que te arroje el resultado de la API debes igualarlas a {}... es decir remover el contenido basura (limpiarlas).

Código:

#include <windows.h>
#include <iostream>
#pragma comment(lib, "mpr.lib")
using namespace std;


int main()
{
    char Name[255] = {};
    char Test[255] = {};
    DWORD size = 255;

    if (WNetGetUser(Test, Name, &size) == NO_ERROR) {
        cout << Name << endl;
    }

    return EXIT_SUCCESS;
}


Dulces Lunas!¡.


Título: Re: Error C2664: 'WNetGetUserW' que puede ser?
Publicado por: L0Ko en 20 Julio 2012, 18:22 pm
Muchas gracias BlackZeroX

Busque lo que mencionabas pero no tube exito, entonces fui a propiedades del prollecto
juego de caracteres y puse como ninguno, entonces me ha imprimido bien el codigo que has modificado...

Bueno el punto aca es que no me dio la informacion que necesitaba, me da el nombre de mi equipo mas no el nombre de red a al que esta conectado SSID, en C# esto es posible pero el punto esta enque lo necesito realizar con java y bueno pense en JNI es por eso que he utilizado C++...

Aunque si hubiera la posibilidad de utilizar e ejecutable de C#  :rolleyes:  (BAAAh no lo creo )

Bueno haber si me dan una idea...

Salu2 loKos!!!


Título: Re: Error C2664: 'WNetGetUserW' que puede ser?
Publicado por: BlackZeroX en 20 Julio 2012, 20:38 pm
De hecho esa API dice claramente que te retorna el nombre de usuario en la RED mas no el SSID de la red...

Dulces Lunas!¡.