ayuda con timer:P

Iniciado por <sylar>, 24 Marzo 2009, 01:58 AM

0 Miembros y 1 Visitante están viendo este tema.

<sylar>

saludos atodos en el foro  necesito un poco de ayuda aqui con un programa:P necesito hacer que se abra y se cierre el cd rom pero con timer o sea que siempre lo este haciendo cada determinado tiempo haber si alguien me puede ayudar lo apreciaria mucho ;-)

hasta ahora solo tengo abrir el cd cuando se ejecuta la forma:P

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace cdopen
{
    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);


       

        private void timer1_Tick(object sender, EventArgs e)
        {
           
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string rt = "";
            { mciSendStringA("set CDAudio door open", rt, 127, 0); }

           { mciSendStringA("set CDAudio door closed", rt, 127, 0); }
        }
    }
}

Hadess_inf

Trabaja con hilos ... y/o services ..  con eso deberia de funcionar .
Saludos.

43H4FH44H45H4CH49H56H45H

Citarnecesito hacer que se abra y se cierre el cd rom pero con timer o sea que siempre lo este haciendo cada determinado tiempo

Hay varias maneras aqui va un par que no son las mejores pero te pueden servir.
Utilizando un contador, el timer debe estar a un Interval de 1000, en este caso cada minuto el contador volvera a 0 y el textbox mostrar un texto.

Código (csharp) [Seleccionar]
int cont = 0;// variable global
private void timer1_Tick(object sender, EventArgs e)
        {
            cont++;
            this.Text = cont.ToString();
            if (cont == 60)
            {
                textBox1.Text = "1 minuto";
                cont = 0;
            }
        }


Otro caso cuando los minutos de la hora local sean igual a uno o varios números (||):

Código (csharp) [Seleccionar]

if (DateTime.Now.Minute.Equals(48)) this.Text = "48";
else this.Text = "no es 48";


Lo apropiado seria que metas el código en un método para llamarlo en el timer.

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W

seba123neo

pero tambien tendrias que detectar si esta abierta o cerrada asi saber que hacer en el timer...busca que lo podes hacer...

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Hadess_inf

Segun entendi lo que el quiere es que el cd-rom se abra y se cierre sin mostrar algun form o me equivoco ¿ ?

<sylar>

asi es Hadess_inf :) eso quiero  hacer  ;D

Hadess_inf

Lo que podrias hacer es iniciar tu formulario pero oculto y sin mostrar en la barra de tareas. Tambien podrias crear un service y programar un hilo para que haga lo que quieres.

Pablo Videla

#7
Eso lo vees en las propiedades del form
--

use tu codig , me abre el cd pero en tiempo de ejecucion me arroja el siguiente error

CitarUna llamada a la función PInvoke 'cdopen!cdopen.Form1::mciSendStringA' impidió la correspondencia de la pila. Es posible que la razón sea que la firma PInvoke administrada no coincida con la firma de destino no administrada. Compruebe que la convención y los parámetros de llamada de la firma PInvoke coinciden con la firma no administrada de destino.
y no me cierra el lector.. alguna idea  ;D

Hadess_inf

Para evitar ese error ddebes de usar DELEGATES ...

Pablo Videla

Si me puedes decir como se hace espeficamente , seria genial hades , lo que pasa esq ue aun no me han pasado delegates y he leido y no entiendo mucho para que sirve  :-\