Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Controle do Mouse em Delphi

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Delphi Controle do Mouse em Delphi

    Ola Boa noite a Todos do Forum.
    Esse e o meu primeiro post peço desculpa se estiver no local errado.
    Gostaria de uma rotina em delphi que controlasse o mouse remoto
    Criei um Cliente e servidor que acessa uma maquina remota igual ao teamviewer
    mas nao estou conseguindo controlar o mouse usei os componente da paleta indy do delphi 7
    Ficou bom o sistema mas nao funciona o mouse desde ja agradeço a todos...
    Similar Threads

  • Font Size
    #2
    biblioteca para mouse

    Código:
    517 - Biblioteca para Operações com Mouse
    {
      Objeto...: Biblioteca para operações com mouse.
      Categoria: Open-Source
      Autor....: Daniel Pereira Guimarães
      E-mail...: tecnobyte@ulbrajp.com.br
      Home-Page: www.ulbrajp.com.br/~tecnobyte
      Revisão..: 21 de Fevereiro de 2001
    }
     
    unit tbMouse;
     
    interface
     
    uses Windows, Controls, Messages, Forms;
     
    { Simula - click de mouse }
    procedure MouseClick(const Duration: Word);
    { Aprisiona o mouse em um retângulo }
    function MouseClip(const Rct: TRect): boolean;
    { Retorna o número de botões do mouse }
    function MouseGetButtons: byte;
    { Retorna a posição do mouse }
    function MouseGetPos(var Pt: TPoint): boolean;
    { Retorna true se o mouse está sobre a janela }
    function MouseInWindow(const WinHandle: HWnd): boolean;
    { Retorna true se o mouse está configurado }
    function MouseIsPresent: boolean;
    { Move o ponteiro do mouse para um controle (componente visual) }
    function MouseMoveToControl(const Control: TControl): boolean;
    { Define a posição do mouse }
    function MouseSetPos(const Pt: TPoint): boolean;
    { Exibe ou oculta o ponteiro do mouse }
    function MouseShowCursor(const Show: boolean): boolean;
    { Deslisa o ponteiro do mouse até um controle }
    function MouseSlideToControl(const Control: TControl; Jump, JumpTime: Word): boolean;
    { Inverte os botões do mouse }
    function MouseSwapButtons(const Swap: boolean): boolean;
    { Retorna true se os botões estão invertidos }
    function MouseSwappedButtons: boolean;
    { Libera o mouse - previamente aprisionado com MouseClip }
    function MouseUnClip: boolean;
     
    implementation
     
    { *** Mouse *** }
    procedure MouseClick(const Duration: Word);
    var
      Win: HWnd;
      Pt: TPoint;
      Msg: TMsg;
      FlagMouseDown, FlagMouseUp: DWord;
    begin
      { Se os botões estiverem invertidos... }
      if MouseSwappedButtons then begin
      FlagMouseDown := MOUSEEVENTF_RIGHTDOWN;
      FlagMouseUp := MOUSEEVENTF_RIGHTUP;
      end else begin; { Se os botões estiverem normais... }
      FlagMouseDown := MOUSEEVENTF_LEFTDOWN;
      FlagMouseUp := MOUSEEVENTF_LEFTUP;
      end;
     
      { Obtém o handle da janela que está sob o cursor }
      Windows.GetCursorPos(Pt);
      Win := Windows.WindowFromPoint(Pt);
     
      { Inicia o click }
      mouse_event(FlagMouseDown, 0, 0, 0, 0);
     
      { Processa as mensagens do mouse pertencentes à janela sob o cursor }
      while PeekMessage(Msg, Win, WM_LBUTTONDOWN, WM_LBUTTONDOWN, PM_REMOVE) do
      DispatchMessage(Msg);
     
      Sleep(Duration);
     
      { Conclui o click }
      mouse_event(FlagMouseUp, 0, 0, 0, 0);
    end;
     
    function MouseClip(const Rct: TRect): boolean;
    begin
      Result := Windows.ClipCursor(@Rct);
    end;
     
    function MouseGetButtons: byte;
    begin
      Result := GetSystemMetrics(SM_CMOUSEBUTTONS);
    end;
     
    function MouseGetPos(var Pt: TPoint): boolean;
    begin
      Result := Windows.GetCursorPos(Pt);
    end;
     
    function MouseInWindow(const WinHandle: HWnd): boolean;
    var
      Pt: TPoint;
    begin
      Result := GetCursorPos(Pt) and (WindowFromPoint(Pt) = WinHandle);
    end;
     
    function MouseIsPresent: boolean;
    begin
      Result := GetSystemMetrics(SM_MOUSEPRESENT) <> 0;
    end;
     
    function MouseMoveToControl(const Control: TControl): boolean;
    var
      Pt: TPoint;
    begin
      Pt.x := Control.Width div 2;
      Pt.y := Control.Height div 2;
      Pt := Control.ClientToScreen(Pt);
      Result := SetCursorPos(Pt.X, Pt.Y);
    end;
     
    function MouseSetPos(const Pt: TPoint): boolean;
    begin
      Result := Windows.SetCursorPos(Pt.X, Pt.Y);
    end;
     
    function MouseShowCursor(const Show: boolean): boolean;
    var
      I: integer;
    begin
      I := ShowCursor(LongBool(true));
      if Show then begin
      { ShowCursor(true) incrementa um contador interno do Windows.
      Quando este contador ficar >= 0, então o cursor é exibido }
      Result := I >= 0;
      while I < 0 do begin
      Result := ShowCursor(LongBool(true)) >= 0;
      Inc(I);
      end;
      end else begin
      { ShowCursor(false) decrementa um contador interno do Windows.
      Quando este contador ficar < 0, então o cursor é ocultado }
      Result := I < 0;
      while I >= 0 do begin
      Result := ShowCursor(LongBool(false)) < 0;
      Dec(I);
      end;
      end;
    end;
     
    function MouseSlideToControl(const Control: TControl; Jump, JumpTime: Word): boolean;
    var
      ToPoint, Pt: TPoint;
     
      function ExecJump: boolean;
      begin
      if (Pt.x = ToPoint.x) and (Pt.y = ToPoint.y) then begin
      Result := false; { Chegou }
      Exit;
      end;
      { Calcula X }
      if Pt.x < ToPoint.x then begin
      Inc(Pt.x, Jump);
      if Pt.x > ToPoint.x then { Se passou... }
      Pt.x := ToPoint.x;
      end else if Pt.x > ToPoint.x then begin
      Dec(Pt.x, Jump);
      if Pt.x < ToPoint.x then
      Pt.x := ToPoint.x;
      end;
      { Calcula Y }
      if Pt.y < ToPoint.y then begin
      Inc(Pt.y, Jump);
      if Pt.y > ToPoint.y then { Se passou... }
      Pt.y := ToPoint.y;
      end else if Pt.y > ToPoint.y then begin
      Dec(Pt.y, Jump);
      if Pt.y < ToPoint.y then
      Pt.y := ToPoint.y;
      end;
      Result := SetCursorPos(Pt.x, Pt.y);
      end;
     
    begin
      if Jump = 0 then
      Jump := 1;
     
      SetCursor(Screen.Cursors[Control.Cursor]);
      with Control do begin
      ToPoint.x := Width div 2;
      ToPoint.y := Height div 2;
      ToPoint := ClientToScreen(ToPoint);
      end;
      if GetCursorPos(Pt) then
      while ExecJump do Sleep(JumpTime);
     
      Result := GetCursorPos(Pt) and
      (Pt.x = ToPoint.x) and (Pt.y = ToPoint.y);
    end;
     
    function MouseSwapButtons(const Swap: boolean): boolean;
    begin
      Result := Windows.SwapMouseButton(LongBool(Swap));
    end;
     
    function MouseSwappedButtons: boolean;
    begin
      Result := GetSystemMetrics(SM_SWAPBUTTON) <> 0;
    end;
     
    function MouseUnClip: boolean;
    begin
      Result := Windows.ClipCursor(nil);
    end;
     
    end.
    
    //fonte: peguei da  internet
    ==============================

    270 - Clicar com o mouse
    {O exemplo abaixo simula o pressionamento da tecla do botão esquerdo do mouse em uma determinada posição da tela. No exemplo serão utilizados dois botões (Button1 e Button2), ao clicar no Button2 será executado o onClick do Button1 como se o mouse tivesse clicado sobre ele }

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ShowMessage('Button 1 clicked');
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var
    Pt : TPoint;
    begin
    Application.ProcessMessages;
    {Obtém o point no centro do Button1}
    Pt.x := Button1.Left + (Button1.Width div 2);
    Pt.y := Button1.Top + (Button1.Height div 2);
    {Converte Pt para as coordenadas da tela }
    Pt := ClientToScreen(Pt);
    Pt.x := Round(Pt.x * (65535 / Screen.Width));
    Pt.y := Round(Pt.y * (65535 / Screen.Height));
    {Move o mouse}
    Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pt.x, Pt.y, 0, 0);
    {Simula o pressionamento do botão esquerdo do mouse}
    Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0);
    { Simula soltando o botão esquerdo do mouse }
    Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0);
    end;
    =====================================
    Código:
    708 - Como pegar a posição do mouse na tela
    Para obter os valores das coordenadas do mouse de qualquer parte da tela, basta que se utiliza a função da API do Windows GetCursorPos. Esta função é interessante pois oferece ao programador os valores (x,y) de qualquer ponto da tela e não somente da aplicação.
    
    Para implementação, esta função pode ser utilizada da seguinte maneira:
    
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
     pt: TPoint;
    begin
      GetCursorPos(pt); // Pega a posição atual do mouse;
    //Mostra os valores das coordenadas do mouse
      label1.caption := IntToStr(pt.x) + ',' + IntToStr(pt.y);
    end;
     
    Esta é mais uma das milhares de funções da API do Windows.
    
    Abraços,
    
    Alessandro F. Leite
    
     
    
    {Dica retirada do Site Delphi Journal}
    ==============================

    Código:
    469 - Movimentando o ponteiro do mouse sem a intervenção do usuário
    Para movimentar o ponteiro do mouse sem intervenção do usuário, deve-se usar um TTimer e colocar o seguinte código em seu evento OnTimer: 
    
    var 
    pt:tpoint; 
    begin 
    getcursorpos(pt); 
    pt.x := pt.x + 1; 
    pt.y := pt.y + 1; 
    SetCursorPos(pt.x,pt.y);
    if pt.x>=screen.width-1 then setcursorpos(0,pt.y); 
    if pt.y>=screen.height-1 then setcursorpos(pt.x,0); 
    end;
    Fonte: nada meu tudo da internet, diversos sites com a mesma informação.

    Comment

    X
    Working...
    X