none
Pasar de Visual C# a Visual C++ abrir y cerrar bandeja RRS feed

  • Pregunta

  • Hola:

    Uso ahora mismo el Visual C# Express 2010 beta 2, tengo este código hecho con Visual C# Express 2008 (en español). ¿En C# funciona? Lo que hace es que en un Form1, tiene dos button y un label que te dice bandeja del lector abiero o cerrado.

    ¿Cómo es el código en C++? Que haga el mismo funcionaniento pero en C++.

    Código en C# es:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    namespace CD_Control
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            [DllImport("winmm.dll", EntryPoint = "mciSendStringA")]
            public static extern void mciSendStringA(string lpstrCommand,
                string lpstrReturnString, long uReturnLength, long hwndCallback);
            //Why did i put this here?
            string rt = "";
            private void button1_Click(object sender, EventArgs e)
            {
                mciSendStringA("set CDAudio door open", rt, 127, 0);
                label1.Text = "Abierto";
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                mciSendStringA("set CDAudio door closed", rt, 127, 0);
                label1.Text = "Cerrado";
            }
        }
    }


    Un cordial saludo.

Respuestas

  • Hola:

    Desde el noviembre del 2009 dije que lo iba a probar y se me pasó el tiempo, ahora estamos en noviembre del 2017. Mucho a llovido desde entonces.

    Dejo el código completo dle C++ CLR. Ya que en Google aparece a veces este tema y no hay respuesta respondida. Así de paso, para el que lo necesita, aquí está la aclaración gracias a los compañeros del foro.

    Código C++ CLR:

    #pragma once
    
    namespace Lectordiscoscpp {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::Runtime::InteropServices; // No olvidar.
    	using namespace System::Text;
    
    	/// <summary>
    	/// Resumen de Form_principal
    	/// </summary>
    	public ref class Form_principal : public System::Windows::Forms::Form
    	{
    	public:
    		Form_principal(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: agregar código de constructor aquí
    			//
    		}
    
    		// ########################################################################
    		[DllImport("winmm.dll")]
    		static Int32 mciSendString(String^ lpstrCommand, StringBuilder^ lpstrReturnString,
    			int uReturnLength, IntPtr hwndCallback);
    
    		static StringBuilder^ rt = gcnew StringBuilder(127);
    		// ########################################################################
    
    	protected:
    		/// <summary>
    		/// Limpiar los recursos que se estén usando.
    		/// </summary>
    		~Form_principal()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::Label^  label_Mensaje;
    	private: System::Windows::Forms::GroupBox^  groupBox_bandeja;
    	private: System::Windows::Forms::Button^  button_Cerrar;
    	private: System::Windows::Forms::Button^  button_Abrir;
    	protected:
    
    	protected:
    
    	private:
    		/// <summary>
    		/// Variable del diseñador necesaria.
    		/// </summary>
    		System::ComponentModel::Container ^components;
    
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Método necesario para admitir el Diseñador. No se puede modificar
    		/// el contenido de este método con el editor de código.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->label_Mensaje = (gcnew System::Windows::Forms::Label());
    			this->groupBox_bandeja = (gcnew System::Windows::Forms::GroupBox());
    			this->button_Cerrar = (gcnew System::Windows::Forms::Button());
    			this->button_Abrir = (gcnew System::Windows::Forms::Button());
    			this->groupBox_bandeja->SuspendLayout();
    			this->SuspendLayout();
    			// 
    			// label_Mensaje
    			// 
    			this->label_Mensaje->AutoSize = true;
    			this->label_Mensaje->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 36, System::Drawing::FontStyle::Bold));
    			this->label_Mensaje->Location = System::Drawing::Point(12, 9);
    			this->label_Mensaje->Name = L"label_Mensaje";
    			this->label_Mensaje->Size = System::Drawing::Size(52, 55);
    			this->label_Mensaje->TabIndex = 0;
    			this->label_Mensaje->Text = L"\?";
    			// 
    			// groupBox_bandeja
    			// 
    			this->groupBox_bandeja->Controls->Add(this->button_Cerrar);
    			this->groupBox_bandeja->Controls->Add(this->button_Abrir);
    			this->groupBox_bandeja->Location = System::Drawing::Point(22, 118);
    			this->groupBox_bandeja->Name = L"groupBox_bandeja";
    			this->groupBox_bandeja->Size = System::Drawing::Size(227, 90);
    			this->groupBox_bandeja->TabIndex = 1;
    			this->groupBox_bandeja->TabStop = false;
    			this->groupBox_bandeja->Text = L"Bandeja:";
    			// 
    			// button_Cerrar
    			// 
    			this->button_Cerrar->Location = System::Drawing::Point(126, 38);
    			this->button_Cerrar->Name = L"button_Cerrar";
    			this->button_Cerrar->Size = System::Drawing::Size(75, 23);
    			this->button_Cerrar->TabIndex = 1;
    			this->button_Cerrar->Text = L"&Cerrar";
    			this->button_Cerrar->UseVisualStyleBackColor = true;
    			this->button_Cerrar->Click += gcnew System::EventHandler(this, &Form_principal::button_Cerrar_Click);
    			// 
    			// button_Abrir
    			// 
    			this->button_Abrir->Location = System::Drawing::Point(24, 38);
    			this->button_Abrir->Name = L"button_Abrir";
    			this->button_Abrir->Size = System::Drawing::Size(75, 23);
    			this->button_Abrir->TabIndex = 0;
    			this->button_Abrir->Text = L"&Abrir";
    			this->button_Abrir->UseVisualStyleBackColor = true;
    			this->button_Abrir->Click += gcnew System::EventHandler(this, &Form_principal::button_Abrir_Click);
    			// 
    			// Form_principal
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(284, 261);
    			this->Controls->Add(this->groupBox_bandeja);
    			this->Controls->Add(this->label_Mensaje);
    			this->Name = L"Form_principal";
    			this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
    			this->Text = L"Control lector disco C++ CLR";
    			this->groupBox_bandeja->ResumeLayout(false);
    			this->ResumeLayout(false);
    			this->PerformLayout();
    
    		}
    #pragma endregion
    private: System::Void button_Abrir_Click(System::Object^  sender, System::EventArgs^  e) {
    	label_Mensaje->Text = "Abriendo...";
    	Application::DoEvents();
    	mciSendString("set CDAudio door open", rt, 127, IntPtr::Zero);
    	label_Mensaje->Text = "Abierto.";
    }
    private: System::Void button_Cerrar_Click(System::Object^  sender, System::EventArgs^  e) {
    	label_Mensaje->Text = "Cerrando...";
    	Application::DoEvents();
    	mciSendString("set CDAudio door closed", rt, 127, IntPtr::Zero);
    	label_Mensaje->Text = "Cerrado.";
    }
    };
    }

    Saludos.



    http://electronica-pic.blogspot.com

    • Marcado como respuesta Metaconta jueves, 16 de noviembre de 2017 1:51
    jueves, 16 de noviembre de 2017 1:50

Todas las respuestas

  • ¿C++ o C++/CLI?

    En ambos casos es fácil:

    mciSendString(_T("set CDAudio door open"),NULL,0,NULL);

    mciSendString(_T("set CDAudio door closed"),NULL,0,NULL);

    Mete eso mismo dentro de tu aplicación, ya sea C++ o C++/CLI y te debería funcionar.

    Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    domingo, 22 de noviembre de 2009 12:17
    Moderador
  • Hola:

    Desde el noviembre del 2009 dije que lo iba a probar y se me pasó el tiempo, ahora estamos en noviembre del 2017. Mucho a llovido desde entonces.

    Dejo el código completo dle C++ CLR. Ya que en Google aparece a veces este tema y no hay respuesta respondida. Así de paso, para el que lo necesita, aquí está la aclaración gracias a los compañeros del foro.

    Código C++ CLR:

    #pragma once
    
    namespace Lectordiscoscpp {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::Runtime::InteropServices; // No olvidar.
    	using namespace System::Text;
    
    	/// <summary>
    	/// Resumen de Form_principal
    	/// </summary>
    	public ref class Form_principal : public System::Windows::Forms::Form
    	{
    	public:
    		Form_principal(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: agregar código de constructor aquí
    			//
    		}
    
    		// ########################################################################
    		[DllImport("winmm.dll")]
    		static Int32 mciSendString(String^ lpstrCommand, StringBuilder^ lpstrReturnString,
    			int uReturnLength, IntPtr hwndCallback);
    
    		static StringBuilder^ rt = gcnew StringBuilder(127);
    		// ########################################################################
    
    	protected:
    		/// <summary>
    		/// Limpiar los recursos que se estén usando.
    		/// </summary>
    		~Form_principal()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::Label^  label_Mensaje;
    	private: System::Windows::Forms::GroupBox^  groupBox_bandeja;
    	private: System::Windows::Forms::Button^  button_Cerrar;
    	private: System::Windows::Forms::Button^  button_Abrir;
    	protected:
    
    	protected:
    
    	private:
    		/// <summary>
    		/// Variable del diseñador necesaria.
    		/// </summary>
    		System::ComponentModel::Container ^components;
    
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Método necesario para admitir el Diseñador. No se puede modificar
    		/// el contenido de este método con el editor de código.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->label_Mensaje = (gcnew System::Windows::Forms::Label());
    			this->groupBox_bandeja = (gcnew System::Windows::Forms::GroupBox());
    			this->button_Cerrar = (gcnew System::Windows::Forms::Button());
    			this->button_Abrir = (gcnew System::Windows::Forms::Button());
    			this->groupBox_bandeja->SuspendLayout();
    			this->SuspendLayout();
    			// 
    			// label_Mensaje
    			// 
    			this->label_Mensaje->AutoSize = true;
    			this->label_Mensaje->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 36, System::Drawing::FontStyle::Bold));
    			this->label_Mensaje->Location = System::Drawing::Point(12, 9);
    			this->label_Mensaje->Name = L"label_Mensaje";
    			this->label_Mensaje->Size = System::Drawing::Size(52, 55);
    			this->label_Mensaje->TabIndex = 0;
    			this->label_Mensaje->Text = L"\?";
    			// 
    			// groupBox_bandeja
    			// 
    			this->groupBox_bandeja->Controls->Add(this->button_Cerrar);
    			this->groupBox_bandeja->Controls->Add(this->button_Abrir);
    			this->groupBox_bandeja->Location = System::Drawing::Point(22, 118);
    			this->groupBox_bandeja->Name = L"groupBox_bandeja";
    			this->groupBox_bandeja->Size = System::Drawing::Size(227, 90);
    			this->groupBox_bandeja->TabIndex = 1;
    			this->groupBox_bandeja->TabStop = false;
    			this->groupBox_bandeja->Text = L"Bandeja:";
    			// 
    			// button_Cerrar
    			// 
    			this->button_Cerrar->Location = System::Drawing::Point(126, 38);
    			this->button_Cerrar->Name = L"button_Cerrar";
    			this->button_Cerrar->Size = System::Drawing::Size(75, 23);
    			this->button_Cerrar->TabIndex = 1;
    			this->button_Cerrar->Text = L"&Cerrar";
    			this->button_Cerrar->UseVisualStyleBackColor = true;
    			this->button_Cerrar->Click += gcnew System::EventHandler(this, &Form_principal::button_Cerrar_Click);
    			// 
    			// button_Abrir
    			// 
    			this->button_Abrir->Location = System::Drawing::Point(24, 38);
    			this->button_Abrir->Name = L"button_Abrir";
    			this->button_Abrir->Size = System::Drawing::Size(75, 23);
    			this->button_Abrir->TabIndex = 0;
    			this->button_Abrir->Text = L"&Abrir";
    			this->button_Abrir->UseVisualStyleBackColor = true;
    			this->button_Abrir->Click += gcnew System::EventHandler(this, &Form_principal::button_Abrir_Click);
    			// 
    			// Form_principal
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(284, 261);
    			this->Controls->Add(this->groupBox_bandeja);
    			this->Controls->Add(this->label_Mensaje);
    			this->Name = L"Form_principal";
    			this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
    			this->Text = L"Control lector disco C++ CLR";
    			this->groupBox_bandeja->ResumeLayout(false);
    			this->ResumeLayout(false);
    			this->PerformLayout();
    
    		}
    #pragma endregion
    private: System::Void button_Abrir_Click(System::Object^  sender, System::EventArgs^  e) {
    	label_Mensaje->Text = "Abriendo...";
    	Application::DoEvents();
    	mciSendString("set CDAudio door open", rt, 127, IntPtr::Zero);
    	label_Mensaje->Text = "Abierto.";
    }
    private: System::Void button_Cerrar_Click(System::Object^  sender, System::EventArgs^  e) {
    	label_Mensaje->Text = "Cerrando...";
    	Application::DoEvents();
    	mciSendString("set CDAudio door closed", rt, 127, IntPtr::Zero);
    	label_Mensaje->Text = "Cerrado.";
    }
    };
    }

    Saludos.



    http://electronica-pic.blogspot.com

    • Marcado como respuesta Metaconta jueves, 16 de noviembre de 2017 1:51
    jueves, 16 de noviembre de 2017 1:50