Inactivity detection
46 отговора
890 прегледа
Re: Inactivity detection
Един от компонентите на AppControls (acAwayTimer) е точно това, което ми трябва, но с нюхане на съобщенията по време на работа все още не мога да прозра подхода :-\\
Re: Тесла!
dazhe i s hook-a li ?
There are 10 types of people in this world one who understand binary jokes and one who not
There are 10 types of people in this world one who understand binary jokes and one who not
Re: Тесла!
С Hook не съм го пробвал, още не съм се отказал да свърша работа без такъв :-)
Re: Inactivity detection
А бе имам сорса - ама точно версията в която го няма ;-)) - следващите вече го имат - но нямам сорс - иначе щях да помогна - ще проверя все пак. Май си прявят hook - не мисля, че е по друг начин - просто е без dll.
Ако си направиш едно приложение - само с този компонент - и го компилираш с runtime VCL(но без AppControls-a ) - може би ще успееш да отсееш API фунциите които се ползват.
---
Е т'ва е живот!
Ако си направиш едно приложение - само с този компонент - и го компилираш с runtime VCL(но без AppControls-a ) - може би ще успееш да отсееш API фунциите които се ползват.
---
Е т'ва е живот!
Re: Deeper look on the problem
spored mojto SDK:
The RegisterHotKey function defines a system-wide hot key
....
Remarks
When a key is pressed, the system looks for a match against all hot keys. Upon finding a match, the system posts the WM_HOTKEY message to the message queue of the thread that registered the hot key. This message is posted to the beginning of the queue so it is removed by the next iteration of the message loop.
Nachi nqma nachin towa da stane po drug nachin oswen chrez prekarwane na chast ot input potoka prez tebe - ako imashe broqchka na natisnatite klawishi implementirana w driverite neshtata shtqha da sa ok ama az pone ne znam za takawa :( taka che ili hooks ili twa tuka krasotata e che ne ti trqbwa dll i drugi "slojnotii" koito proizhokdat ot towa che koda na hooka se wika k konteksta na nishkata za koqto e ewenta... inache ne se pritesnqwaj za degradaciq na skorostta na sistemata taka ili inache aktiwnoto prilojenie poluchawa znachitelno poweche messages otkolkoto ti shte poluchish po toq nachin - neshto koeto ne mo0jesh da filtrirash s hook bez sobstwen kod ... izobshto ne se plashi pishi - towa e dostatachno prsto za da mojesh da go testwash dori samo zaradi ideqta
------------------------------
I got a COMPILER, and I'm not afraid to use it!
The RegisterHotKey function defines a system-wide hot key
....
Remarks
When a key is pressed, the system looks for a match against all hot keys. Upon finding a match, the system posts the WM_HOTKEY message to the message queue of the thread that registered the hot key. This message is posted to the beginning of the queue so it is removed by the next iteration of the message loop.
Nachi nqma nachin towa da stane po drug nachin oswen chrez prekarwane na chast ot input potoka prez tebe - ako imashe broqchka na natisnatite klawishi implementirana w driverite neshtata shtqha da sa ok ama az pone ne znam za takawa :( taka che ili hooks ili twa tuka krasotata e che ne ti trqbwa dll i drugi "slojnotii" koito proizhokdat ot towa che koda na hooka se wika k konteksta na nishkata za koqto e ewenta... inache ne se pritesnqwaj za degradaciq na skorostta na sistemata taka ili inache aktiwnoto prilojenie poluchawa znachitelno poweche messages otkolkoto ti shte poluchish po toq nachin - neshto koeto ne mo0jesh da filtrirash s hook bez sobstwen kod ... izobshto ne se plashi pishi - towa e dostatachno prsto za da mojesh da go testwash dori samo zaradi ideqta
------------------------------
I got a COMPILER, and I'm not afraid to use it!
Re: Deeper look on the problem
Ми понеже в момента така или иначе нямам по-добра идея, ще пробвам :-)
BTW, нещо съм изпуснал края на ревизиите на SDK (сега ползвам версията, идваща с D6) - ти коя ползваш?
BTW, нещо съм изпуснал края на ревизиите на SDK (сега ползвам версията, идваща с D6) - ти коя ползваш?
Re: Deeper look on the problem
Taq ot MS :) [линк] a ako trqbwa da bydem sawsem tochni taq ot MSVS7.NET
------------------------------
I got a COMPILER, and I'm not afraid to use it!
------------------------------
I got a COMPILER, and I'm not afraid to use it!
Излагация
acAwayTimer също (като моите първи проби) не хваща хавата в терминален прозорец - кълва си аз бясно по клавиатурата, а той ми включва Away :-((
Оказа се, че има специални API-функции за работа с инпута на терминалния прозорец. Ако във всички уиндоуси класът на промпта е с едно и също име (което ще проверя тия дни), може да излезе нещо.
Оказа се, че има специални API-функции за работа с инпута на терминалния прозорец. Ако във всички уиндоуси класът на промпта е с едно и също име (което ще проверя тия дни), може да излезе нещо.
Една дървена идейка...
... която ще работи само за 2000/XP е да си пуснеш процес с Priority BelowNormal, който да ти цикли някъде, броейки колко време е прекарал в цикъла. Така няма да се затормзява работата на системата, същевременно Вместо System Idle Process ще се изпълнява твоят процес. Програмката ти може да комуникира с този процес и да го пита за времето, през което се е изпълнявал. Нямам възможност да направя експеримент сега, затова го казвам само като идея. Не знам и колко ще е точно...
Re: Една дървена идейка...
hmmmm taka ili inache wse sha go shedulnat da ti kaja maj .... shtom ne se e blokiral za IO nqma nachin da ne go shedulnat oswen ako ne e na server s 10000 hita w sekunda
------------------------------
I got a COMPILER, and I'm not afraid to use it!
------------------------------
I got a COMPILER, and I'm not afraid to use it!
Re: Една дървена идейка...
:-)
Минавала ми е идеята за следене на Idle-процеса (и на всички активни задачи, btw), но не можах да измисля схема за достоверен анализ на активността (понеже изменения и размествания стават не само в резултат на потребителски действия).
За съжаление мойто програмче ще трябва да върви на всякакъв (сравнително актуален, де) уиндоус и не мога да приложа тва с допълнителния процес...
А някой да се сеща за начин да се извлече текстовото съдържание на конзолен прозорец без Pipes и по възможност - без симулации на натиснати клавиши (SysMenu->Edit->SelectAll, SysMenu->Edit->Copy), че много стряскат юзъра :-)) ?
Ако си реша този проблем, ще съм напълно доволен в конкретния случай (както писах по-горе, следенето на активността за нормалните прозорци го докарах до приемливо ниво).
Минавала ми е идеята за следене на Idle-процеса (и на всички активни задачи, btw), но не можах да измисля схема за достоверен анализ на активността (понеже изменения и размествания стават не само в резултат на потребителски действия).
За съжаление мойто програмче ще трябва да върви на всякакъв (сравнително актуален, де) уиндоус и не мога да приложа тва с допълнителния процес...
А някой да се сеща за начин да се извлече текстовото съдържание на конзолен прозорец без Pipes и по възможност - без симулации на натиснати клавиши (SysMenu->Edit->SelectAll, SysMenu->Edit->Copy), че много стряскат юзъра :-)) ?
Ако си реша този проблем, ще съм напълно доволен в конкретния случай (както писах по-горе, следенето на активността за нормалните прозорци го докарах до приемливо ниво).
Редактирано от bass на
Re: Една дървена идейка...
конзолен прозорец? ама който твойто приложение е отворило или произволен такъв?
Без пайпове трудно ще стане. Ама какъв е проблема с пайповете? Редиректваш си стдин и стдаут и си правиш квото искаш?
Единствения друг вариант, който се сещам е със "стряскащата" емулацията на клавиши :)
There are 10 types of people in this world one who understand binary jokes and one who not
Без пайпове трудно ще стане. Ама какъв е проблема с пайповете? Редиректваш си стдин и стдаут и си правиш квото искаш?
Единствения друг вариант, който се сещам е със "стряскащата" емулацията на клавиши :)
There are 10 types of people in this world one who understand binary jokes and one who not
Re: Една дървена идейка...
Става въпрос за произволен конзолен прозорец.
Проблемът с пайповете е, че не мога да "отворя -> измъкна текста -> затворя", а трябва да сложа Listener, който да чака да стане нещо по входа/изхода.
Въобще, цялата тази патаклама (без хуукове, без пайпове, etc.) е с цел да не ангажирам постоянно "вниманието" на определено приложение или системата като цяло, а някакси деликатно да се осведомявам за хавата от време на време.
Проблемът с пайповете е, че не мога да "отворя -> измъкна текста -> затворя", а трябва да сложа Listener, който да чака да стане нещо по входа/изхода.
Въобще, цялата тази патаклама (без хуукове, без пайпове, etc.) е с цел да не ангажирам постоянно "вниманието" на определено приложение или системата като цяло, а някакси деликатно да се осведомявам за хавата от време на време.
Re: Една дървена идейка...
ReadConsoleOutputCharacter - Copies a number of characters from consecutive cells of a console screen buffer.
ili za po lesno:
To determine the current position of the cursor, use the GetConsoleScreenBufferInfo function.
Problema e kak sega da se dokopash do handle na konzolata za dadeniq proces... shtoto toj ne e kato handala na prozoreca....
------------------------------
I got a COMPILER, and I'm not afraid to use it!
ili za po lesno:
To determine the current position of the cursor, use the GetConsoleScreenBufferInfo function.
Problema e kak sega da se dokopash do handle na konzolata za dadeniq proces... shtoto toj ne e kato handala na prozoreca....
------------------------------
I got a COMPILER, and I'm not afraid to use it!
Re: Една дървена идейка...
malko se chete w toq pusti MSDN brej!!!
AttachConsole
The AttachConsole function attaches the calling process to the console of the specified process.
BOOL AttachConsole(
DWORD dwProcessId
);
Parameters
dwProcessId
[in] Identifier of the process. This parameter can be following value.
Gusto majnaaaaaaaaa
The GetWindowThreadProcessId function retrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created the window.
Syntax
DWORD GetWindowThreadProcessId( HWND hWnd,
LPDWORD lpdwProcessId
);
Parameters
hWnd
[in] Handle to the window.
lpdwProcessId
[out] Pointer to a variable that receives the process identifier. If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the variable; otherwise, it does not.
are chestito i kato stane da publikuwash koda nqkade :)
------------------------------
I got a COMPILER, and I'm not afraid to use it!
AttachConsole
The AttachConsole function attaches the calling process to the console of the specified process.
BOOL AttachConsole(
DWORD dwProcessId
);
Parameters
dwProcessId
[in] Identifier of the process. This parameter can be following value.
Gusto majnaaaaaaaaa
The GetWindowThreadProcessId function retrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created the window.
Syntax
DWORD GetWindowThreadProcessId( HWND hWnd,
LPDWORD lpdwProcessId
);
Parameters
hWnd
[in] Handle to the window.
lpdwProcessId
[out] Pointer to a variable that receives the process identifier. If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the variable; otherwise, it does not.
are chestito i kato stane da publikuwash koda nqkade :)
------------------------------
I got a COMPILER, and I'm not afraid to use it!
Re: Една дървена идейка...
ясно...
Е не се сещам за произволен прозорец нещо различно от някакъв сервиз с пайп. Имаше нещо, което вървеше под ХР - AttachConsole или нещо подобно, но е само за ХР и пак с се действа пайпове.
Хвърли един поглед в СДК-то на "Console Functions".
There are 10 types of people in this world one who understand binary jokes and one who not
Е не се сещам за произволен прозорец нещо различно от някакъв сервиз с пайп. Имаше нещо, което вървеше под ХР - AttachConsole или нещо подобно, но е само за ХР и пак с се действа пайпове.
Хвърли един поглед в СДК-то на "Console Functions".
There are 10 types of people in this world one who understand binary jokes and one who not
Re: Една дървена идейка...
емпръчката е че само по ХР въри тва ;)
There are 10 types of people in this world one who understand binary jokes and one who not
There are 10 types of people in this world one who understand binary jokes and one who not
Не бързай с честитката :-)
От завчера ровя Console Functions и положението варира от еуфория до пълно отчаяние :-\\
Имам някакъв проблем с AttachConsole под 98 (не съм тествал на 95 и NT).
Първо се оказа, че конзолният прозорец в 9х не е същия клас като в NT/2000/XP("TTY" в 98, "ConsoleWindowClass" в останалите), но дори и след като оправих това не мога да допкопам валиден Handler под 98.
Продължавам да го копам.
Иначе за сорса - ще го пусна. Снощи за разпускане събрах в един компонент всички върввящи "наброски", които съм направил до момента. Като (и ако) го прецизирам и почистя, ще го постна.
p.s. Сега видях и поста на Synchu :-(((
Имам някакъв проблем с AttachConsole под 98 (не съм тествал на 95 и NT).
Първо се оказа, че конзолният прозорец в 9х не е същия клас като в NT/2000/XP("TTY" в 98, "ConsoleWindowClass" в останалите), но дори и след като оправих това не мога да допкопам валиден Handler под 98.
Продължавам да го копам.
Иначе за сорса - ще го пусна. Снощи за разпускане събрах в един компонент всички върввящи "наброски", които съм направил до момента. Като (и ако) го прецизирам и почистя, ще го постна.
p.s. Сега видях и поста на Synchu :-(((
Редактирано от bass на
Re: Една дървена идейка...
Pipowe tranki :) i gloginki tiq paipowe ti warshat rabota togawa i samo togawa kogato TI startirash procesa i iskash da mu uprawlqwash whoda i/ili da mu chetesh izhoda
------------------------------
I got a COMPILER, and I'm not afraid to use it!
------------------------------
I got a COMPILER, and I'm not afraid to use it!
Re: Не бързай с честитката :-)
w interes na istinata neshtata naista inzglejdat plachewno na tema win9x spored mene twa neshto trqbwa da go zabranqt s zakon :) inache za istinskite windowsi ima edna gotinka funkciq...
GetThreadTimes
The GetThreadTimes function retrieves timing information for the specified thread.
BOOL GetThreadTimes(
HANDLE hThread,
LPFILETIME lpCreationTime,
LPFILETIME lpExitTime,
LPFILETIME lpKernelTime,
LPFILETIME lpUserTime
);
Parameters
hThread
[in] Handle to the thread whose timing information is sought. This handle must have the THREAD_QUERY_INFORMATION access right. For more information, see Thread Security and Access Rights.
lpCreationTime
[out] Pointer to a FILETIME structure that receives the creation time of the thread.
lpExitTime
[out] Pointer to a FILETIME structure that receives the exit time of the thread. If the thread has not exited, the content of this structure is undefined.
lpKernelTime
[out] Pointer to a FILETIME structure that receives the amount of time that the thread has executed in kernel mode.
lpUserTime
[out] Pointer to a FILETIME structure that receives the amount of time that the thread has executed in user mode.
koqto za konzolni apz sha e naprao super udobna .... ama ....
btw naesh li ko mi skimna toku shto? mojesh da prawsih code injection na wsichkite konzolni prilojeniq i taka da im poluchawash nomera na konzolkata :) ne sam li mnoo itar? a? nedostatajka e che pak se pishat dll-i :(
------------------------------
I got a COMPILER, and I'm not afraid to use it!
GetThreadTimes
The GetThreadTimes function retrieves timing information for the specified thread.
BOOL GetThreadTimes(
HANDLE hThread,
LPFILETIME lpCreationTime,
LPFILETIME lpExitTime,
LPFILETIME lpKernelTime,
LPFILETIME lpUserTime
);
Parameters
hThread
[in] Handle to the thread whose timing information is sought. This handle must have the THREAD_QUERY_INFORMATION access right. For more information, see Thread Security and Access Rights.
lpCreationTime
[out] Pointer to a FILETIME structure that receives the creation time of the thread.
lpExitTime
[out] Pointer to a FILETIME structure that receives the exit time of the thread. If the thread has not exited, the content of this structure is undefined.
lpKernelTime
[out] Pointer to a FILETIME structure that receives the amount of time that the thread has executed in kernel mode.
lpUserTime
[out] Pointer to a FILETIME structure that receives the amount of time that the thread has executed in user mode.
koqto za konzolni apz sha e naprao super udobna .... ama ....
btw naesh li ko mi skimna toku shto? mojesh da prawsih code injection na wsichkite konzolni prilojeniq i taka da im poluchawash nomera na konzolkata :) ne sam li mnoo itar? a? nedostatajka e che pak se pishat dll-i :(
------------------------------
I got a COMPILER, and I'm not afraid to use it!