Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2004
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 24
Tonio Va por buen camino
Como supongo que será más profesional que el mio, no me importaría que lo publicases, además siempre viene bien para aprender, porque algo siempre se aprende.
Muchas gracias por tu interés.
Un saludo.
Tonio.
Responder Con Cita
  #2  
Antiguo 18-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues lo de profesional lo dudo porque apenas estuve investgando de eso. Y desde luego no es que sea mejor que lo tuyo sino que es distinto. Con mi código lo que haces es que tu aplicación puede estar ya ejecutándose y si alguien inserta un cd tú recibiras un evento que te pasará el drive en donde se insertó.

Este código lo englobé en la componente TCdChange que puedes ver y bajar de mi página.

// Saludos
Responder Con Cita
  #3  
Antiguo 03-03-2013
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 19
radenf Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Pues lo de profesional lo dudo porque apenas estuve investgando de eso. Y desde luego no es que sea mejor que lo tuyo sino que es distinto. Con mi código lo que haces es que tu aplicación puede estar ya ejecutándose y si alguien inserta un cd tú recibiras un evento que te pasará el drive en donde se insertó.

Este código lo englobé en la componente TCdChange que puedes ver y bajar de mi página.

// Saludos
Estimado Roman :

Es posible obtener tu componente, pues quisiera utilizarlo en mi proyecto y el link no funciona.
Saludos y gracias.
Responder Con Cita
  #4  
Antiguo 04-03-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
radenf,

Cita:
Empezado por radenf
...Es posible obtener tu componente...
No conozco el Componente TCDChange pero puedo sugerirte otra solución equivalente.

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MMSystem, ShellAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ListBox1: TListBox;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;
    { Private declarations }
  public
    { Public declarations }
  end;

type
  PDevBroadcastHdr = ^TDevBroadcastHdr;
  TDevBroadcastHdr = packed record
    dbcd_size: DWORD;
    dbcd_devicetype: DWORD;
    dbcd_reserved: DWORD;
  end;

type
  PDevBroadcastVolume = ^TDevBroadcastVolume;
  TDevBroadcastVolume = packed record
    dbcv_size: DWORD;
    dbcv_devicetype: DWORD;
    dbcv_reserved: DWORD;
    dbcv_unitmask: DWORD;
    dbcv_flags: Word;
  end;

const
  DBT_DeviceArrival = $8000;
  DBT_DeviceRemoveComplete = $8004;
  DBTF_Media = $0001;
  DBT_DevTyp_Volume = $0002;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Obtiene la Letra de una Unidad de CDROM:
function GetDrive(pDBVol: PDevBroadcastVolume): string;
var
  i: Byte;
  Maske: DWORD;
begin
  if (pDBVol^.dbcv_flags and DBTF_Media) = DBTF_Media then
  begin
    Maske := pDBVol^.dbcv_unitmask;
    for i := 0 to 25 do
    begin
      if (Maske and 1) = 1 then
        Result := Char(i + Ord('A')) + ':';
      Maske := Maske shr 1;
    end;
  end;
end;

// Detecta Cambios en Unidades de CDROM:
procedure TForm1.WMDeviceChange(var Msg: TMessage);
var
  Drive: string;
begin
  case Msg.wParam of
    DBT_DeviceArrival:
      if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DevTyp_Volume then
      begin
        Drive := GetDrive(PDevBroadcastVolume(Msg.lParam));
        If Drive <> '' then
           ShowMessage('CD inserted in Drive ' + Drive);
      end;
    DBT_DeviceRemoveComplete:
      if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DevTyp_Volume then
      begin
        Drive := GetDrive(PDevBroadcastVolume(Msg.lParam));
        If Drive <> '' then
           ShowMessage('CD removed from Drive ' + Drive);
      end;
  end;
end;

// Abrir un CD-ROM:
procedure TForm1.Button1Click(Sender: TObject);
begin
   mciSendString('Set cdaudio door open wait', nil, 0, handle) ;
end;

// Cerrar un CD-ROM:
procedure TForm1.Button2Click(Sender: TObject);
begin
   mciSendString('Set cdaudio door closed wait', nil, 0, handle) ;
end;

// Lista las Unidades de CDROM:
procedure TForm1.Button3Click(Sender: TObject);
var
  N: Byte;
  Drv: string;
  Drives: set of 0..25;
begin
  ListBox1.Clear;
  Integer(Drives):=GetLogicalDrives;
  for N:=0 to 25 do
    if N in Drives then
    begin
      Drv:=Char(N+Ord('A'))+':';
      if(GetDriveType(PChar(Drv))=DRIVE_CDROM) then
        ListBox1.Items.Add('Device '+ Drv + ' is a CD-Rom Drive');
    end;
end;

end.
El código anterior realiza tres funciones orientadas a las unidades de CDROM:

1- Detecta cambios en las unidades de CDROM y obtiene la letra de la unidad.

2- Permite Abrir y Cerrar un CDROM por medio de código.

3- Lista las Unidades de CDROM.


El código esta disponible en el link: http://terawiki.clubdelphi.com/Delph...+Functions.rar

Quizás esta solución se pueda adaptar a tu proyecto.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 04-03-2013 a las 02:30:35.
Responder Con Cita
  #5  
Antiguo 04-03-2013
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 19
radenf Va por buen camino
Muchas gracias [nlsgarcia]

Lo probaré y te cuento
Saludos
Responder Con Cita
  #6  
Antiguo 04-03-2013
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por radenf Ver Mensaje
Estimado Roman :

Es posible obtener tu componente, pues quisiera utilizarlo en mi proyecto y el link no funciona.
Saludos y gracias.
Aquí hay una copia.

// Saludos
Responder Con Cita
  #7  
Antiguo 04-03-2013
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 19
radenf Va por buen camino
Muchas gracias roman.
Saludos
Responder Con Cita
  #8  
Antiguo 04-03-2013
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 19
radenf Va por buen camino
Opté por utilizar parte del código propuesto por [nlsgarcia], que es muy similar al del componente tan gentilmente enviado por roman y funciona perfecto.
Muchas gracias a ambos.
Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:55:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi