Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Mr.Blue en 19 Noviembre 2010, 19:45 pm



Título: Problemas con Visual c++ 2008
Publicado por: Mr.Blue en 19 Noviembre 2010, 19:45 pm
Hola gente!
Les comenento que instale recientemente Visual c++ 2008, pero no se porq no me compila, algunas cosas.

Por ej:

Código
  1. #include <stdio.h>
  2.  
  3. int main (){
  4. int i;
  5. for (i=0;i<5;i++)
  6. printf ("Hola\n");
  7. return 0;
  8. }

Esto compila

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4.  
  5.  
  6. int main()
  7. { char pro[40];
  8. HANDLE proceso;
  9.  
  10. printf ("Ingrese proceso a buscar: ");
  11. gets (pro);
  12. printf ("cadena a buscar: %s\n", pro);
  13. HWND encontre = FindWindow(NULL, pro); // FindWindows Buesca un proceso del sistema por el nombre de la pantalla sintaxis a=FindWindow(Null, Arg1);
  14.                                       //  RETORNO tiene valor de retorno del tipo HWND; NULL nulo, arg1 argumento 1 nombre a buscar ej Windows Live Messenjer
  15. if (encontre == 0)
  16. printf ("Ventana cerrada\n\a");
  17. //MessageBox(NULL, "No se esta ejecutando Pinball", "Error", MB_OK | MB_ICONERROR);
  18. //return -1;
  19. else {
  20. printf ("Ventana abierta\n\a");
  21. DWORD pid; //DWORD pid; //se declara variable del tipo DWORD (variable de 32bit)
  22. GetWindowThreadProcessId(encontre,&pid); //toma processo que se encontro en FindWindow y delvuelve el proceso PID sintaxis
  23.                                                                                                //GetWindowThreadProcessId(encontre,&pid); // (_HWND Arg1, _DWORD Arg2);
  24. MessageBox (NULL,"Encontrado", "Encontrado", MB_OK | MB_ICONINFORMATION);
  25.  
  26. printf ("PID:%d\n",pid);
  27. proceso =OpenProcess(PROCESS_ALL_ACCESS,0,pid); // Abrir processo con todos los accesos tiene valor de retorno del tipo HANDLE
  28. CloseHandle(proceso);} //cierro variable tipo Handle del valor proceso
  29. return 0;
  30. }

Esto no lo compila.
Errores que me da.

Citar
1>Compilando...
1>codigo.cpp
1>c:\users\juanca\documents\visual studio 2008\projects\captura\captura\codigo.cpp(12) : warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(279) : vea la declaración de 'gets'
1>c:\users\juanca\documents\visual studio 2008\projects\captura\captura\codigo.cpp(14) : error C2664: 'FindWindowW' : no se puede convertir el parámetro 2 de 'char [40]' 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>c:\users\juanca\documents\visual studio 2008\projects\captura\captura\codigo.cpp(25) : error C2664: 'MessageBoxW' : no se puede convertir el parámetro 2 de 'const char [11]' 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\juanca\Documents\Visual Studio 2008\Projects\captura\captura\Debug\BuildLog.htm"
1>captura - 2 errores, 1 advertencias
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========


Lo raro es que compilando con cualquier otro compilador no tengo problemas.


Título: Re: Problemas con Visual c++ 2008
Publicado por: Littlehorse en 19 Noviembre 2010, 19:59 pm
Citar
1>c:\users\juanca\documents\visual studio 2008\projects\captura\captura\codigo.cpp(12) : warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(279) : vea la declaración de 'gets'


gets esta marcada como deprecated. Por esa razón te aparece un warning, puedes deshabilitar ese warning mediante pragma o utilizar una funciona segura como fgets.

Citar
1>c:\users\juanca\documents\visual studio 2008\projects\captura\captura\codigo.cpp(14) : error C2664: 'FindWindowW' : no se puede convertir el parámetro 2 de 'char [40]' a 'LPCWSTR'

Tu proyecto esta configurado para que trabaje con UNICODE, por esa razón llamas a las funciones respectivas (***W) y por ende los parametros no son los correctos.
MessageBox (http://msdn.microsoft.com/en-us/library/ms645505%28VS.85%29.aspx)

Código
  1. MessageBox (NULL,L"Encontrado", L"Encontrado", MB_OK | MB_ICONINFORMATION);

Para el resto de los errores aplica el mismo criterio. Ten en cuenta que LPCWSTR significa:

Código
  1. typedef const wchar_t* LPCWSTR;


Busca en el foro que hay bastantes explicaciones sobre este tipo de errores y el manejo de UNICODE.

Saludos!


Título: Re: Problemas con Visual c++ 2008
Publicado por: Mr.Blue en 19 Noviembre 2010, 20:07 pm
ah.. pense q era porblema de la sdk o algo de eso,  :-\ gracias!!