Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Capturar click del boton medio del mouse (https://www.clubdelphi.com/foros/showthread.php?t=86926)

gonzalovw 23-10-2014 21:25:00

Capturar click del boton medio del mouse
 
Estimados,
Antes que todo gracias por aceptarme. Hace muy poco me todo hacer modificaciones en una aplicacion de windows hecha en delphi y la verdad que es la primera vez que hago algo en este lenguaje.
El inconveniente que tengo es hacer que el click del boton medio del mouse me dispare la accion de un boton sin importar en la posicion de la pantalla que me encuentre.
Estuve leyendo varias cosas y todos hablan de Hook pero la verdad es que probe varios ejemplos y no logro hacer que detecte cuando presiono el boton.

Espero puedan ayudarme!
Desde ya muchas gracias!!!
Gonzalo.

roman 23-10-2014 22:07:35

No se entiende bien tu pregunta. Un botón tiene el evento OnClick que se ejecutará siempre que hagas clic en el botón y sólo se puede hacer clic sobre un botón cuando el ratón está sobre él.

// Saludos

gonzalovw 24-10-2014 15:16:48

Ahi lo solucione!
 
En donde capturo todos lo eventos le agregue lo siguiente:

Código Delphi [-]
Case Msg.message of
    WM_MBUTTONDOWN:

Ahi capturo el click del boton del medio y luego ejecuto el click del boton!

Código Delphi [-]
procedure TfPrincipal.eventosMessage(var Msg: tagMSG; var Handled: Boolean);
var
  err: EdsError;
  archivo,archivoRaw,extFile,destino: string;
begin
  Handled := false;
  //if (Msg.message = WM_CANCELJOURNAL) and FHookStarted then
  //  JHook := SetWindowsHookEx(WH_JOURNALRECORD, @JournalProc, 0, 0);
  Case Msg.message of
    WM_MBUTTONDOWN:
      begin
        if bCapturar.Enabled then
          bCapturar.Click
      end;
    WM_USER + 1: { Property Event occurred } // Por ahora no manejo los cambios de propiedades
      begin
        if Msg.wParam = kEdsPropertyEvent_PropertyChanged then
        // get property
        begin
          FAppMaster.getProperty(Msg.lParam);
          // UpdateProperty( Msg.lParam );
          Handled := true;
        end;

        if Msg.wParam = kEdsPropertyEvent_PropertyDescChanged then
        // get property desc
        begin
          FAppMaster.getPropertyDesc(Msg.lParam);
          // UpdatePropertyDesc( Msg.lParam );
          Handled := true;
        end;
      end;

    WM_USER + 2: { Object Event occurred }
      begin
        archivo := 'ImgTmp' + IntToStr(camActiva) + '.jpg';
        archivoRaw := 'RawTmp' + IntToStr(camActiva) + '.cr2';
        err := FAppMaster.getImageData(EdsBaseRef(Msg.lParam), pTemp, archivo, archivoRaw, extFile);
        if extFile = '.CR2' then
              procesarImagenRecibidaRaw(archivoRaw, camActiva, nFoto);
        Application.ProcessMessages;
        if err <> EDS_ERR_OK then
          MessageDlg('Error en la recepción de imagen (' + IntToStr(err) + ')',
            mtError, [mbOk], 0)
        else
        begin
          if not enCaptura then
          begin
// no hace nada... esto deberia eliminar los disparos manuales...
          end
          else
          begin
            if not enTest and not enRepeticion then
              nFoto := nFoto + 1;
            procesarImagenRecibida(archivo, camActiva, nFoto);
          end;
        end;
        enCaptura := false;
        Handled := true;
      end;

    WM_USER + 3: { Progress callback event }
      begin
        ajustarProgreso(Msg.wParam);
        Handled := true;
      end;
  end;

end;

Saludos!
Gracias!!


La franja horaria es GMT +2. Ahora son las 01:35:22.

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