
12.05.2013, 15:48
|
 |
.
|
|
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
|
|
Нажимаещь "1", затем кнопку. Если на форме имеются дополнительные контролы, увидишь как фосус пробегается по ним. Отпускаешь кнопку процесс прекращается.
Код:
const
KEYEVENTF_SCANCODE = 8;
MAPVK_VK_TO_VSC = 0;
function SendScanCode(scan : WORD; up : Boolean) : DWORD;
var
inp : TInput;
begin
inp.Itype := INPUT_KEYBOARD;
inp.ki.wScan := scan;
inp.ki.dwFlags := KEYEVENTF_SCANCODE;
if up then
inp.ki.dwFlags := inp.ki.dwFlags or KEYEVENTF_KEYUP;
Result := SendInput(1, inp, SizeOf(TInput));
if Result <> NO_ERROR then
Result := GetLastError;
end;
function SendVirtualKey(vk : UINT; up : Boolean) : DWORD;
var
scan : UINT;
begin
scan := MapVirtualKey(vk, MAPVK_VK_TO_VSC);
if scan > 0 then
Result := SendScanCode(scan, up)
else
Result := ERROR_NO_UNICODE_TRANSLATION;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
dowork : Boolean;
begin
dowork := TRUE;
while dowork do
begin
if GetAsyncKeyState(49) <> 0 then
begin
SendVirtualKey(VK_TAB, False);
SendVirtualKey(VK_TAB, TRUE);
end
else
dowork := False;
Sleep(100);
Application.ProcessMessages;
end;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
|