Postagem em destaque

WSL: Backup e Restauração

Imagem
Às vezes você tem um drive mais rápido (SSD) que o outro (HD). É o meu caso: meu drive C, é um SSD de 256 GB e meu drive D, é um HD de 512 GB. Um é pequeno e rápido; outro é grande e lento.  Meu drive C, por ser pequeno, acabou ficando sem espaço. Então fui pesquisar por grandes arquivos (usei o excelente TreeSize Free para isso) e descobri um tal de ext4.vhdx que tinha 29 GB. Esse arquivo é a imagem do disco do WSL no Windows e é normal ficar grande. O problema é que mesmo você apagando arquivos ele não diminui. E quando você usa o Docker, a situação se agrava rapidamente. Então, descobri uma maneira de compactar esse arquivo/disco. É um comentário da KarolineWss numa issue do WSL. Funciona maravilhosamente bem. Tanto que consegui diminuir praticamente pela metade o arquivo.  Mas para fazer isso, claro, pesquisei como fazer backup (e restauração). Esse artigo é sobre isso. E com um bônus, esse o arquivo fica numa localização meio complicada para humanos, mas fazendo um backup e uma

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