Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

Отправить сообщение неактивному окну   Найти похожие ветки 

 
НовичОк ©   (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 вся ветка

Текущий архив: 2004.11.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.047 c
1-1099260966
Кто---то
2004-11-01 01:16
2004.11.21
Как преобразовать картинку в шрифт ?


1-1099682272
Kolan
2004-11-05 22:17
2004.11.21
Работа с RichEdit


1-1099355379
TechnoDreamer
2004-11-02 03:29
2004.11.21
Произошли ошибки во время выполнения многошаговой операции


14-1099397598
R.O.O.T
2004-11-02 15:13
2004.11.21
Из-за чего перегружается компьютер


4-1097334056
Hensin
2004-10-09 19:00
2004.11.21
Как усыпить и разбудить комп?