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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 ... 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [46] 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 ... 255
451  Programación / Programación C/C++ / Re: [SOLUCIONADO] Solucionando errores Menú abrir y cerrar unidad CD-ROM en: 25 Noviembre 2017, 15:13 pm
Se me pasó por alto, ajajjajaja.

Gracias por todo campeón.  ;-)
452  Programación / Java / Otro estilo en Java en: 22 Noviembre 2017, 23:52 pm
Hola:

Aquí hay un código hecho en Java usando WMPlayer.OCX.7. Quiero usar en Java mciSendString(L"Set CDAudio Door Open Wait", 0, 0, 0);
Es para abrir y cerrar la bandeja.

Código
  1. /**
  2.  
  3.  *
  4.  
  5.  */
  6.  
  7. package com.sabado;
  8.  
  9.  
  10.  
  11. import java.io.File;
  12.  
  13. import java.io.FileWriter;
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. /**
  22.  
  23.  * -.-
  24.  
  25.  *
  26.  
  27.  */
  28.  
  29. public class Unidad {
  30.  
  31.  
  32.  
  33. /**
  34.  
  35. * @param args
  36.  
  37. */
  38.  
  39. public static void main(String[] args) {
  40.  
  41. // TODO Auto-generated method stub
  42.  
  43. //mostramos mensajes antes de abrir las bandejas de CD DVD
  44.  
  45. javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
  46.  
  47.               null, "Pulsa OK para abrir las bandejas de los " +
  48.  
  49.       "lectores/grabadores de CD/DVD del equipo.", "Abrir CD/DVD",
  50.  
  51.               javax.swing.JOptionPane.DEFAULT_OPTION);
  52.  
  53.    Unidad.abrirBandejaCDDVD();
  54.  
  55.  
  56.  
  57. //mostramos mensaje antes de cerrar las bandejas de CD DVD
  58.  
  59. javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
  60.  
  61.         null, "Pulsa OK para cerrar las bandejas de los " +
  62.  
  63.       "lectores/grabadores de CD/DVD del equipo.", "Cerrar CD/DVD",
  64.  
  65.         javax.swing.JOptionPane.DEFAULT_OPTION);
  66.  
  67.    Unidad.cerrarBandejaCDDVD();
  68.  
  69.  
  70.  
  71. }
  72.  
  73.  
  74.  
  75. public static void abrirBandejaCDDVD ()
  76.  
  77.  {
  78.  
  79.  
  80.  
  81.  try
  82.  
  83.  {
  84.  
  85.        File file = File.createTempFile("abrirbandejacd",".vbs");
  86.  
  87.        file.deleteOnExit();
  88.  
  89.        FileWriter fw = new java.io.FileWriter(file);
  90.  
  91.        String vbs = "Set objPlayer = CreateObject(\"WMPlayer.OCX.7\") \n"
  92.  
  93.                   + "Set collCDROM = objPlayer.cdromCollection \n"
  94.  
  95.                   + "if collCDROM.Count >= 1 then \n"
  96.  
  97.                   + "For i = 0 to collCDROM.Count - 1 \n"
  98.  
  99.   + "collCDROM.Item(i).Eject \n"
  100.  
  101.   + "Next \n"
  102.  
  103.   + "End If \n";
  104.  
  105.        fw.write(vbs);
  106.  
  107.        fw.close();
  108.  
  109.        Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor();
  110.  
  111.    }
  112.  
  113.    catch(Exception e)
  114.  
  115. {
  116.  
  117.        e.printStackTrace();
  118.  
  119.    }
  120.  
  121.  }
  122.  
  123.  
  124.  
  125. public static void cerrarBandejaCDDVD()
  126.  
  127.  {
  128.  
  129.    try
  130.  
  131.    {
  132.  
  133.        File file = File.createTempFile("cerrarbandejacd",".vbs");
  134.  
  135.        file.deleteOnExit();
  136.  
  137.        FileWriter fw = new FileWriter(file);
  138.  
  139.        //para cerrar las bandejas de CD hay que ejecutar "eject" dos veces
  140.  
  141.        String vbs = "Set objPlayer = CreateObject(\"WMPlayer.OCX.7\") \n"
  142.  
  143.                   + "Set collCDROM = objPlayer.cdromCollection \n"
  144.  
  145.                   + "if collCDROM.Count >= 1 then \n"
  146.  
  147.                   + "For i = 0 to collCDROM.Count - 1 \n"
  148.  
  149.   + "collCDROM.Item(i).Eject \n"
  150.  
  151.   + "collCDROM.Item(i).Eject \n"
  152.  
  153.   + "Next \n"
  154.  
  155.   + "End If \n";
  156.  
  157.        fw.write(vbs);
  158.  
  159.        fw.close();
  160.  
  161.        Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor();
  162.  
  163.    }
  164.  
  165.    catch(Exception e)
  166.  
  167. {
  168.  
  169.        e.printStackTrace();
  170.  
  171.    }
  172.  
  173.  }
  174.  
  175. }

¿Algún ejemplo usando mciSendString en Java?

Lo pregunto porque el de arriba es mucho código para lo que hay que hacer, abrir y cerrar la bandeja.

Un ejemplo en C++ se hace en menos líneas de códigos, por ejemplo este indicado abajo.

Paso 1:


Paso 2:


Paso3:
Escribir Winmm.lib.


Paso 4:


Sólo se necesita tres includes.

Código
  1. #include "stdafx.h"
  2. #include "Windows.h"
  3. #include "iostream"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. // Título de la ventana.
  10. SetConsoleTitle(L"Consola C++ Win32 2017");
  11.  
  12. // Variable.
  13. char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
  14.  
  15. while (true)
  16. {
  17. // Muestra en pantalla textos.
  18. cout << "Control bandeja del lector: " << endl << endl;
  19. cout << "A - Abrir bandeja." << endl;
  20. cout << "C - Cerrar bandeja." << endl;
  21. cout << "==========================" << endl;
  22.  
  23. cin >> entrada; // Aquí introduces letras A, a, C, y c.
  24.  
  25. cout << "\n" << endl;
  26.  
  27. // Abrir bandeja.
  28. if ((entrada[0] == 'a') || (entrada[0] == 'A'))
  29. {
  30. cout << "Abriendo..." << endl << endl; // Muestra en pantalla textos.
  31. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  32. cout << "Abierto." << endl << endl; // Muestra en pantalla textos.
  33. }
  34. // Cerrar bandeja.
  35. else if ((entrada[0] == 'c') || (entrada[0] == 'C'))
  36. {
  37. cout << "Cerrando..." << endl << endl; // Muestra en pantalla textos.
  38. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  39. cout << "Cerrado." << endl << endl; // Muestra en pantalla textos.
  40. }
  41. // Si haz pulsado otro caracter distinto de A, C, a, y c aparece
  42. else
  43. {
  44. cout << "Solo pulsar A o C." << endl << endl; // este mensaje.
  45.  
  46. }
  47. }
  48. return EXIT_SUCCESS;
  49. }

Saludos.
453  Programación / Scripting / Re: Hacer un menú sencillo con este Script en: 22 Noviembre 2017, 14:20 pm
Hola:

Ya he sido capaz de abrir y cerrar la bandeja con PowerShell. LA fomra como es el menú no me hace gracia. Hay que pulsar una letra, luego Enter y después Enter para pulsar otra tecla más para cerra la bandeja.

Mi idea es que al pulsar la letra A o a, Abra la bandeja y preparado para que pulses otra letra. Nada de pulsar la A y luego Enter, para luego otra vez Enter. Si saben hacerlo mejor, avisen. De momento aquí funciona, es capaz de abrir y cerrara la bandeja.

Código
  1. $MemDef = @"
  2. [DllImport("winmm.dll", CharSet = CharSet.Ansi)]
  3.   public static extern int mciSendStringA(
  4.   string lpstrCommand,
  5.   string lpstrReturnString,
  6.   int uReturnLength,
  7.   IntPtr hwndCallback);
  8. "@
  9.  
  10. $winnm = Add-Type -memberDefinition $MemDef -ErrorAction 'SilentlyContinue' -passthru -name mciSendString
  11. function Set-CDAudioDoor {
  12. Param(
  13.  [ValidateSet("open", "closed")][String[]]$Mode = 'open'
  14. )
  15. $winnm::mciSendStringA("set cdaudio door $mode", $null, 0,0)}
  16.  
  17. function mostrarMenu
  18. {
  19.     param (
  20.           [string]$Titulo = ' Control bandeja del lector '
  21.     )
  22.     cls
  23.     Write-Host "&#9556;====================================&#9559;"
  24.     Write-Host "&#9553;    $Titulo    &#9553;"
  25.     Write-Host "&#9568;====================================&#9571;"
  26.     Write-Host "&#9553;                                    &#9553;"
  27.     Write-Host "&#9553;    A) Abrir.                       &#9553;"
  28.     Write-Host "&#9553;    C) Cerrar.                      &#9553;"
  29.     Write-Host "&#9553;    I) Información.                 &#9553;"
  30.     Write-Host "&#9553;    S) Presiona 'S' para salir.     &#9553;"
  31.     Write-Host "&#9553;                                    &#9553;"
  32.     Write-Host "&#9562;====================================&#9565;"
  33. }
  34.  
  35. do
  36. {
  37.     mostrarMenu
  38.     $input = Read-Host "      Elegir una Opción"
  39.     switch ($input)
  40.     {
  41.           'a' {
  42.                cls
  43.                'Abriendo...'
  44.                Set-CDAudioDoor open
  45.                'Abierto.'
  46.                ' '
  47.           } 'c' {
  48.                cls
  49.                'Cerrando...'
  50.                Set-CDAudioDoor closed
  51.                'Cerrado.'
  52.           } 'i' {
  53.                cls
  54.                'PowerShell'
  55.                '=========='
  56.                Get-Host
  57.           } 's' {
  58.                return
  59.           }  
  60.     }
  61.     pause
  62. }
  63. until ($input -eq 's')

Saludos.
454  Programación / Programación C/C++ / [SOLUCIONADO] Solucionando errores en: 22 Noviembre 2017, 03:31 am
Hola NEBIRE:

Ya descubrí el motivo, menudo despiste por mi parte. Antes hay que hacer esto. Lo pongo aquí por si alguien lo necesita.

Paso 1:


Paso 2:


Paso3:
Escribir Winmm.lib.


Paso 4:


Sólo se necesita tres includes.

Código
  1. #include "stdafx.h"
  2. #include "Windows.h"
  3. #include "iostream"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. // T&#237;tulo de la ventana.
  10. SetConsoleTitle(L"Consola C++ Win32 2017");
  11.  
  12. // Variable.
  13. char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
  14.  
  15. while (true)
  16. {
  17. // Muestra en pantalla textos.
  18. cout << "Control bandeja del lector: " << endl << endl;
  19. cout << "A - Abrir bandeja." << endl;
  20. cout << "C - Cerrar bandeja." << endl;
  21. cout << "==========================" << endl;
  22.  
  23. cin >> entrada; // Aqu&#237; introduces letras A, a, C, y c.
  24.  
  25. cout << "\n" << endl;
  26.  
  27. // Abrir bandeja.
  28. if ((entrada[0] == 'a') || (entrada[0] == 'A'))
  29. {
  30. cout << "Abriendo..." << endl << endl; // Muestra en pantalla textos.
  31. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  32. cout << "Abierto." << endl << endl; // Muestra en pantalla textos.
  33. }
  34. // Cerrar bandeja.
  35. else if ((entrada[0] == 'c') || (entrada[0] == 'C'))
  36. {
  37. cout << "Cerrando..." << endl << endl; // Muestra en pantalla textos.
  38. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  39. cout << "Cerrado." << endl << endl; // Muestra en pantalla textos.
  40. }
  41. // Si haz pulsado otro caracter distinto de A, C, a, y c aparece
  42. else
  43. {
  44. cout << "Solo pulsar A o C." << endl << endl; // este mensaje.
  45.  
  46. }
  47. }
  48. return EXIT_SUCCESS;
  49. }

Muchas gracias por darme ideas campeones. Me han ayudado mucho entender.

Un cordial saludos.
455  Programación / Programación General / Re: Han cambiado las cosa al actualizar Visual Studio Community 2017 en: 22 Noviembre 2017, 02:21 am
Hola:

Después de varios días machacándome las neurones, por fin di con el problema.



Jamás tocar Command bar, arriba a la derecha, no tocar ese comboBox ni loco.
456  Programación / Scripting / Re: Hacer un menú sencillo con este Script en: 21 Noviembre 2017, 01:07 am
Lo he probado y no funciona. Pero no se ma había ocurrido. ;)

Tampoco este.
Código
  1. $items.closed()

Saludos.
457  Programación / Programación C/C++ / RE: Solucionando errores en: 20 Noviembre 2017, 20:44 pm
Buenas:

Problema resuelto y problema sin resolver.

El código que está abajo funciona, el programa tiene un nombre del proyecto, lo curioso que he creado otro proyecto con otro nombre, así varias veces y esta vez no hay manera de que funcione el programa. El un problema muy curioso y eso que uso el mismo código. Donde da problemas en en lo señalado abajo.

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. #include "locale"
  9.  
  10. using namespace std;
  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. // Muestra en pantalla textos.
  23. cout << "Control bandeja del lector : " << endl << endl;
  24. cout << "A - Abrir bandeja." << endl;
  25. cout << "C - Cerrar bandeja." << endl;
  26. cout << "==========================" << endl;
  27.  
  28. cin >> entrada; // Aquí introduces letras A, a, C, y c.
  29.  
  30. cout << "\n" << endl;
  31.  
  32. // Abrir bandeja.
  33. if (entrada[0] == 'a' || entrada[0] == 'A')
  34. {
  35. cout << "Abriendo..." << endl << endl; // Muestra en pantalla textos.
  36. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  37. cout << "Abierto." << endl << endl; // Muestra en pantalla textos.
  38. }
  39.  
  40. // Cerrar bandeja.
  41. else if (entrada[0] == 'c' || entrada[0] == 'C')
  42. {
  43. cout << "Cerrando..." << endl << endl; // Muestra en pantalla textos.
  44. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  45. cout << "Cerrado." << endl << endl; // Muestra en pantalla textos.
  46. }
  47.  
  48. // Si haz pulsado otro caracter distinto de A, C, a, y c aparece
  49. else
  50. {
  51. cout << "Solo pulsar A o C." << endl << endl; // este mensaje.
  52.  
  53. }
  54. }
  55. return EXIT_SUCCESS;
  56. }

Concretamente falla en:
Código
  1. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);

Código de error:
Citar
Gravedad   Código   Descripción   Proyecto   Archivo   Línea   Estado suprimido
Error   LNK2019   símbolo externo __imp__mciSendStringW@16 sin resolver al que se hace referencia en la función _main   Bandeja_consola_win32_cpp   C:\Users\Usuario\Documents\Visual Studio 2017\Projects\Bandeja_consola_win32_cpp\Bandeja_consola_win32_cpp\Bandeja_consola_win32_cpp.obj   1   


Gravedad   Código   Descripción   Proyecto   Archivo   Línea   Estado suprimido
Error   LNK1120   1 externos sin resolver   Bandeja_consola_win32_cpp   C:\Users\Usuario\Documents\Visual Studio 2017\Projects\Bandeja_consola_win32_cpp\Debug\Bandeja_consola_win32_cpp.exe   1   


A pesar de los enlaces que dan, no entiendo nada ni como resolverlo.
LNK2019.
LNK1120.

¿Es normal que funcione el código, para que lo vuelva a crear con otro nombre del proyecto no funcione ni una vez?

¿Qué es lo que ocurre?

Gracias por todo.
458  Programación / Programación C/C++ / Re: Adaptar C++ CLR a C++ Win32 en: 20 Noviembre 2017, 20:43 pm
Ole, campeón. Te has resuelto el tema, solo te falta cambiar la "b" por "c", jejeje.

No lo he resuelto arriba, lo acabo de resolver ahora que pongo los resultado aquí mismo. Lo que he resuelto arriba es MFC C++ 2017.

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. #include "locale"
  9.  
  10. using namespace std;
  11.  
  12.  
  13. int main()
  14. {
  15. // Título de la ventana.
  16. SetConsoleTitle(L"Abrir y cerrar bandeja del disco C++ Win32");
  17.  
  18. // Variable
  19. char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
  20.  
  21. while (true)
  22. {
  23. cout << "Control bandeja del lector : \n\n" << endl; // Muestra en pantalla textos.
  24. cout << "A - Abrir bandeja. \n" << endl;
  25. cout << "C - Cerrar bandeja. \n" << endl;
  26. cout << "========================== \n\n" << endl;
  27.  
  28. cin >> entrada; // Aquí introduces letras A, a, C, y c.
  29.  
  30. cout << "\n" << endl;
  31.  
  32.  
  33.  
  34.  
  35. // Abrir bandeja.
  36. if (entrada[0] == 'a' || entrada[0] == 'A')
  37. {
  38. cout << "Abriendo..." << endl << endl; // Muestra en pantalla textos.
  39. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  40. cout << "Abierto." << endl << endl; // Muestra en pantalla textos.
  41. } // Cerrar bandeja.
  42. else if (entrada[0] == 'c' || entrada[0] == 'C')
  43. {
  44. cout << "Cerrando..." << endl << endl; // Muestra en pantalla textos.
  45. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  46. cout << "Cerrado." << endl << endl; // Muestra en pantalla textos.
  47. }
  48. else // Si haz pulsado otro caracter distinto de A, C, a, y c aparece
  49. {
  50. cout << "Solo pulsar A o C." << endl << endl; // este mensaje.
  51.  
  52. }
  53.  
  54. }
  55. return EXIT_SUCCESS;
  56. }

Gracias por todo.
459  Programación / Scripting / Re: Hacer un menú sencillo con este Script en: 20 Noviembre 2017, 15:41 pm
Buenas:

He mejorado el ménú y puedo abrir la bandeja del disco, pero no me se el código de cerrar la bandeja.

Código
  1. function mostrarMenu
  2. {
  3.     param (
  4.           [string]$Titulo = ' Control bandeja del lector '
  5.     )
  6.     cls
  7.     Write-Host "&#9556;====================================&#9559;"
  8.     Write-Host "&#9553;    $Titulo    &#9553;"
  9.     Write-Host "&#9568;====================================&#9571;"
  10.     Write-Host "&#9553;                                    &#9553;"
  11.     Write-Host "&#9553;    1) Abrir.                       &#9553;"
  12.     Write-Host "&#9553;    2) Cerrar.                      &#9553;"
  13.     Write-Host "&#9553;    3) Información.                 &#9553;"
  14.     Write-Host "&#9553;    S) Presiona 'S' para salir.     &#9553;"
  15.     Write-Host "&#9553;                                    &#9553;"
  16.     Write-Host "&#9562;====================================&#9565;"
  17. }
  18.  
  19. do
  20. {
  21.     mostrarMenu
  22.     Write-Host ""
  23.     $input = Read-Host "      Elegir una Opción."
  24.     switch ($input)
  25.     {
  26.           '1' {
  27.                cls
  28.                'Abriendo...'
  29.                $items = (New-Object -com "WMPlayer.OCX.7").cdromcollection.item(0)            
  30.                $items.eject()
  31.                'Abierto.'
  32.                Write-Host ""
  33.           } '2' {
  34.                cls
  35.                'Segunda Opción'
  36.           } '3' {
  37.                cls
  38.                'Información.'
  39.           } 's' {
  40.                return
  41.           }  
  42.     }
  43.     pause
  44. }
  45. until ($input -eq 's')

¿Cuál es el código para cerrar el disco?

Gracias.
460  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.
Páginas: 1 ... 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [46] 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 ... 255
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines