Simular CTRL F

Delphi

16/04/2003

Amigos, tenho um programa que possue dentro dele um WebBrowser que exibe um html com diversos nomes de empresas que muitas vezes é maior que o tamanho da tela! o que preciso é simular o CTRL F do explorer para ativar a busca de palavras como numa página normal ou fazer funcionar o componente FindDialog mas não sei utulizar e os eventos dele não retornam nada! Se alguem poder dar um help, tó agradecido pra caramba.
Jeff


Jeffjames

Jeffjames

Curtidas 0

Respostas

Jonhy Riper

Jonhy Riper

16/04/2003

Para simular o pressionamento de uma tecla utilize a função
Keybd_Event
eu tenho uma função melhorada deste método, está em uma lista de dicas, é a seguinte:

482 - Enviando combinação de teclas para o buffer do teclado
// Exemplo : PostKeyEx32(Ord(´A´), [ssCtrl], false);
// Envia Ctrl+A para o controle que tiver o foco.
// Key : virtual keycode da tecla a enviar. Para caracteres
// imprimíveis informe o código ANSI (Ord(CHARACTER)).
// Shift : estado das teclas modificadoras.
// Shift, Control, Alt, Mouse Buttons.
// SpecialKey: normalmente deve ser False. Informe True se
// a tecla desejada for, por exemplo, do teclado numérico.
procedure PostKeyEx32(Key: Word; const Shift: TShiftState; SpecialKey: boolean);
type
TShiftKeyInfo = Record
shift: Byte;
vkey : Byte;
End;
byteset = Set of 0..7;
const
ShiftKeys: array [1..3] of TShiftKeyInfo =
((shift: Ord(ssCtrl); vkey: VK_CONTROL ),
(shift: Ord(ssShift); vkey: VK_SHIFT ),
(shift: Ord(ssAlt); vkey: VK_MENU ));
var
Flag: DWORD;
bShift: ByteSet absolute shift;
i: Integer;
begin
for i := 1 to 3 do begin
if shiftkeys[i].shift in bShift then
Keybd_Event(ShiftKeys[i].vkey,
MapVirtualKey(ShiftKeys[i].vkey, 0), 0, 0);
end; // for
if SpecialKey Then
Flag := KEYEVENTF_EXTENDEDKEY
else
Flag := 0;
Keybd_Event(Key, MapvirtualKey(Key, 0), Flag, 0);
Flag := Flag or KEYEVENTF_KEYUP;
Keybd_Event(Key, MapvirtualKey(Key, 0), Flag, 0);
for i := 3 DownTo 1 do
begin
if ShiftKeys[i].shift in bShift then
Keybd_Event(shiftkeys[i].vkey,
MapVirtualKey(ShiftKeys[i].vkey, 0),
KEYEVENTF_KEYUP, 0);
end; // for
end; // PostKeyEx32


GOSTEI 0
Jeffjames

Jeffjames

16/04/2003

eu já tinha tentado esta dica mas ela não funciona dando erro externo com uma referência que não lembro agora, tb tentei o metodo keyevent mas ele não executa a simulação da tecla F mas executa simulação das teclas de função, control e outras menos as alfabeticas...


GOSTEI 0
POSTAR