Форум: "WinAPI";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизОтправить сообщение неактивному окну Найти похожие ветки
← →
НовичОк © (2004-10-09 01:57) [0]Как можно отправить сообщение неактивному окну на примере нажатия клавиш?
Procedure PostKeyEx(hWindow: HWnd; key: Word; Const shift: TShiftState; specialkey: Boolean );
Type
TBuffers = Array [0..1] of TKeyboardState;
Var
pKeyBuffers : ^TBuffers;
lparam: LongInt;
Begin
If IsWindow(hWindow) Then
Begin
pKeyBuffers := Nil;
lparam := MakeLong(0, MapVirtualKey(key, 0));
If specialkey Then lparam := lparam or $1000000;
New(pKeyBuffers);
try
AttachThreadInput(GetCurrentThreadId, GetWindowThreadProcessID(hWindow, nil), True);
GetKeyboardState( pKeyBuffers^[1] );
FillChar(pKeyBuffers^[0], Sizeof(TKeyboardState), 0);
If ssShift In shift Then pKeyBuffers^[0][VK_SHIFT] := $80;
If ssAlt In shift Then
Begin
pKeyBuffers^[0][VK_MENU] := $80;
lparam := lparam or $20000000;
End;
If ssCtrl In shift Then pKeyBuffers^[0][VK_CONTROL] := $80;
If ssLeft In shift Then pKeyBuffers^[0][VK_LBUTTON] := $80;
If ssRight In shift Then pKeyBuffers^[0][VK_RBUTTON] := $80;
If ssMiddle In shift Then pKeyBuffers^[0][VK_MBUTTON] := $80;
SetKeyboardState( pKeyBuffers^[0] );
If ssAlt In Shift Then
Begin
PostMessage( hWindow, WM_SYSKEYDOWN, key, lparam);
PostMessage( hWindow, WM_SYSKEYUP, key, lparam or $C0000000);
End
Else Begin
PostMessage( hWindow, WM_KEYDOWN, key, lparam);
PostMessage( hWindow, WM_KEYUP, key, lparam or $C0000000);
End;
Application.ProcessMessages;
Sleep(100);
SetKeyboardState( pKeyBuffers^[1] );
AttachThreadInput(GetCurrentThreadId, GetWindowThreadProcessID(hWindow, nil), False);
finally
If pKeyBuffers <> Nil Then Dispose( pKeyBuffers );
End;
End;
End;
procedure TMainForm.Button1Click(Sender: TObject);
begin
PostKeyEx(findwindow(nil,pchar(prog)), vk_f4, [ssalt], False );
end;
← →
BillyJeans (2004-10-09 13:32) [1]при отправке сообщения окну нет разницы активно оно или нет...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c