elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ... 237
111  Programación / Programación C/C++ / Mejorar el código en C++ nativo en: 7 Julio 2020, 15:05 pm
Buenas:

Tengo este código en C++ nativo, en el cual aún no logro que funcione tal como lo quiero. Lo que hace este código es, que si pulsas la letra A o a, se abre la bandeja del lector del disco, si pulsas C o c se cierra.

Código C++ nativo:
Código
  1. #include <iostream>
  2. #include <windows.h> // Para mostrar texto en el título de la ventana.
  3.  
  4. using namespace std;
  5. //using std::cout;
  6. //using std::cin;
  7.  
  8. // Función posición del cursor.
  9. void gotoxy(int x, int y)
  10. {
  11. HANDLE hcon;
  12. hcon = GetStdHandle(STD_OUTPUT_HANDLE);
  13. COORD dwPos;
  14. dwPos.X = x;
  15. dwPos.Y = y;
  16. SetConsoleCursorPosition(hcon, dwPos);
  17. }
  18.  
  19. int main(void)
  20. {
  21. // Mostrar caracteres correctamente en pantalla y título de la ventana.
  22. SetConsoleOutputCP(65001);
  23. wchar_t titulo[128];
  24. MultiByteToWideChar(CP_UTF8, 0, "Consola C++ nativo 2019.", -1, titulo, 128);
  25. SetConsoleTitle(titulo);
  26.  
  27. // Variable.
  28. char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
  29.  
  30. // Tamaño de la pantalla. Se cambia en los dos últimos dígitos.
  31. SMALL_RECT r = { 0, 0, 29, 8 }; // X = 29, Y = 8.
  32. SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &r);
  33.  
  34. // Ocultar cursor.
  35. CONSOLE_CURSOR_INFO cci;
  36. GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
  37. cci.bVisible = 0; // 0 oculta. 1 muestra cursor.
  38. SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
  39.  
  40. // Muestra textos en pantalla.
  41. cout << "Control bandeja del lector: " << endl << endl;
  42. cout << "A - Abrir bandeja." << endl;
  43. cout << "C - Cerrar bandeja." << endl;
  44. cout << "===========================" << endl;
  45.  
  46. while (true)
  47. {
  48.  
  49.  
  50. // Aquí introduces letras A, a, C y c.
  51. cin >> entrada;
  52. cout << "\n" << endl;
  53.  
  54. // Abrir bandeja.
  55. if ((entrada[0] == 'a') || (entrada[0] == 'A'))
  56. {
  57. // Posición del cursor.
  58. gotoxy(0, 6);
  59. cout << "Abriendo..." << endl << endl; // Muestra texto en pantalla.
  60. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  61. gotoxy(0, 6);
  62. cout << "Abierto.   " << endl << endl; // Muestra texto en pantalla.
  63. }
  64.  
  65. // Cerrar bandeja.
  66. else if ((entrada[0] == 'c') || (entrada[0] == 'C'))
  67. {
  68. gotoxy(0, 6);
  69. cout << "Cerrando..." << endl << endl; // Muestra texto en pantalla.
  70. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  71. gotoxy(0, 6);
  72. cout << "Cerrado.   " << endl << endl; // Muestra texto en pantalla.
  73. }
  74.  
  75. // Si haz pulsado otro caracter distinto de A, C, a y c aparece
  76. else
  77. {
  78. gotoxy(0, 6);
  79. // este mensaje.
  80. cout << "Solo pulsa A o C." << endl << endl;
  81. }
  82.  
  83. }
  84. return EXIT_SUCCESS;
  85. }

En el código de C# si funciona tal como lo quiero, pongo un ejemplo abajo.

Código C#:
Código
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Text;
  4. namespace Bandeja_consola_cs
  5. {
  6.    class Program
  7.    {
  8.        [DllImport("winmm.dll")]
  9.        public static extern Int32 mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
  10.        int uReturnLength, IntPtr hwndCallback);
  11.        public static StringBuilder rt = new StringBuilder(127);
  12.        public static void DoEventsAbriendo()
  13.        {
  14.            Console.SetCursorPosition(0, 6);
  15.            Console.Write("Abriendo...");
  16.        }
  17.        public static void DoEventsCerrando()
  18.        {
  19.            Console.SetCursorPosition(0, 6);
  20.            Console.Write("Cerrando...");
  21.        }
  22.        static void Main(string[] args)
  23.        {
  24.            // Título de la ventana.
  25.            Console.Title = "Consola C# 2017";
  26.            // Tamaño ventana consola.
  27.            Console.WindowWidth = 29; // X. Ancho.
  28.            Console.WindowHeight = 8; // Y. Alto.
  29.            // Cursor invisible.
  30.            Console.CursorVisible = false;
  31.            // Posición del mansaje en la ventana.
  32.            Console.SetCursorPosition(0, 0);
  33.            Console.Write(@"Control bandeja del lector:
  34. A - Abrir bandeja.
  35. C - Cerrar bandeja.
  36. ===========================");
  37.            ConsoleKey key;
  38.            //Console.CursorVisible = false;
  39.            do
  40.            {
  41.                key = Console.ReadKey(true).Key;
  42.                string mensaje = string.Empty;
  43.                //Asignamos la tecla presionada por el usuario
  44.                switch (key)
  45.                {
  46.                    case ConsoleKey.A:
  47.                        // mensaje = "Abriendo...";
  48.                        Console.SetCursorPosition(0, 6);
  49.                        DoEventsAbriendo();
  50.                        mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero);
  51.                        mensaje = "Abierto.   ";
  52.                        break;
  53.                    case ConsoleKey.C:
  54.                        // mensaje = "Cerrando...";
  55.                        Console.SetCursorPosition(0, 6);
  56.                        DoEventsCerrando();
  57.                        mciSendString("set CDAudio door closed", rt, 127, IntPtr.Zero);
  58.                        mensaje = "Cerrado.   ";
  59.                        break;
  60.                }
  61.                Console.SetCursorPosition(0, 6);
  62.                Console.Write(" ");
  63.                Console.SetCursorPosition(0, 6);
  64.                Console.Write(mensaje);
  65.            }
  66.            while (key != ConsoleKey.Escape);
  67.        }
  68.    }
  69. }

Lo que hace el código C# exactamente todos estos comportamientos.

1. Te pregunta si pulsas teclas, por ejemplo la A para abrir la bandeja y C para cerrar, independientemente si es mayúscula o no. Funciona todo.

2. Desde que pulse cualquier letra del teclado que non corresponda la A, a, C y la c, el programa no hace nada, como debe ser.

3. Si quiero abrir la bandeja del lector y pulso la tecla A, desde que pulse la tecla, se abre la bandeja.

4. Desde que pulse la tecla A, dice el mensaje "Abriendo...", cuando esté abierto la bandeja del todo, dice "Abierto.".

Lo que hace el código C++ nativo y no quiero.


1. Pulso la tecla A o la a, y aparece escrito en la consola.

2. Luego tengo que pulsar la tecla Enter para que la letra A o la a, funcione el comando. Entonces ya puede abrir la bandeja y mostrar los mensajes Abriendo... y Aabierto.

La pregunta es. ¿Se puede corregir este comportamiento de C++ nativo que sea igual al ejemplo de C#?

Saludos.
112  Programación / Programación C/C++ / Re: Prueba leer la dll nativo con interfaz C++ nativo en: 7 Julio 2020, 15:02 pm
Lo estoy haciendo. Lo que a veces me adelanto, ajjajaj.

113  Programación / Programación C/C++ / Re: MEMORIA SIN LIBERAR C++ en: 7 Julio 2020, 14:41 pm
Gracias por la explicación muy desarrollada.  ;-)
114  Programación / Programación C/C++ / Re: Prueba leer la dll nativo con interfaz C++ nativo en: 7 Julio 2020, 14:39 pm
Voy hacerlo de otra manera. Por fin funciona.

Quito de la dll este código:
Código:
float __stdcall ResultadoPorcentaje(float resultadoPorcentaje, float nivelAgua, float altura)
{
    return resultadoPorcentaje = nivelAgua * (100 / altura);
}

Este código de abajo lo pongo en la interfaz.
Código:
resultadoPorcentaje = nivelAgua * (100 / altura);

La dll si compila.
Código:
#include "pch.h"

extern "C"
{
    __declspec(dllexport) LPTSTR __stdcall Mensaje();
    __declspec(dllexport) float __stdcall Volumen(float, float, float, float);
    __declspec(dllexport) float __stdcall Litros(float, float);
    //__declspec(dllexport) float __stdcall ResultadoPorcentaje(float, float, float);
    __declspec(dllexport) float __stdcall VolumenLitros(float, float, float, float, float);
    __declspec(dllexport) float __stdcall CantidadTubosLitros(float, float, float);
    __declspec(dllexport) float __stdcall TotalLitros(float, float, float);
};

// Mensaje.
LPTSTR __stdcall Mensaje() { return LPTSTR(L"Hola. Saludos desde la dll. Versión: 1.0.0"); }

// Cálculo volumen.
float __stdcall Volumen(float volumen, float PI, float radio, float altura)
{
    return volumen = PI * (radio * radio) * altura;
}

// Cálculo litros.
float __stdcall Litros(float litros, float volumen)
{
    return litros = volumen * 1000;
}

// Cálculo porcentaje en % del litro de agua.
//float __stdcall ResultadoPorcentaje(float resultadoPorcentaje, float nivelAgua, float altura)
//{
//    return resultadoPorcentaje = nivelAgua * (100 / altura);
//}

// Cálculo litros de agua.
float __stdcall VolumenLitros(float volumenLitros, float PI, float radio, float nivelAgua, float resultadoLitros)
{
    return volumenLitros = PI * (radio * radio) * nivelAgua;
    return resultadoLitros = volumenLitros * 1000;
}

// Cálculo litros por cantidad de tubos
float __stdcall CantidadTubosLitros(float cantidadTubosLitros, float cantidadTubos, float resultadoLitros)
{
    return cantidadTubosLitros = cantidadTubos * resultadoLitros;
}

// Cálculo cantidad de litros con total de tubos.
float __stdcall TotalLitros(float totalLitros, float litros, float cantidadTubos)
{
    return totalLitros = litros * cantidadTubos;
}

Archivo .def lo dejo así:
Código:
LIBRARY DLL_al_poder
EXPORTS
Mensaje
Volumen
Litros
VolumenLitros
CantidadTubosLitros
TotalLitros

Código completo en la interfaz.
Código:
#include <iostream>
#include <windows.h> // Para mostrar texto en el título de la ventana.

using namespace std;
//using std::cout;
//using std::cin;

// Función posición del cursor.
void gotoxy(int x, int y)
{
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
SetConsoleCursorPosition(hcon, dwPos);
}

// Definir estas funciones.
typedef LPTSTR(__stdcall* Mensaje)();
typedef float(__stdcall* Volumen)(float, float, float, float);
typedef float(__stdcall* Litros)(float, float);
//typedef float(__stdcall* ResultadoPorcentaje)(float, float, float);
typedef float(__stdcall* VolumenLitros)(float, float, float, float, float);
typedef float(__stdcall* CantidadTubosLitros)(float, float, float);
typedef float(__stdcall* TotalLitros)(float, float, float);

// Variables.
const double Pi = 3.14;
float radio;
float altura;
//double volumen;
//double litros;
float nivelAgua;
float resultadoPorcentaje;
//double resultadoLitros;
//double volumenLitros;
float mitadBarra;
float cantidadTubos;
//double cantidadTubosLitros;
//double totalLitros;

int main(void)
{
// Importar dll.
HINSTANCE hDLL = 0;
Mensaje mensaje;
Volumen volumen;
Litros litros;
//ResultadoPorcentaje resultadoPorcentaje;
VolumenLitros volumenLitros;
CantidadTubosLitros cantidadTubosLitros;
TotalLitros totalLitros;

hDLL = LoadLibrary(L"C:\\Users\\Meta\\Documents\\Visual Studio 2019\\Projects\\DLL_y_interfaz_nativo_01_cpp\\Debug\\DLL_y_interfaz_nativo_01_cpp.dll");
mensaje = (Mensaje)GetProcAddress(hDLL, "Mensaje");
volumen = (Volumen)GetProcAddress(hDLL, "Volumen");
litros = (Litros)GetProcAddress(hDLL, "Litros");
//resultadoPorcentaje = (ResultadoPorcentaje)GetProcAddress(hDLL, "ResultadoPorcentaje");
volumenLitros = (VolumenLitros)GetProcAddress(hDLL, "VolumenLitros");
cantidadTubosLitros = (CantidadTubosLitros)GetProcAddress(hDLL, "CantidadTubosLitros");
totalLitros = (TotalLitros)GetProcAddress(hDLL, "totalLitros");

// Mostrar caracteres correctamente en pantalla y título de la ventana.
SetConsoleOutputCP(65001);
wchar_t titulo[128];
MultiByteToWideChar(CP_UTF8, 0, "Interfaz leer dll C++ nativo 2019.", -1, titulo, 128);
SetConsoleTitle(titulo);

// Tamaño de la pantalla. Se cambia en los dos últimos dígitos.
SMALL_RECT r = { 0, 0, 49, 35 }; // X = 49, Y = 9.
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &r);

// Ocultar cursor.
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
cci.bVisible = 1; // 0 oculta cursor. 1 muestra cursor.
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);

// Posición del cursor.
gotoxy(3, 2);

// Mostrar textos en pantalla.
wcout << mensaje() << endl;
gotoxy(0, 4);
cout << "Introduce el radio en m.: ";
cin >> radio;
cout << "Introduce la altura en m. ";
cin >> altura;
cout << "Introduce altura del agua. Máximo es de " << altura << ":";
cin >> nivelAgua;
cout << "Introduces cantidad de tubos: ";
cin >> cantidadTubos;

// ########## Dibujo de la barra.
cout << "\n";
cout << ("0 %                     50 %                   100 %") << endl;
cout << ("┌────────────────────────┬───────────────────────┐") << endl;

// Mitad de la barra para que no sea muy grande en la pantalla.
resultadoPorcentaje = nivelAgua * (100 / altura);

if (mitadBarra > 50)
{
mitadBarra = 50;
}

// Rellenar la barra.
for (float i = 1; i <= mitadBarra; i++)
{
cout << ("█");
}

// Si llega a 100 se pone el # en rojo.

if (resultadoPorcentaje > 100)
{
cout << ("#");
}
//########## Fin dibujo de la barra.

// Pisición del texto a mostrar.
gotoxy(0, 11);

cout << "\nPorcentaje: " << resultadoPorcentaje << " %.";


FreeLibrary(hDLL);

// Esperando pulsar Enter para salir.
cin.get();
return 0;
}



No se como se quita esos sobrantes textos que aparece al final, pero bueno, por fin ya se puede leer la dichoza dll.

Hay otra cosa que quiero hacer pero no me sale y hago esta pregunta.

Todos los cálculos matemáticos los quiero en la dll, como este de abajo, que al final tuve que ponerlo en la interfaz.
Código:
// Mitad de la barra para que no sea muy grande en la pantalla.
resultadoPorcentaje = nivelAgua * (100 / altura);

¿Hay posibilidad de ponerlo en la dll o no?

Saludos.
115  Programación / .NET (C#, VB.NET, ASP) / Quitar el puntero del ratón en pantalla en: 7 Julio 2020, 14:13 pm
Buenas:

Usando Windows Form C# hice este código.
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace prueba_cs
  12. {
  13.    public partial class Form1 : Form
  14.    {
  15.        public Form1()
  16.        {
  17.            InitializeComponent();
  18.            timer1.Start();
  19.        }
  20.  
  21.  
  22.  
  23.        void cambioColor()
  24.        {
  25.            this.BackColor = Color.Black; // Formulario negro.
  26.            //this.ForeColor = Color.White; // Cambia textos en blanco.
  27.            label1.ForeColor = Color.White;
  28.        }
  29.  
  30.        void cambioColor2()
  31.        {
  32.            this.BackColor = Color.White; // Formulario blanco.
  33.            //this.ForeColor = Color.Black; // Cambia textos en negro.
  34.            label1.ForeColor = Color.Black;
  35.        }
  36.  
  37.        private void timer1_Tick(object sender, EventArgs e)
  38.        {
  39.            cambioColor();
  40.            timer1.Stop();
  41.            timer2.Start();
  42.        }
  43.  
  44.        private void timer2_Tick(object sender, EventArgs e)
  45.        {
  46.            cambioColor2();
  47.            timer2.Stop();
  48.            timer1.Start();
  49.        }
  50.    }
  51. }

Se sale del formulario pulsando Alt + F4. Quiero que se desactive el puntero del ratón en el momento que cree este formulario.

Gracias.
116  Programación / Programación C/C++ / Re: Prueba leer la dll nativo con interfaz C++ nativo en: 6 Julio 2020, 18:51 pm
Entonces este cálculo que me hace falta debe estar en la interfaz, no en la dll.

Código
  1. mitadBarra = resultadoPorcentaje / 2;
117  Programación / Programación C/C++ / Re: MEMORIA SIN LIBERAR C++ en: 6 Julio 2020, 16:47 pm
¿Cómo puedes saber que no se liberó memoria y cuando se se liberó?
118  Programación / Programación C/C++ / Re: Prueba leer la dll nativo con interfaz C++ nativo en: 6 Julio 2020, 16:43 pm
¿Qué iba a cambiar ahí exactamente?
119  Programación / Programación C/C++ / Re: Prueba leer la dll nativo con interfaz C++ nativo en: 6 Julio 2020, 10:00 am
Lo he puesto tiplo float a todos por si acaso.

Código:
// Mitad de la barra para que no sea muy grande en la pantalla.
mitadBarra = resultadoPorcentaje(0, 0, 0) / 2;



Por lo que veo, tengo el diseño mal.

Código:
// Cálculo porcentaje en % del litro de agua.
float __stdcall ResultadoPorcentaje(float resultadoPorcentaje, float nivelAgua, float altura)
{
    return resultadoPorcentaje = nivelAgua * (100 / altura);
}

Ya que solamente necesito el valor de resultadoPorcentaje para añadirlo en un cout << "Tanto porciernto: " << resultadoPorcentaje << endl;
120  Programación / Programación C/C++ / Prueba leer la dll nativo con interfaz C++ nativo en: 6 Julio 2020, 00:49 am
Hola:

Haciendo otras pruebas.

Creo el archivo dll.
Código
  1. #include "pch.h"
  2.  
  3. extern "C"
  4. {
  5.    __declspec(dllexport) LPTSTR __stdcall Mensaje();
  6.    __declspec(dllexport) float __stdcall Volumen(float, float, float, float);
  7.    __declspec(dllexport) float __stdcall Litros(float, float);
  8.    __declspec(dllexport) float __stdcall ResultadoPorcentaje(float, float, float);
  9.    __declspec(dllexport) float __stdcall VolumenLitros(float, float, float, float, float);
  10.    __declspec(dllexport) float __stdcall CantidadTubosLitros(float, float, float);
  11.    __declspec(dllexport) float __stdcall TotalLitros(float, float, float);
  12. };
  13.  
  14. // Mensaje.
  15. LPTSTR __stdcall Mensaje() { return LPTSTR(L"Hola. Saludos desde la dll. Versión: 1.0.0"); }
  16.  
  17. // Cálculo volumen.
  18. float __stdcall Volumen(float volumen, float PI, float radio, float altura)
  19. {
  20.    return volumen = PI * (radio * radio) * altura;
  21. }
  22.  
  23. // Cálculo litros.
  24. float __stdcall Litros(float litros, float volumen)
  25. {
  26.    return litros = volumen * 1000;
  27. }
  28.  
  29. // Cálculo porcentaje en % del litro de agua.
  30. float __stdcall ResultadoPorcentaje(float resultadoPorcentaje, float nivelAgua, float altura)
  31. {
  32.    return resultadoPorcentaje = nivelAgua * (100 / altura);
  33. }
  34.  
  35. // Cálculo litros de agua.
  36. float __stdcall VolumenLitros(float volumenLitros, float PI, float radio, float nivelAgua, float resultadoLitros)
  37. {
  38.    return volumenLitros = PI * (radio * radio) * nivelAgua;
  39.    return resultadoLitros = volumenLitros * 1000;
  40. }
  41.  
  42. // Cálculo litros por cantidad de tubos
  43. float __stdcall CantidadTubosLitros(float cantidadTubosLitros, float cantidadTubos, float resultadoLitros)
  44. {
  45.    return cantidadTubosLitros = cantidadTubos * resultadoLitros;
  46. }
  47.  
  48. // Cálculo cantidad de litros con total de tubos.
  49. float __stdcall TotalLitros(float totalLitros, float litros, float cantidadTubos)
  50. {
  51.    return totalLitros = litros * cantidadTubos;
  52. }

Luego el deb.
Código
  1. LIBRARY DLL_al_poder
  2. EXPORTS
  3. Mensaje
  4. Volumen
  5. Litros
  6. ResultadoPorcentaje
  7. VolumenLitros
  8. CantidadTubosLitros
  9. TotalLitros

Y la interfaz de C++ nativo para que lea la dll.
Código
  1. #include <iostream>
  2. #include <windows.h> // Para mostrar texto en el título de la ventana.
  3.  
  4. using namespace std;
  5. //using std::cout;
  6. //using std::cin;
  7.  
  8. // Función posición del cursor.
  9. void gotoxy(int x, int y)
  10. {
  11. HANDLE hcon;
  12. hcon = GetStdHandle(STD_OUTPUT_HANDLE);
  13. COORD dwPos;
  14. dwPos.X = x;
  15. dwPos.Y = y;
  16. SetConsoleCursorPosition(hcon, dwPos);
  17. }
  18.  
  19. // Definir estas funciones.
  20. typedef LPTSTR(__stdcall* Mensaje)();
  21. typedef float(__stdcall* Volumen)(float, float, float, float);
  22. typedef float(__stdcall* Litros)(float, float);
  23. typedef float(__stdcall* ResultadoPorcentaje)(float, float, float);
  24. typedef float(__stdcall* VolumenLitros)(float, float, float, float, float);
  25. typedef float(__stdcall* CantidadTubosLitros)(float, float, float);
  26. typedef float(__stdcall* TotalLitros)(float, float, float);
  27.  
  28. int main(void)
  29. {
  30. // Variables.
  31. const double Pi = 3.14;
  32. float radio;
  33. float altura;
  34. //double volumen;
  35. //double litros;
  36. float nivelAgua;
  37. //float resultadoPorcentaje;
  38. //double resultadoLitros;
  39. //double volumenLitros;
  40. float mitadBarra;
  41. float cantidadTubos;
  42. //double cantidadTubosLitros;
  43. //double totalLitros;
  44.  
  45. // Importar dll.
  46. HINSTANCE hDLL = 0;
  47. Mensaje mensaje;
  48. Volumen volumen;
  49. Litros litros;
  50. ResultadoPorcentaje resultadoPorcentaje;
  51. VolumenLitros volumenLitros;
  52. CantidadTubosLitros cantidadTubosLitros;
  53. TotalLitros totalLitros;
  54.  
  55. hDLL = LoadLibrary(L"C:\\Users\\Meta\\Documents\\Visual Studio 2019\\Projects\\DLL_y_interfaz_nativo_01_cpp\\Debug\\DLL_y_interfaz_nativo_01_cpp.dll");
  56. mensaje = (Mensaje)GetProcAddress(hDLL, "Mensaje");
  57. volumen = (Volumen)GetProcAddress(hDLL, "Volumen");
  58. litros = (Litros)GetProcAddress(hDLL, "Litros");
  59. resultadoPorcentaje = (ResultadoPorcentaje)GetProcAddress(hDLL, "ResultadoPorcentaje");
  60. volumenLitros = (VolumenLitros)GetProcAddress(hDLL, "VolumenLitros");
  61. cantidadTubosLitros = (CantidadTubosLitros)GetProcAddress(hDLL, "CantidadTubosLitros");
  62. totalLitros = (TotalLitros)GetProcAddress(hDLL, "totalLitros");
  63.  
  64. // Mostrar caracteres correctamente en pantalla y título de la ventana.
  65. SetConsoleOutputCP(65001);
  66. wchar_t titulo[128];
  67. MultiByteToWideChar(CP_UTF8, 0, "Interfaz leer dll C++ nativo 2019.", -1, titulo, 128);
  68. SetConsoleTitle(titulo);
  69.  
  70. // Tamaño de la pantalla. Se cambia en los dos últimos dígitos.
  71. SMALL_RECT r = { 0, 0, 49, 35 }; // X = 49, Y = 9.
  72. SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &r);
  73.  
  74. // Ocultar cursor.
  75. CONSOLE_CURSOR_INFO cci;
  76. GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
  77. cci.bVisible = 1; // 0 oculta cursor. 1 muestra cursor.
  78. SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
  79.  
  80. // Posición del cursor.
  81. gotoxy(3, 2);
  82.  
  83. // Mostrar textos en pantalla.
  84. wcout << mensaje() << endl;
  85. gotoxy(0, 4);
  86. cout << "Introduce el radio en m.: ";
  87. cin >> radio;
  88. cout << "Introduce la altura en m. ";
  89. cin >> altura;
  90. cout << "Introduce altura del agua. Máximo es de " << altura << ":";
  91. cin >> nivelAgua;
  92. cout << "Introduces cantidad de tubos: ";
  93. cin >> cantidadTubos;
  94.  
  95. // ########## Dibujo de la barra.
  96. cout << "\n";
  97. cout << ("0 %                     50 %                   100 %") << endl;
  98. cout << ("&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;") << endl;
  99.  
  100. // Mitad de la barra para que no sea muy grande en la pantalla.
  101. mitadBarra = resultadoPorcentaje / 2;
  102.  
  103. if (mitadBarra > 50)
  104. {
  105. mitadBarra = 50;
  106. }
  107.  
  108. // Rellenar la barra.
  109. for (float i = 1; i <= mitadBarra; i++)
  110. {
  111. cout << ("&#9608;");
  112. }
  113.  
  114. // Si llega a 100 se pone el # en rojo.
  115.  
  116. if (resultadoPorcentaje > 100)
  117. {
  118. cout << ("#");
  119. }
  120. //########## Fin dibujo de la barra.
  121.  
  122. // Pisición del texto a mostrar.
  123. gotoxy(0, 11);
  124.  
  125. //cout << "\nPorcentaje: " << resultadoPorcentaje << " %.";
  126.  
  127.  
  128. FreeLibrary(hDLL);
  129.  
  130. // Esperando pulsar Enter para salir.
  131. cin.get();
  132. return 0;

Me salen estos errores.


No logro solucionarlo.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ... 237
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines