|
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | >> (покажи всички)
Тема
|
Inactivity detection
|
|
Автор |
bass (so deep!) |
Публикувано | 27.11.03 18:21 |
|
Hi, тази тема май е засягана (в различна степен) неколкократно, но на когото не му е досадно, нека даде акъл.
Целта е да се отчита бездействието на потребителя без използване на Hooks и без да се разчита на ScreenSaver-а.
Степента на достоверност може да не е непременно 100%, а някъде към 90 :-))
Днес си направих експеримент да свърша работата със следене за смяна на активното приложение, активния контрол в него и позицията на курсора, но в случая с конзолните приложения претърпях крах :-\\ (За съжаление имам сумати юзъри, ползващи интензивно промпта...)
| |
Тема
|
Re: Inactivity detection
[re: bass]
|
|
Автор |
SDR (TaskMaster) |
Публикувано | 27.11.03 19:19 |
|
kwo ti prechat HOOKS? po krasivo ot s hooks nema kak da stane ....
------------------------------
I got a COMPILER, and I'm not afraid to use it!
| |
Тема
|
Re: Inactivity detection
[re: SDR]
|
|
Автор |
bass (so deep!) |
Публикувано | 27.11.03 20:27 |
|
>> kwo ti prechat HOOKS?
Windows SDK:
"Hooks tend to slow down the system because they increase the amount of processing the system must perform for each message. You should install a hook only when necessary, and remove it as soon as possible. "
Да е за нещо сериозно - разбирам, а тва мойто е едно пикливо приложенийце, което на всичкото отгоре виси през цялото време в SystemTray.
Помня, че в предни теми имаше един пост "В крайна сметка бавни ли са Hooks?", но нещо не мога да го изровя.
Редактирано от bass на 27.11.03 20:29.
| |
Тема
|
Re: Inactivity detection
[re: bass]
|
|
Автор |
PhantomAS (няма) |
Публикувано | 27.11.03 21:10 |
|
Няма да минеш без тях колкото и да ти е тъжно ;-)))) - всяко нещо си има цена - за да следиш какво правят мишката и клавиатурата - друг начин няма - освен начина по който се извиква screen saver-a може би. Лошото е че това май е системно събитие и няма как да се закачаш по-поразличен начин т.е. да не се пуска ssaver-a ами да ти праща съобщение на твоята програма.
Всъщност темата май си я гледал някъде другаде(не в този клуб) - и реално бързината зависи от това как точно ти е написана callback функцията и какво прави тя. Вярно забавяне за изпъление има - но ако функцията ти гълта повече време за изпълнение от колкото за самото извикване (от системата) - си е твой проблем - тука бих ти препоръчал ако гониш бързодействие да си я напишеш на нещо друго (разбирай VC ) а не Delphi.
---
Е т'ва е живот!
| |
Тема
|
Re: Inactivity detection
[re: PhantomAS]
|
|
Автор |
Mixy (почетен член) |
Публикувано | 27.11.03 21:52 |
|
Доколкото си спомням, преди да тръгне ScreenSaver-a се праща съобщение до всички активни процеси (или прозорци само, не помня) и ако всички го пуснат той си се задейства. Затова напр. докато си гледате Matrix: Revolutions, филма си бичи 2 часа и кусур и никви сейвъри или други тъпотии не ви смущават - просто плеъра не дава на сейвъра да тръгне.
Mixy
| |
Тема
|
Re: Inactivity detection
[re: Mixy]
|
|
Автор |
bass (so deep!) |
Публикувано | 27.11.03 22:21 |
|
>>освен начина по който се извиква screen saver-a може би
Рових доста из MSDN-а и въобще в нета да разбера как точно сработва ScreenSavera (дали като просто приложение с Hook или по-хитро някак си)... ама без успех :-((
>>преди да тръгне ScreenSaver-a се праща съобщение до всички активни процеси (или прозорци само, не помня) и ако всички го пуснат той си се задейства.
Съобщение се праща при смяна на системните настройки (в частност - на на ScreeSaver-а), но не и при активиране/деактивиране (или поне аз не можах да изровя такова суперудобно нещо). В началото наивно помислих, че SPI_SETSCREENSAVEACTIVE е мойто събитие :-\\
А иначе целевото изключване на ScreenSaver-а не е проблем, но това е друга тема.
btw, преди 2000/XP даже няма API за проверка дали в момента е активен ScreenSavera-а или не...
| |
Тема
|
Re: Inactivity detection
[re: bass]
|
|
Автор |
PhantomAS (няма) |
Публикувано | 28.11.03 08:34 |
|
Относно детект на неактивност - почти съм 99% сигурен вече, че може да се заобиколи hook- а(или поне да не е в явен dll) , една руска фирма беше пуснала компонент който го правеше (обаче не съм сигурен дали просто това което правят не е на по ниско ниво ??). Обаче не можах да го намеря в нета - май го имам някъде по дисковете - ама преди другата седмица нямам време да ровя.
Също подобен компонент (хвалят се, че го правят също без hook) и една друга фирма - правеща AppControls. Потърси ги - и дръпни демото - да видиш какви API функции ползват - това поне лесно можеш да направиш.
Имам обаче лошото чувство, че май го правят (пак чрез кука) - но без dll -явно това е хватката - ако това ти върши работа - мога да ти пратя код.
---
Е т'ва е живот!
| |
Тема
|
Re: Inactivity detection
[re: bass]
|
|
Автор |
synchu ( a?) |
Публикувано | 28.11.03 09:37 |
|
оппа...полека полека с хууковете....
И да ! Преди да тръгне скрийнсейвъра Виндовса броудкаства WM_SYSCOMMAND message със wParam = SC_SCREENSAVER, така че ако си пуснеш приложението и го хванеш това съобщение и върнеш ТРУ скрийнсйвъра нема да тръгне и ти ще си делкаш там каквото си ти трябва....
There are 10 types of people in this world one who understand binary jokes and one who not
| |
Тема
|
Re: Inactivity detection
[re: synchu]
|
|
Автор |
bass (so deep!) |
Публикувано | 28.11.03 11:19 |
|
Аха, сега ще го изтествам тва, 10x.
Иначе скрийнсейвъра не ми пречи - нека си се пуска. Не ми се искаше обаче да разчитам на него, понеже може някой юзър да реши да го спре :-))
| |
|
Ще имам материал за уикенда :-)
btw, като споменах за работа през уикенда, в този клуб забелязвам много похвално явление - след 20.00 почти няма народ тук, което говори за отлична трудова дисциплина (за разлика от "Системни администратори", например) :-P
| |
|
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | >> (покажи всички)
|
|
|