Главная страница
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.034 c
2-1159870232
XTD
2006-10-03 14:10
2006.10.22
Почему при выполнении цикла, форма виснет?


2-1159770747
mfender
2006-10-02 10:32
2006.10.22
IHTMLDOMNode. nodeType?


15-1159794489
TStas
2006-10-02 17:08
2006.10.22
Стоит ли шифровать dll ку


2-1160134583
Korneley
2006-10-06 15:36
2006.10.22
Удаленное управление задачами


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