Postagem em destaque

A incrível velocidade do Go

Imagem
Um dos motivos que gosto do Go (a linguagem de programação, não o jogo), é que ele é extremamente rápido. E não estou falando de utilizar goroutines pois aí é covardia. Estamos migrando um sistema de Coldfusion para Go e PHP e uma das rotinas insere um registro no banco de dados no início e outra no fim do processo. Pense como se fosse um log, mas um log específico para essa rotina. Dessa forma: 2023-05-18 17:45:03. 687     ... [processaImagem] Incorporando imagem 2023-05-18 17:45:03. 688     ... [processaImagem] Imagem incorporada Entre o inicio e o final do processamento levou 1ms. Até aí, tudo bem, se não fosse o fato dessa tabela ter o campo timestamp como parte da chave primária. Se reparar, o tempo é definido em milissegundos. Com o Coldfusion esse processo dura cerca de 20ms. Simplesmente migrando para Go, o tempo caiu muito, para menos de 1ms e assim, começou a dar erro de chave duplicada. A solução? Depende, sempre depende. No nosso contexto, a mais simples foi feita, pois nã

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