Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
ВнизПроцессорное время Найти похожие ветки
← →
Димыч © (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c