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


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 ... 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 [53] 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 ... 261
521  Programación / Programación C/C++ / Re: Adaptar C++ CLR a C++ Win32 en: 20 Noviembre 2017, 11:19 am
Hola de nuevo:

Estoy haciendo pruebas con MFC C++ y funciona de maravilla, lo que no se cambiar el tamaño de la etiqueta cuando dice Abierto.

Puedo abrir y cerrar la bandeja con este código. Parece mentira con MFC me parezca más fácil que en modo consola, impresioante.



Código
  1. // MFC_ProbandoDlg.cpp: archivo de implementación
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "MFC_Probando.h"
  6. #include "MFC_ProbandoDlg.h"
  7. #include "afxdialogex.h"
  8. #include "mmsystem.h" // No olvidar.
  9.  
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #endif
  13.  
  14.  
  15. // Cuadro de diálogo de CMFCProbandoDlg
  16.  
  17.  
  18.  
  19. CMFCProbandoDlg::CMFCProbandoDlg(CWnd* pParent /*=NULL*/)
  20. : CDialog(IDD_MFC_PROBANDO_DIALOG, pParent)
  21. {
  22. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  23. }
  24.  
  25. void CMFCProbandoDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. }
  29.  
  30. BEGIN_MESSAGE_MAP(CMFCProbandoDlg, CDialog)
  31. ON_WM_PAINT()
  32. ON_WM_QUERYDRAGICON()
  33. ON_BN_CLICKED(IDC_BUTTON_ABRIR, &CMFCProbandoDlg::OnBnClickedButtonAbrir)
  34. ON_BN_CLICKED(IDC_BUTTON_CERRAR, &CMFCProbandoDlg::OnBnClickedButtonCerrar)
  35. END_MESSAGE_MAP()
  36.  
  37.  
  38. // Controladores de mensajes de CMFCProbandoDlg
  39.  
  40. BOOL CMFCProbandoDlg::OnInitDialog()
  41. {
  42. CDialog::OnInitDialog();
  43.  
  44. // Establecer el icono para este cuadro de diálogo.  El marco de trabajo realiza esta operación
  45. //  automáticamente cuando la ventana principal de la aplicación no es un cuadro de diálogo
  46. SetIcon(m_hIcon, TRUE); // Establecer icono grande
  47. SetIcon(m_hIcon, FALSE); // Establecer icono pequeño
  48.  
  49. // TODO: agregar aquí inicialización adicional
  50.  
  51. return TRUE;  // Devuelve TRUE  a menos que establezca el foco en un control
  52. }
  53.  
  54. // Si agrega un botón Minimizar al cuadro de diálogo, necesitará el siguiente código
  55. //  para dibujar el icono.  Para aplicaciones MFC que utilicen el modelo de documentos y vistas,
  56. //  esta operación la realiza automáticamente el marco de trabajo.
  57.  
  58. void CMFCProbandoDlg::OnPaint()
  59. {
  60. if (IsIconic())
  61. {
  62. CPaintDC dc(this); // Contexto de dispositivo para dibujo
  63.  
  64. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  65.  
  66. // Centrar icono en el rectángulo de cliente
  67. int cxIcon = GetSystemMetrics(SM_CXICON);
  68. int cyIcon = GetSystemMetrics(SM_CYICON);
  69. CRect rect;
  70. GetClientRect(&rect);
  71. int x = (rect.Width() - cxIcon + 1) / 2;
  72. int y = (rect.Height() - cyIcon + 1) / 2;
  73.  
  74. // Dibujar el icono
  75. dc.DrawIcon(x, y, m_hIcon);
  76. }
  77. else
  78. {
  79. CDialog::OnPaint();
  80. }
  81. }
  82.  
  83. // El sistema llama a esta función para obtener el cursor que se muestra mientras el usuario arrastra
  84. //  la ventana minimizada.
  85. HCURSOR CMFCProbandoDlg::OnQueryDragIcon()
  86. {
  87. return static_cast<HCURSOR>(m_hIcon);
  88. }
  89.  
  90.  
  91.  
  92. void CMFCProbandoDlg::OnBnClickedButtonAbrir()
  93. {
  94. // TODO: Agregue aquí su código de controlador de notificación de control.
  95. SetDlgItemText(IDC_STATIC_MENSAJE, L"Abriendo..."); // Mostrar texto.
  96. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr); // Abrir bandeja.
  97. SetDlgItemText(IDC_STATIC_MENSAJE, L"Abierto."); // Mostrar texto.
  98. }
  99.  
  100.  
  101. void CMFCProbandoDlg::OnBnClickedButtonCerrar()
  102. {
  103. // TODO: Agregue aquí su código de controlador de notificación de control.
  104. SetDlgItemText(IDC_STATIC_MENSAJE, L"Cerrando..."); // Mostrar texto.
  105. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr); // Cerrar bandeja.
  106. SetDlgItemText(IDC_STATIC_MENSAJE, L"Cerrado."); // Mostrar texto.
  107. }

Siguiendo con el código de C++ en moco consola, he quitado el santo Switch y he usado el else if, ahora puedo abrir la bandeja, pero no puedo cerrarla.

Código
  1. #include "stdafx.h"
  2. #include "stdio.h"
  3. #include "Windows.h"
  4. #include "iostream"
  5. #include "string"
  6. #include "conio.h"
  7. #include "string"
  8.  
  9. using namespace std;
  10.  
  11.  
  12. int main()
  13. {
  14. // Título de la ventana.
  15. SetConsoleTitle(L"Abrir y cerrar bandeja del disco C++ Win32");
  16.  
  17. // Variable
  18. char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
  19.  
  20. while (true)
  21. {
  22. cout << "Control bandeja del lector : \n\n" << endl; // Muestra en pantalla textos.
  23. cout << "A - Abrir bandeja. \n" << endl;
  24. cout << "C - Cerrar bandeja. \n" << endl;
  25. cout << "========================== \n\n" << endl;
  26.  
  27. cin >> entrada; // Aquí introduces letras A, a, C, y c.
  28.  
  29. int i = 0;
  30. char c;
  31.  
  32. while (entrada[i])
  33. {
  34. c = entrada[i];
  35. putchar(tolower(c));
  36. i++;
  37. }
  38.  
  39. string str(entrada);
  40.  
  41. // Abrir bandeja.
  42. if (str == "a")
  43. {
  44. cout << "Abriendo..." << endl; // Muestra en pantalla textos.
  45.   //printf("Abriendo...");
  46.   // Aquí va un evento para que aparezca la palabra Abirendo... mientra se está abriendo el lector.
  47. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  48. cout << "Abierto." << endl; // Muestra en pantalla textos.
  49. } // Cerrar bandeja.
  50. else if (str == "b")
  51. {
  52. cout << "Cerrando..." << endl; // Muestra en pantalla textos.
  53.   // Aquí va un evento.
  54. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  55. cout << "Cerrado." << endl; // Muestra en pantalla textos.
  56. }
  57. else // Si haz pulsado otro caracter distinto de A, C, a, y c aparece
  58. {
  59. cout << "Solo pulsar A o C." << endl; // este mensaje.
  60.  
  61. }
  62.  
  63. }
  64. return EXIT_SUCCESS;
  65. }

¿Alguna idea?

Saludos.
522  Programación / .NET (C#, VB.NET, ASP) / Re: Ayuda necesito que el pc lea en: 20 Noviembre 2017, 03:23 am
No se a que te refieres.
https://msdn.microsoft.com/es-es/library/k0t5wee3.aspx

523  Programación / Programación C/C++ / Re: Solucionando errores en: 19 Noviembre 2017, 22:27 pm
Hola Señor.

¿Cómo estás?

Tenía que poner std, no str, me esquivoqué al escribir, en el cual también da errores.

Hice otro código pero sigue con errores.
Código
  1. #include "stdafx.h"
  2. #include "stdio.h"
  3. #include "Windows.h"
  4. #include "iostream"
  5. #include "string"
  6. #include "conio.h"
  7. #include "cctype"
  8.  
  9. using namespace std;
  10.  
  11.  
  12. int main()
  13. {
  14. // Título de la ventana.
  15. SetConsoleTitle(L"Abrir y cerrar bandeja del disco C++ Win32");
  16.  
  17. // Variable
  18. char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
  19.  
  20. while (true)
  21. {
  22. cout << "Control bandeja del lector : \n\n" << endl; // Muestra en pantalla textos.
  23. cout << "A - Abrir bandeja. \n" << endl;
  24. cout << "C - Cerrar bandeja. \n" << endl;
  25. cout << "========================== \n\n" << endl;
  26.  
  27. cin >> entrada; // Aquí introduces letras A, a, C, y c.
  28.  
  29. switch (tolower(entrada)) // Espera recibir A, a, C, y c. Transforma en minúscula.
  30. {
  31. // Abrir bandeja.
  32. case 'a':
  33. cout << "Abriendo..." << endl; // Muestra en pantalla textos.
  34. //printf("Abriendo...");
  35. // Aquí va un evento para que aparezca la palabra Abirendo... mientra se está abriendo el lector.
  36. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  37. cout << "Abierto." << endl; // Muestra en pantalla textos.
  38. break;
  39.  
  40. // Cerrar bandeja.
  41. case 'b':
  42. cout << "Cerrando..." << endl; // Muestra en pantalla textos.
  43. // Aquí va un evento.
  44. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  45. cout << "Cerrado." << endl; // Muestra en pantalla textos.
  46. break;
  47.  
  48. default: // Si haz pulsado otro caracter distinto de A, C, a, y c aparece
  49. cout << "Solo pulsar A o C." << endl; // este mensaje.
  50. }
  51. }
  52. return EXIT_SUCCESS;
  53. }
  54.  
  55.  

Errores:


Si que me está dando guerra.

Saludos.
524  Programación / .NET (C#, VB.NET, ASP) / Re: ¿Por qué me salen botones repetidos? en: 19 Noviembre 2017, 20:43 pm
Buenas:

Veo que hay GUI para hacer la vida más fácil, no tiene todos los códigos pero funciona.
https://poshgui.com/#

Más GUI para elegir.
http://tianit.cloudapp.net/blog/index.php/2015/11/04/crear-formularios-con-powershell/

¿Por qué Microsoft no pone como novedad un editor GUI visual para F# y PowerShell?

No se porqué no lo hace si hay demanda, los que lo hacen son terceros y no están completos pero lo intentan y al menos existen para escapar.

Mi truco es, hacer el formulario al 100 % con Visual C# y adaptar los códigos a PowerShell con lo que quiere mucho tiempo.

Saludos.
525  Programación / Scripting / Crear formulario de estos lenguajes en: 19 Noviembre 2017, 11:08 am
Hola:

Antes pensaba que PowerShell solo era línea de comandos, el sustituto del CMD de Windows se puede decir. He descubierto hoy que se puede crear formulario tal como lo hace Windows Form de Visual C# o Visual Basic .net.

Aquí hay un editor de formularios para hacerlo más rápido por vía Web y te genera el código para probarlo en el Power Shell.
https://poshgui.com/#

Aquí encuentras más enalces.
# http://tianit.cloudapp.net/blog/index.php/2015/11/04/crear-formularios-con-powershell/

Por ejemplo, abajo un formalario creado en visual solo con códigos de PowerShell.


Mi pregunta es.

¿Se puede crear también formularios con el lenguaje Visual F#?


Por todas partes se llama Visual F#, pero solo he visto códigos en modo consola.

Saludos.
526  Programación / .NET (C#, VB.NET, ASP) / ¿Por qué me salen botones repetidos? en: 19 Noviembre 2017, 09:24 am
Hola:

Tengo esta ventana creada con PowerShell. Lo que no entiendo por mucho que observe el código, es que me aparezcan dos botones iguales en la parte de arriba.



Código:
# Cargo los Assemblies (necesario para definir el form).
[void][reflection.assembly]::loadwithpartialname("System.Windows.Forms")
[void][reflection.assembly]::loadwithpartialname("System.Drawing")

            $label_Mensaje = New-Object System.Windows.Forms.Label
            $button_Abrir = New-Object System.Windows.Forms.Button
            $button_Cerrar = New-Object System.Windows.Forms.Button
            $groupBox_Bandeja = New-Object System.Windows.Forms.GroupBox

            #
            # label_Mensaje
            #
            $label_Mensaje.Location = New-Object System.Drawing.Point(12, 9)
            $label_Mensaje.Name = "label_Mensaje"
            $label_Mensaje.Size = New-Object System.Drawing.Size(58, 13)
            $label_Mensaje.Text = "Abriendo..."
            #
            # button_Abrir
            #
            $button_Abrir.Location = New-Object System.Drawing.Point(31, 30)
            $button_Abrir.Name = "button_Abrir"
            $button_Abrir.Size = New-Object System.Drawing.Size(75, 23)
            $button_Abrir.Text = "Abrir"         
            #
            # button_Cerrar
            #
            $button_Cerrar.Location = New-Object System.Drawing.Point(139, 30)
            $button_Cerrar.Name = "button_Cerrar"
            $button_Cerrar.Size = New-Object System.Drawing.Size(75, 23)
            $button_Cerrar.Text = "Cerrar"
            #
            # groupBox_Bandeja
            #
            $groupBox_Bandeja.Controls.Add($button_Cerrar)
            $groupBox_Bandeja.Controls.Add($button_Abrir)
            $groupBox_Bandeja.Location = New-Object System.Drawing.Point(15, 118)
            $groupBox_Bandeja.Name = "groupBox_Bandeja"
            $groupBox_Bandeja.Size = New-Object System.Drawing.Size(250, 97)
            $groupBox_Bandeja.Text = "Bandeja"

            #
            # Form1
            #
            #$AutoScaleDimensions = New-Object System.Drawing.SizeF(6F, 13F)
            #$AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            $Form.ClientSize = New-Object System.Drawing.Size(284, 261)
            $Form.Controls.Add($groupBox_Bandeja)
            $Form.Controls.Add($label_Mensaje)
            $Form.Name = "Form1"
            $Form.Text = "Ventana PowerShell"

            # Ejecuto el formulario.
            [void]$Form.ShowDialog()

Saludos.
527  Programación / Scripting / Hacer un menú sencillo con este Script en: 19 Noviembre 2017, 07:22 am
Hola a todos y a todas:

Quiero hacer un menú sencillo que las funciones se hará después.

Por ahora he hecho esto de esta manera haciendo pruebas.

Citar
╔====================================╗
║     Control bandeja del lector     ║
╠====================================╣
║                                    ║
1) Primera Opción
2) Segunda Opción
3) Tercera Opción
S) Presiona 'S' para salir
Elegir una Opción:

Como puedes ver, pulso el número 2), luego Enter para poder entrar en el menú. Mi idea es, desde que pulses la tecla número 2), entre directamente a la Segunda opción sin tener que pulsar Enter.

Código:
{ 
     param (
           [string]$Titulo = ' Control bandeja del lector '
     )
     cls
     Write-Host "╔====================================╗"
     Write-Host "║    $Titulo    ║"
     Write-Host "╠====================================╣"
     Write-Host "║                                    ║"

     
     Write-Host "1) Primera Opción"
     Write-Host "2) Segunda Opción"
     Write-Host "3) Tercera Opción"
     Write-Host "S) Presiona 'S' para salir"
}

do
{
     mostrarMenu
     $input = Read-Host "Elegir una Opción"
     switch ($input)
     {
           '1' {
                cls
                'Primera Opción'
           } '2' {
                cls
                'Segunda Opción'
           } '3' {
                cls
                'Tercera Opción'
           } 's' {
                return
           } 
     }
     pause
}
until ($input -eq 's')


¿Cómo se hace lo que quiero?

Saludos.
528  Programación / Programación C/C++ / Re: Adaptar C++ CLR a C++ Win32 en: 19 Noviembre 2017, 04:29 am
Hola:

Una aclaración de lo que quiero hacer.

Puedo introducir estas letras, A, a, C y c. Si introduzco otra cosa, las ignora.

Si en el teclado pulso la letra A mayúscula, pues con el str.ToLower quería que cualquier letra que pulse mayúscula, lo convierta en minúscula.

He comprobado que tu código al final si funciona, si pongo el teclado en mayúscula activado. Solo falta la soltura de vovler a preguntar siempre las teclas en vez de cerrarse el programa.

Aún así, tu código, buen trabajo. Ya vamos paso a paso.

Saludos.
529  Programación / .NET (C#, VB.NET, ASP) / Re: Hacer funcionar el lector de bandeja de discos con este lenguaje .net en: 19 Noviembre 2017, 01:52 am
Hola:

Ya está está solucionado. Hay que leerse bien hasta las narices los tutos estos deF#.
https://msdn.microsoft.com/es-es/library/ee241126(v=vs.110).aspx
https://msdn.microsoft.com/es-es/library/dd233160(v=vs.120).aspx

Código F#:
Código
  1. // Más información acerca de F# en http://fsharp.org
  2.  
  3. open System
  4. open System.Runtime.InteropServices
  5. open System.Text;
  6.  
  7. // importar librería o dll externo.
  8. [<DllImport("winmm.dll")>]
  9. extern int mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
  10.        int uReturnLength, IntPtr hwndCallback)
  11.  
  12. let rt = StringBuilder(127)
  13.  
  14. // Evento.
  15. let DoEvents (transition:string) =
  16.    Console.SetCursorPosition(0, 6)
  17.    Console.Write transition
  18.  
  19. let action state transition (mensaje:string) =
  20.    Console.SetCursorPosition(0, 6);
  21.    DoEvents transition;
  22.    mciSendString(state, rt, 127, IntPtr.Zero) |> ignore
  23.    Console.SetCursorPosition(0, 6)
  24.    Console.Write("           ")
  25.    Console.SetCursorPosition(0, 6)
  26.    Console.Write(mensaje)
  27.  
  28. // Pulse letra A para abrir bandeja o C para cerrar bandeja.
  29. let rec loop() =
  30.    match Console.ReadKey(true).Key with
  31.    | ConsoleKey.Escape -> ()
  32.    | ConsoleKey.A -> action "set CDAudio door open" "Abriendo..." "Abierto."
  33.                      loop()
  34.    | ConsoleKey.C -> action "set CDAudio door closed" "Cerrando..." "Cerrado."
  35.                      loop()
  36.    | _ -> loop()
  37.  
  38. [<EntryPoint>]
  39. let main argv =
  40.    // Título de la ventana.
  41.    Console.Title <- "F#"
  42.  
  43.    // Tamaño ventana consola.
  44.    Console.WindowWidth <- 29 // X. Ancho.
  45.    Console.WindowHeight <- 8 // Y. Alto.
  46.  
  47.    // Cursor invisible.
  48.    Console.CursorVisible <- false
  49.  
  50.    // Posición del mansaje en la ventana.
  51.    Console.SetCursorPosition(0, 0)
  52.    Console.Write(@"Control bandeja del lector:
  53.  
  54. A - Abrir bandeja.
  55. C - Cerrar bandeja.
  56. ===========================")
  57.    loop()
  58.    0 // return an integer exit code

Por cierto. Los códigos GeSHI no inclute F# de este foro.

¿Se incluirán en el futuro y no se puede?

Saludos.
530  Programación / Programación C/C++ / Re: Adaptar C++ CLR a C++ Win32 en: 19 Noviembre 2017, 00:10 am
Buenas:

Tu programa ejecuta pero no pasa nada si pulso las teclas.

Intenté hacerlo como pude a mi manera pero no ejecuta.

Código
  1. #include "stdafx.h"
  2. #include "stdio.h"
  3. #include "Windows.h"
  4. #include "iostream"
  5. #include "string"
  6. #include "conio.h"
  7.  
  8. using namespace std;
  9.  
  10.  
  11. int main()
  12. {
  13. // Título de la ventana.
  14. SetConsoleTitle(L"Abrir y cerrar bandeja del disco C++ Win32");
  15.  
  16. // Variable
  17. char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
  18.  
  19. while (true)
  20. {
  21. printf("Control bandeja del lector : \n\n");
  22. printf("A - Abrir bandeja. \n");
  23. printf("C - Cerrar bandeja. \n");
  24. printf("========================== \n\n");
  25.  
  26. cin >> entrada; // Aquí introduces letras A, a, C, y c.
  27.  
  28. switch (srt.tolower(entrada)) // Espera recibir A, a, C, y c. Transforma en minúscula.
  29. {
  30. // Abrir bandeja.
  31. case 'a':
  32. cout << "Abriendo..." << endl; // Muestra en pantalla textos.
  33. //printf("Abriendo...");
  34. // Aquí va un evento para que aparezca la palabra Abirendo... mientra se está abriendo el lector.
  35. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  36. cout << "Abierto." << endl; // Muestra en pantalla textos.
  37. break;
  38.  
  39. // Cerrar bandeja.
  40. case 'b':
  41. cout << "Cerrando..." << endl; // Muestra en pantalla textos.
  42. // Aquí va un evento.
  43. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  44. cout << "Cerrado." << endl; // Muestra en pantalla textos.
  45. break;
  46.  
  47. default: // Si haz pulsado otro caracter distinto de A, C, a, y c aparece
  48. cout << "Solo pulsar A o C." << endl; // este mensaje.
  49. }
  50. }
  51. return EXIT_SUCCESS;
  52. }

Algo se nos escapa.

Saludos.
Páginas: 1 ... 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 [53] 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 ... 261
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines