Essa função InKey que eu codifiquei nessa dica é usei faz uns 5 ou 6 anos
atrás pra implementar um ‘ovo de páscoa’ em um software. Funcionou bem na
época. A unit revisada ficou assim;

 

unit uKbdTools;

 

interface

 

procedure ClearInputMessages;

function InKey(Secs: Double): integer; overload;

function InKey(MSecs: LongWord): integer; overload;

 

implementation

 

uses

  Windows, Messages;

 

// Limpa mensagens de entrada (teclado e mouse) da fila de mensagens do
Windows.

// Não existe no Windows a figura do buffer de teclado!!!!

 

procedure ClearInputMessages;

var

  Msg: TMsg;

begin

  while PeekMessage(

    Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE or PM_QS_INPUT) do ;

 

  while PeekMessage(

    Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE or PM_QS_INPUT) do ;

end;

 

function InKey(Secs: Double): integer;   

var  

  Msg: TMsg;   

  TickCount: DWORD;   

  MSecs: DWORD;   

  lResult: BOOL;   

begin  

  Application.ProcessMessages;

  Result := 0;

  MSecs := Trunc(Secs * 1000);

  TickCount := GetTickCount();

  repeat

    lResult :=

      PeekMessage(Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE or PM_QS_INPUT)

  until (GetTickCount() - TickCount >= MSecs) or lResult;

  if lResult then

    Result := Msg.wParam;

end;

 

function InKey(MSecs: LongWord): integer;

var

  Msg: TMsg;

  TickCount: DWORD;

  lResult: Boolean;

begin

  Application.ProcessMessages;

  Result := 0;

  TickCount := GetTickCount();

  repeat

    lResult := PeekMessage(Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE or
PM_QS_INPUT)

  until (GetTickCount() - TickCount >= MSecs) or lResult;

  if lResult then

    Result := Msg.wParam;

end;

 

end.

 

Em tempo: (1)Sobre o que vc comentou a respeito de acessar discos rígidos, o
terreno é árido e muito infértil. Vc vai ter que pesquisar e muito como ter
acesso a um disco rígido em baixo nível passando por cima das prerrogativas
do sistema operacional. Parei de pesquisar por conta do meu tempo como
desenvolvedor e analista. (2)Nos meus tempos áureos de colaboração à finada
(porém, excelente) revista Micro Sistemas, desenvolvi um utilitário em Turbo
Pascal 5.5/6.0/7.0 que lia a MBR de um HD e salva as informações das
partições, juntamente com os parâmetros do HD lidos da memória CMOS do
setup, em um arquivo binário. Era uma maneira de tentar recuperar o setor de
boot do disco em caso de algum problema ocasionado por vírus. Funcionou
muito bem na época. Fora algumas coisas legais que eu consegui fazer em
Clipper, como por exemplo criar classes de verdade para usar no Clipper 5.x.

 

Resumo da ópera: Eu tb já fui escovador de bits! Até programas TSR em Pascal
e Assembly eu já fiz! (Mas o que é TSR? Wikipédia, amigo!)  ;)

 

Sds.

 

De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de EmbarcaDelphi
Enviada em: quarta-feira, 27 de maio de 2009 20:23
Para: delphi-br@yahoogrupos.com.br
Assunto: [delphi-br] Para: Rubem (você esqueceu?)

 

E aí Rubem,

Navegando na Net pesquisando por umas questões pouco difundidas eu me 
deparei com uma mensagem sua que iria retornar, a mensagem era de 2008. 
O link é este:

http://cincobytes.net/simular-inkey-do-clipper-no-delphi/

Teve mais novidades a este respeito?

Não sei em que situação poderia utilizar esta rotina, mas, acabei caindo 
nesse link.

De vez em quando eu pego uma função da API do Windows (coisa que nunca 
usei e fiquei curioso) e vou navegando na internet para estudar, creio 
que poucas pessoas fazem isso. É pena que muitas coisas não se encontram 
no idioma português (meu inglês é muito fraco), mas vendo o código dá 
para ter uma idéia do que se trata, como não uso Banco de Dados, só 
busco por APIs e coisas de baixo nível.
A pouco tempo atrás eu descobri como acessar uma partição EXT2 de dentro 
do Windows, podendo lêr ou gravar nesta partição, também na partição 
ReiserFS. Coisa que para muitos isso seria impossível, visto que só na 
linguagem C se faz., kkkkk.

Estou fazendo uma proteção para meu programa e estou desenrolando, ainda 
falta muitos ajustes, como criar a partição EXT2.

Só queria ver como criar uma partição pelo Delphi (FAT32 e EXT2), ainda 
estou pesquisando. Um dia acho algo. Se alguém souber alguma informação 
a respeito então será muito bem-vinda. Teve um colega aqui na lista que 
tava procurando, não sei se ele encontrou...

Blz.

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a