Главная страница
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.067 c
15-1159381185
_Ламер_
2006-09-27 22:19
2006.10.22
База слов в редакторах, переводчиках


3-1156426216
Сергей А.
2006-08-24 17:30
2006.10.22
Длина поля в таблице MySQL


15-1159381674
PHPDeveloper
2006-09-27 22:27
2006.10.22
TWebBrower


15-1159036932
AnCo
2006-09-23 22:42
2006.10.22
TMS AdvStringGrid


15-1159690106
vidiv
2006-10-01 12:08
2006.10.22
Глюк компилятора или я уже переработал?