سلام من یه برنامه میخوام بنویسم که محاسبه کته چقدر است که کاربر از نرم افزار (application ) استفاده نکرده (کلیک نکرده و یا به فرم دیگری نرفته است و ....)
میدونم با تایمر ممنون میشم کد بزارین واسم
سلام من یه برنامه میخوام بنویسم که محاسبه کته چقدر است که کاربر از نرم افزار (application ) استفاده نکرده (کلیک نکرده و یا به فرم دیگری نرفته است و ....)
میدونم با تایمر ممنون میشم کد بزارین واسم
این تایپیک
https://barnamenevis.org/showthread.p...8C%D9%86%DB%8C
و این تایپیک
https://barnamenevis.org/showthread.p...B2%D8%A7%D8%B1
کد ویبی دات نت بود خود دیگه تبدیلش کن
Public Class Form1
Implements IMessageFilter
Public Sub New()
InitializeComponent()
Application.AddMessageFilter(Me)
Timer1.Enabled = True
End Sub
Public Function PreFilterMessage(ByRef m As Message) As Boolean Implements IMessageFilter.PreFilterMessage
If (m.Msg >= &H100 And m.Msg <= &H109) Or (m.Msg >= &H200 And m.Msg <= &H20E) Then
Timer1.Stop()
Timer1.Start()
End If
End Function
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Timer1.Stop()
Application.Exit()
End Sub
End Class
من که نفهمیدم
لینک تاپیک هایی را که آقای juza66 براتون قرارداده رو مطالعه کردید ؟؟ جواب توی همین لینک ها بود.
در کل اگر بخوام ساده بگم اینه توی ویندوز همه چی Window هست و هر Window یک Message Quere یا صف پیام ها داره که ویندوز برای تعامل با اون Message هارو توی صف این Window قرار میده تا پردازش بشوند.مثلا وقتی با موس روی فرم کلیک میکنید یک Message به صف پیام های اون Form ارسال میشه و برنامه متوجه میشه که بر روی آن کلیک شده.با اومدن هر Message وظیفه متد WndProc بررسی اون هست تا متناسب با اون عکس العمل نشون بده.حالا شما باید در هر فرم این متد را Override کنید تا بتونید به Messageهایی که میرسه دسترسی داشته باشه.
حالا اگر Message برسه یعنی اینکه کاربر داره با برنامه شما کار میکنه و اگر پیامی بعد 60 ثانیه نرسه میتونید به این عنوان حساب کنید که کاربر به برنامه شما کاری ندارد.
نمیشه حالا یه کد سی شارپی بزارین تا متوجه بشم!!!!! اون سایت ها هم که خیلی به دردم نخورد
public Form1() {
InitializeComponent();
Application.AddMessageFilter(IMessageFilter);
timer1.Enabled = true;
}
public bool PreFilterMessage(ref Message m)
{
if ((((m.Msg >= 256)
&& (m.Msg <= 265))
|| ((m.Msg >= 512)
&& (m.Msg <= 526))))
{
timer2.Stop();
timer2.Start();
}
}
این تبدیلش بود ولی error داره
خط 3 و 5 error داره
با سلام
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
public static uint GetIdleTime()
{
LASTINPUTINFO lastInPut = new LASTINPUTINFO();
lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeO f(lastInPut);
GetLastInputInfo(ref lastInPut);
return ((uint)Environment.TickCount - lastInPut.dwTime);
}
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text =(GetIdleTime()/1000).ToString();
}
}
}
موفق باشید
این کد فقط خود برنامه رو چک نمیکنه یعنی اگه من تو برنامه word لاشم و از برنامه استفاده نکنم هم باید مدت زمان رو حساب کته در حالی که الان وقتی تو یه برنامه دیگه هسنم باز انگار برنامه فعاله؟؟؟//
کیشه یه توضیح راجبه 256 ,... این عددا چین؟
پیام های تو ویندوز هر کدوم یک ID دارند که میشه از این طریق تشخیص داد که این پیام چیست . در این لینک اسم پیام های مختلف مرتبط با موس نوشته شده است.مثلا زمانی که روی فرم کلیک کنید یک پیام به اسم WM_LBUTTONDOWN به فرم ارسال میشه که ID اون 0x0201 هست.
برنامه درست کار کرد ؟
بله مرسی کاش یه تاپیکش کنی که همه استفاده کنن
احتمالا پاکش میکنند، به دلیل تکراری بودن
یکم بهترش کردم ، اینم عکسش :
آخرین ویرایش به وسیله abbas.oveissi : دوشنبه 06 مرداد 1393 در 03:14 صبح
خیلی جالب بود این به در ده این میخوره که مسه وب سشن بزاری یعنی بعد 1 دقیقه یه فرم لاگین بیاد و از کاربر بخواد لاگین کنه