Cómo utilizar DELPHI para implementar operaciones clave en segundo plano
SendMessage es posible, pero debes enviar el mensaje a la ventana correspondiente.
Consulte el siguiente código:
El primer parámetro de PostKeyExHWND es el identificador de control de WebBrowser.
procedimiento PostKeyEx32(clave: Word; cambio constante: TShiftState; clave especial: Boolean);
{****************** ********************** *******************
* Procedimiento PostKeyEx32
*
* Parámetros:
* clave: El código de clave virtual de la clave que se enviará. Para claves
* imprimibles, este es solo el código ANSI (Ord(Character)).
*shift: Modifica el estado de la clave. Esta es una colección, por lo que
* puedes configurar varias de estas teclas (mayúsculas, control, alt,
* botones del mouse) en serie. Esta es una colección, por lo que
* puedes configurar varias de estas teclas (mayúsculas, control, alt,
* botones del mouse) en serie. El tipo TShiftState se declara en la unidad de clase
*.
* tecla especial: Normalmente debería ser Falso, como especificar una tecla en un teclado numérico.
* Descripción:
* Utilice keybd_event para crear una serie de eventos clave que coincidan con los parámetros pasados por
*.
* Tenga en cuenta que, para los caracteres, la clave es siempre la versión en mayúscula del carácter
*.
Enviar sin teclas modificadoras dará como resultado
* un carácter en minúscula, enviar con [ssShift] dará como resultado
* un carácter en mayúscula.
* El evento irá al control enfocado: Byte;
vkey:
end;
byteset = conjunto de 0. ..7;
const
teclas de cambio: matriz [1...3] de TShiftKeyInfo =
((shift:Ord(ssCtrl); vkey: VK_CONTROL),
(shift: (shift: Ord(ssShift); vkey: VK_SHIFT),
(shift: vkey: VK_MENU)),
( cambio: Ord(ssAlt):VK_MENU));
var
bandera: DWORD;
bShift: ByteSet cambio absoluto;
i:Entero;
comenzar
para i:= 1 a 3
comenzar
si las teclas Mayús[i].cambiar en bShift luego
keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0);
end { For }
si es una clave especial, entonces
bandera := KEYEVENTF_EXTENDEDKEY
else
bandera := 0;
keybd_event(clave, MapvirtualKey (clave, 0), bandera, 0);
bandera := bandera o KEYEVENTF_KEYUP;
keybd_event(clave, MapvirtualKey( clave, 0), bandera, 0); p>
for i := 3 downto 1 do
Esta es la primera vez que uso keybd. p> comenzar
si shiftkeys[i].shift en bShift entonces
keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), p> p>
KEYEVENTF_KEYUP, 0);
fin; { Para }
fin; { PostKeyEx32 }
procedimiento TForm1.Button1Click(Sender. TObjeto);