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

Вниз

Процессорное время   Найти похожие ветки 

 
Димыч ©   (2006-10-02 14:16) [0]

Вот в чем проблма: я управляю из своей программы чужой, отсылая ей сообщений о якобы нажатых клавишах клавиатуры, программа реагирует но иногда не успевает т.к. ей нужно сделать свои сложные действия. Как бы передать на время чужой программе процессорное время (на секунду или две)?


 
Игорь Шевченко ©   (2006-10-02 14:19) [1]


> отсылая ей сообщений о якобы нажатых клавишах клавиатуры


Как отсылаешь ?


 
Димыч ©   (2006-10-02 14:21) [2]

var
H:hwnd
begin

H := FindWindow( nil, w);
if (H <> 0) then begin
  ThreadId    := GetWindowThreadProcessId(H, nil);

  AttachThreadInput(GetCurrentThreadId(), ThreadId, True);
  PostMessage(H, WM_KEYDOWN , 83, 0);
  Sleep(500);
  PostMessage(H, WM_KEYUP   , 83, 0);
  AttachThreadInput(GetCurrentThreadId(), ThreadId, False);
  Sleep(500);
...

Вот так


 
Сергей М. ©   (2006-10-02 14:21) [3]

SetProcessPriorityBoost()

Но учти, что ты жертвуешь в т.ч. и своим процессорным временем, так что две пожертвованные тобой секунды могут растянуться и на неопред.время, в теч.которого твой (и не только твой) процесс будет "не успевать", как тот самый "чужой" процесс, о котором ты столь печешься.


 
Сергей М. ©   (2006-10-02 14:23) [4]


> PostMessage(H, WM_KEYDOWN , 83, 0);


> PostMessage(H, WM_KEYUP   , 83, 0);


Галиматья.


 
Димыч ©   (2006-10-02 14:23) [5]

Поясни если не трудно, как пользоваться этой функцией


 
Сергей М. ©   (2006-10-02 14:25) [6]

Первым параметром д.б. хэндл окна


 
Димыч ©   (2006-10-02 14:31) [7]


> > PostMessage(H, WM_KEYDOWN , 83, 0);
>
>
> > PostMessage(H, WM_KEYUP   , 83, 0);
>
>
> Галиматья.


если есть способ лучше буду рад узнать


 
Сергей М. ©   (2006-10-02 14:51) [8]

Э-э-э .. пардон, H тут и есть хэндл окна.

Но мне непонятен смысл вызова GetWindowThreadProcessId и AttachThreadInput ..


 
Leonid Troyanovsky ©   (2006-10-02 15:00) [9]


> Сергей М. ©   (02.10.06 14:25) [6]

> Первым параметром д.б. хэндл окна


Дык он и есть хендл.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2006-10-02 15:05) [10]


> Димыч ©   (02.10.06 14:31) [7]

> если есть способ лучше буду рад узнать


Если речь о посылке именно о char, т.е., например, #80,
то можно попробывать
SendMessage(h, WM_CHAR, Ord("P"), 0);
в сочетании с WaitForInputIdle.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2006-10-02 15:07) [11]


> Сергей М. ©   (02.10.06 14:51) [8]

> Но мне непонятен смысл вызова GetWindowThreadProcessId и
> AttachThreadInput ..


Имеет смысл, например, при SetFocus.
Или, например, для SetKeyboardState.

--
Regards, LVT.



Страницы: 1 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.036 c
15-1159866468
VitV
2006-10-03 13:07
2006.10.22
Посоветуйте програму.


15-1159381074
Nic
2006-09-27 22:17
2006.10.22
Работа с оборудованием через com-порт


15-1159780325
DelphiLexx
2006-10-02 13:12
2006.10.22
Помогите с названием программы


2-1159882055
Юный Падаван
2006-10-03 17:27
2006.10.22
Откуда запускается моя программа


1-1157956587
yahaha
2006-09-11 10:36
2006.10.22
Вывод в нестандартные окна