Главная страница
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.058 c
9-1137401771
Kerk
2006-01-16 11:56
2006.10.22
Ошибки геймдизайнера: Горячая десятка


1-1157899111
Kolan
2006-09-10 18:38
2006.10.22
Управление свойством Point TChart.


2-1160058261
maverick_man
2006-10-05 18:24
2006.10.22
Подскажите плиз


15-1159867013
Multy
2006-10-03 13:16
2006.10.22
Табличные функции


3-1156827594
Layner
2006-08-29 08:59
2006.10.22
Не могу прогнать запрос из Delphi в бд Access, поле с датой..