المشاركات : 201
المواضيع 60
:
: 0
الإنتساب : Oct 2009
السلام عليكم ورحمة الله وبركاته
حياكم الله يااحبائنا الكرام
كيف لي ان اعرف ان المستخدم توقف عن العمل داخل البرنامج ؟
نضرب مثال من الواقع :
عندما يتوقف المستخدم عن العمل على الجهاز مدة 5 دقائق مثلا يقوم الوندوز بتشغيل شاشة التوقف .
في امان الله
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
08-08-2010, 11:48 AM
(آخر تعديل لهذه المشاركة: 08-08-2010, 11:53 AM بواسطة kachwahed.)
وعليكم السلام ورحمة الله وبركاته
إقتباس :كيف لي ان اعرف ان المستخدم توقف عن العمل داخل البرنامج ؟
العمل داخل البرنامج يعني: تحريك مؤشر الماوس أو العبث بلوح المفاتيح
غير ذلك المستخدم لا يستعمل البرنامج
لالتقاط حدث تحريك الماوس -> OnMouseMove
لالتقاط حدث ضغط المفاتيح -> OnKeyDown
مثال:
يمكن استخدام TTimer يتم تعطيله عند أحد الحدثين السابقين
يمكن جعل هذا الأخير يقوم بتفعيل TTimer آخر يقوم بأي مهمة
ضع Timer1, Timer2 ثم اضبط Interval للـ Timer1 على المدة التي تريد:
PHP كود :
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Timer1.Enabled := False;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
SendMessage(Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
FormMouseMove(Sender, [], 0, 0)
end;
بالتوفيق
المشاركات : 563
المواضيع 28
:
: 0
الإنتساب : Dec 2008
و عليكم السلام و رحمة الله و بركاته
1- كيف لي ان اعرف ان المستخدم توقف عن العمل داخل البرنامج ؟
- ببساطة نراقب الـ CurrentThread , أو الثريد الحالي و هو للبروسس الشغال أو الـ Active
- لجلب Id للثريد الحالي , GetCurrentThreadId أو System.MainThreadID
PHP كود :
Caption:= ConCat('SystemThr :' , IntToStr(System.MainThreadID)
, ' Or SystemThr :' + IntToStr(GetCurrentThreadId()));
PHP كود :
procedure TForm1.tmr1Timer(Sender: TObject);
begin
Label1.Caption:= Format('%d',[
GetWindowThreadProcessId(
GetForegroundWindow ,nil)
And $FFFF]);
end;
2- عندما يتوقف المستخدم عن العمل على الجهاز مدة 5 دقائق مثلا يقوم الوندوز بتشغيل شاشة التوقف ?
- يمكن عمل Timer أو Thread أو Object , لتحرير شاشة التوقف !
PHP كود :
SendMessage(Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 1);
- راجع WM_SYSCOMMAND , بالإظافة إلى خيارات أخرى SC_MONITORPOWER :laugh: .
بالتوفيق,,
المشاركات : 201
المواضيع 60
:
: 0
الإنتساب : Oct 2009
بارك الله فيكم وزادكم علما
بالتوفيق للجميع
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
المشاركات : 219
المواضيع 24
:
: 16
الإنتساب : May 2009
السلام عليكم
هذا مثال وجدته في delphi.about.com
كود :
http://delphi.about.com/od/adptips2004/a/bltip1104_4.htm
باستخدام GetLastInputInfo
PHP كود :
function SecondsIdle: DWord;
var
liInfo: TLastInputInfo;
begin
liInfo.cbSize := SizeOf(TLastInputInfo) ;
GetLastInputInfo(liInfo) ;
Result := (GetTickCount - liInfo.dwTime) DIV 1000;
end;
procedure TForm1.Timer1Timer(Sender: TObject) ;
begin
Caption := Format('System IDLE last %d seconds', [SecondsIdle]) ;
end;
المشاركات : 201
المواضيع 60
:
: 0
الإنتساب : Oct 2009
وعليكم السلام
بارك الله فيك استادنا الغالي shagrouni
روعة ممتاز جدا
في امان الله
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح