Postagem em destaque

Código Limpo: Nomes Significativos

Imagem
Às vezes fico com um assunto na cabeça por semanas, até achar uma situação ou um exemplo que esclareça a situação. Explico: estava querendo já a algum tempo escrever sobre boas práticas de programação, e pensei em iniciar por "Nomes Significativos", para seguir a nomenclatura utilizada pelo ótimo livro Código Limpo , de Robert C. Martin.  Entretanto, ficava sempre amarrado em exemplos que pareciam ser bons, mas que ainda eu não tinha visto a utilidade prática.  Antes de continuar preciso explicar que tenho um hábito de anotar num bloco de papel todas as ideias que surgem, pois elas desaparecem com a mesma velocidade que aparecem. Para isso tenho um bloco e caneta na mesa de cabeceira (além de um no banheiro), pois esses são os lugares onde tenho mais ideias... Vai entender... Semana passada, estava com um problema bem complicado e tive uma ideia: "vou criar uma variável para indicar que quando um arquivo tiver um certo tamanho deve gravar algumas informações no log. Pois

Como enviar um clique para outra aplicação, em Delphi

Vou mostrar aqui como enviar um clique do mouse para uma outra aplicação. Precisei disso para automatizar um processo, já o aplicativo em questão não tinha uma opção de linha de comando para já iniciar no item que eu desejava. Além disso, ele também não aceita o controle via teclado, apenas mouse.

program sendClick;

uses
  Windows, SysUtils, Classes, Controls, ExtCtrls, StdCtrls, Messages, Dialogs;

var
  WindowHandle : HWND;
  pt: TPoint;

begin
  if (paramstr(4) > '') then begin
    WindowHandle := FindWindow(nil, pchar(paramstr(4)));
      if WindowHandle = 0 then begin
      ShowMessage('Program not found.');
      halt;;
    end;
  end else
    WindowHandle :=  GetActiveWindow;

  pt.x := Round(strtoint(paramstr(2)) * (65535 / Screen.Width));
  pt.y := Round(strtoint(paramstr(3)) * (65535 / Screen.Height));

  Sleep(StrtoInt(paramstr(1)) * 1000);

  SetForegroundWindow(WindowHandle);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, pt.x, pt.y, 0, 0);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, pt.x, pt.y, 0, 0);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, pt.x, pt.y, 0, 0);
end.

Comentários

  1. Este comentário foi removido pelo autor.

    ResponderExcluir
  2. O programa acima tem 4 parâmetros:
    1. Tempo de espera em segundos para aguardar (se ão for necessário informar 0);
    2. Posição horizontal da tela, em pixels;
    3. Posição vertical da tela, em pixels;
    4. O nome do programa alvo. Por exemplo: Calculadora

    ResponderExcluir
    Respostas
    1. Vlw, funcionou aqui, muito obrigado!

      Excluir
    2. Por acaso, você saberia como faço para enviar caracteres para outra aplicação, para por ex preenchimento automatico de informações?

      Excluir
    3. Tente a função SendMessage. http://stackoverflow.com/questions/3539190/windows-api-and-sendmessage

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

Netflix não mostra ícone de streaming

Google Hacking

FTP não funciona no PHP