Главная страница
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.056 c
3-1156338842
Michael Makushev
2006-08-23 17:14
2006.10.22
Не удаляется ADO соединение со стороны сервера MSSQL


15-1159783567
Slider007
2006-10-02 14:06
2006.10.22
С днем рождения ! 28 сентября


15-1159504837
Gleb Stah
2006-09-29 08:40
2006.10.22
Плагин для Opera


2-1159816139
learner
2006-10-02 23:08
2006.10.22
Проверка индекса для массива


4-1148422772
LiveSoft
2006-05-24 02:19
2006.10.22
Обратботка своего пункта меню