Error C2664: 'WNetGetUserW' que puede ser?

Iniciado por L0Ko, 19 Julio 2012, 19:46 PM

0 Miembros y 1 Visitante están viendo este tema.

L0Ko

Hola les comento encontre este codigo en 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 #pragma comment(lib, "mpr.lib")  pero nos e si en realidad la encuentra Visual C++,  aca les dejo el codigo de Visaul C++

#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++

Citar1>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 ;-)



Khronos14

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.

BlackZeroX

#2
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).



#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!¡.
The Dark Shadow is my passion.

L0Ko

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!!!

BlackZeroX

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!¡.
The Dark Shadow is my passion.