una uber presupuesto por movil mantener hacer estructura ejemplo desarrollar cuesta cuanto cotizacion costos como cobran argentina app aplicacion .net vb.net

.net - uber - ¿Cómo calcular el tiempo total que un usuario gasta en una aplicación?



estructura de costos de una aplicacion movil (6)

Aquí está casi la fuente completa de una aplicación WinForms que hace esto. Tenga en cuenta que solo agrega tiempo cuando Firefox tiene foco.

using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows.Forms; namespace FireFoxWatch { public partial class Form1 : Form { [DllImport("user32.dll")] private static extern IntPtr GetForegroundWindow(); [DllImport("user32.dll", SetLastError = true)] static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); private TimeSpan fireFoxElapsedTime = new TimeSpan(); public Form1() { InitializeComponent(); } // this handler is called each time the Timer component''s interval is reached. private void timer1_Tick(object sender, EventArgs e) { var wnd = GetForegroundWindow(); uint procId; GetWindowThreadProcessId(wnd, out procId); var process = Process.GetProcessById((int)procId); if (process.ProcessName.Equals("firefox", StringComparison.CurrentCultureIgnoreCase)) fireFoxElapsedTime += new TimeSpan(0, 0, 0, 0, timer1.Interval); //TODO: If fireFoxElapsedTime > Some predetermined TimeSpan, play a sound. // Right now it just updates a display label. label1.Text = fireFoxElapsedTime.ToString(); } // start the timer when the form loads. private void Form1_Load(object sender, EventArgs e) { timer1.Start(); } } }

La única parte que no se muestra aquí es que hice una aplicación WinForms predeterminada, luego agregué un componente "Temporizador" de la caja de herramientas, que se llama "timer1" en el código, y era el nombre predeterminado.

El código anterior solo actualiza el tiempo total en una etiqueta winform, pero puede agregar código fácilmente para reproducir un sonido.

Quiero crear una aplicación que pueda calcular el tiempo total que el usuario (es decir, yo) dedicó a una aplicación en particular, por ejemplo, Firefox. Y esta aplicación debería mostrar un mensaje de advertencia si el usuario pasó mucho tiempo en Firefox (por ejemplo, 1 hora o más)

Razón : soy un desarrollador de VB.NET. Durante mis horas de trabajo, mi herramienta principal es Visual Studio y se supone que debo hacer codificación. Pero necesito Firefox de vez en cuando para acceder a Internet (particularmente SO y otros sitios) para encontrar soluciones para mis problemas de programación. El problema es que soy adicto al SO y SO me chupa el tiempo durante horas hasta que he olvidado que debo continuar codificando y no navegando por el sitio SO.

Mi pregunta : ¿Cómo calcular el tiempo total que un usuario gasta en una aplicación abierta como Firefox?

Actualizar:

Necesito reproducir una canción como mensaje de advertencia para mí mismo si me quedo demasiado tiempo con Firefox. Mi intención es crear un servicio de Windows o Windows para lograr esto.


Este tipo, Sateesh Arveti, codificó lo que está buscando: Active Application Watcher :

Hasta ahora, he visto tantas aplicaciones que mostrarán el uso del sistema en términos de memoria, procesador ... Pero, un usuario no quiere todos estos detalles. Puede esperar saber cuánto tiempo está gastando en cada aplicación, como el navegador, Winamp al final del día ... Esta aplicación ayudará al usuario a saber cuánto tiempo está gastando en cada aplicación cada día. Esta aplicación asume que la ventana, que está activa como la aplicación en la que el usuario está trabajando. Por lo tanto, registrará los detalles de la aplicación como el título de la ventana, el nombre del proceso y el tiempo empleado en ella en un archivo xml. Seguirá así hasta que se cierre la aplicación. Una vez que se cierre la aplicación, mostrará todos los detalles de la aplicación activa en un navegador con el formato adecuado.

Aquí está mi versión simple de vb.net (agregué el evento de alerta de sonido para FireFox).

Crear una clase de WinTracker:

Imports System Imports System.ComponentModel Public Class WinTracker Implements INotifyPropertyChanged Public Event PropertyChanged(ByVal sender As Object, ByVal e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged Public Event SoundAlert(ByVal sender As Object, ByVal e As EventArgs) Private _ID As Integer Private _Text As String Private _ElapsedTime As TimeSpan Private _LastStart As DateTime Private _RunningTime As TimeSpan Public Sub New(ByVal id As Integer, ByVal text As String) _ID = id _Text = text Call StartTracking() End Sub ReadOnly Property ID() As Integer Get Return _ID End Get End Property Property Text() As String Get Return _Text End Get Set(ByVal value As String) If value <> _Text Then _Text = value RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("Text")) End If End Set End Property Public Sub StartTracking() _RunningTime = TimeSpan.Zero _LastStart = DateTime.Now End Sub Public Sub StopTracking() _ElapsedTime += _RunningTime _RunningTime = TimeSpan.Zero RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("ToString")) End Sub Public Sub UpdateTime() _RunningTime = (DateTime.Now - _LastStart) RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("ToString")) If _RunningTime.Seconds >= 60 Then RaiseEvent SoundAlert(Me, New EventArgs) End If End Sub Public Overrides Function ToString() As String Return "(" & FormatTimeSpan(_ElapsedTime + _RunningTime) & ") " & _Text End Function Public Shared Operator =(ByVal thisItem As WinTracker, ByVal thatItem As WinTracker) As Boolean Return (thisItem.ID = thatItem.ID) End Operator Public Shared Operator <>(ByVal thisItem As WinTracker, ByVal thatItem As WinTracker) As Boolean Return Not (thisItem.ID = thatItem.ID) End Operator Private Function FormatTimeSpan(ByVal span As TimeSpan) As String Return span.Hours.ToString("00") & " hrs " & span.Minutes.ToString("00") & " min " & span.Seconds.ToString("00") & " sec" End Function Public Shared Sub SwitchWindows(ByVal FromWindow As WinTracker, ByVal ToWindow As WinTracker) FromWindow.StopTracking() ToWindow.StartTracking() End Sub End Class

Y luego crea un formulario con un temporizador y un cuadro de lista:

Imports System Imports System.ComponentModel Imports System.Diagnostics Imports System.Runtime.InteropServices Public Class Form1 Private Declare Auto Function GetForegroundWindow Lib "user32" () As IntPtr Private Declare Auto Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Int32, ByRef lpdwProcessId As Int32) As UInt32 Private _Windows As New BindingList(Of WinTracker) Private _ActiveWindow As WinTracker Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load With ListBox1 .ValueMember = "ID" .DisplayMember = "ToString" .DataSource = New BindingSource(_Windows, Nothing) End With Timer1.Enabled = True End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick Dim hWnd As Integer = GetForegroundWindow().ToInt32 If hWnd > 0 Then Dim id As Integer = 1 Call GetWindowThreadProcessId(hWnd, id) If id > 0 Then Dim text As String = Process.GetProcessById(id).ProcessName If text <> String.Empty Then Dim spent As WinTracker = _Windows.FirstOrDefault(Function(x As WinTracker) x.ID = id) If spent Is Nothing Then spent = New WinTracker(id, text) _Windows.Add(spent) If text.ToLower = "firefox" Then AddHandler spent.SoundAlert, AddressOf WinTracker_SoundAlert End If Else spent.Text = text End If If _ActiveWindow Is Nothing Then _ActiveWindow = spent Else If _ActiveWindow <> spent Then WinTracker.SwitchWindows(_ActiveWindow, spent) _ActiveWindow = spent Else _ActiveWindow.UpdateTime() End If End If End If End If End If End Sub Private Sub WinTracker_SoundAlert(ByVal sender As Object, ByVal e As EventArgs) My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Beep) End Sub End Class

Refactorizar según sea necesario.


Esto no es un problema de programación. Este es un problema de disciplina. Mis consejos:

  1. En primer lugar, no confíe en la aplicación para decirle qué hacer.
  2. En segundo lugar, la aplicación puede advertirle pero, en última instancia, puede deshabilitarla y desactivarla.
  3. En tercer lugar, mi sugerencia para su problema real, es decir, sin disciplina y una mala ética de trabajo, es poner una pequeña pancarta frente a su monitor con este texto "Enfóquese en su trabajo" o "Codifíquelo ahora" o " SO es malo "

Hay muchas herramientas para hacer esto, como RescueTime, etc. ... pero puedes usar algún código .net para obtener una aproximación bastante rápido.

Tendría que sondear la lista de procesos en un intervalo dado,

psList = Process.GetProcesses()

Puede usar la propiedad de hora de inicio y el título de la ventana principal para obtener información sobre cada proceso. No estoy seguro de cómo decir cuál está activo o no.



Recomiendo inscribirse en RescueTime

Las razones simples son:

  1. Quiere que hayas preguntado. (El seguimiento del uso de la aplicación, el uso del navegador, distingue entre navegación web productiva e improductiva, le avisa si pasa demasiado tiempo desplacándose, etc.)
  2. Es increíblemente rápido de configurar (para que no pierdas más tiempo).
  3. Es gratis (para todas las cosas para las que lo necesitas).

Escribí una publicación en el blog sobre lo útil que fue esta herramienta una vez. Lo resumiré aquí.

Este es un programa que instala en su computadora que rastrea qué programa se enfoca a lo largo del día, y luego algunos. Se mide el tiempo de uso de cada aplicación y, al usar un navegador, también se mide el tiempo que invierte en sitios web individuales. Con un panel de control que le permite clasificar cada programa y sitios web específicos (y agrupar a otros), y le permite determinar si ese programa o sitio web está asociado con trabajo productivo o trabajo que distrae (o neutral). De manera predeterminada, sabe que varios sitios web y programas como Facebook y MSN distraen, y otros como Microsoft Word e Research son productivos, pero usted es libre de configurar todo eso:

Como puede ver arriba, tengo sitios de redes sociales, mensajeros y sitios de correo electrónico personales que me indican que distraen o distraen mucho mi trabajo, y que los programas y sitios que uso para el trabajo están listados como productivos. Hay varios sitios web separados de la navegación, pero todos los demás sitios visitados están agrupados en "Firefox", que es principalmente el tiempo que dedico a la investigación en línea para diferentes lenguajes de programación y paradigmas.

El programa toma toda esta información recopilada sobre su tiempo dedicado a usar su computadora y luego le brinda una descripción general de cómo está gastando su tiempo a lo largo del día:

Esto demuestra que dedico hasta 15 minutos cada dos horas a hacer algo que no sea el trabajo. Cuando estoy trabajando, puedes ver que pasé 3 horas investigando en línea, aproximadamente 2.5 haciendo desarrollo de software, 45 minutos con correos electrónicos comerciales, etc.

Cuando tomé un descanso y decidí ser improductivo, pasé la mayor parte del tiempo en FFYa (25 minutos).

Esta herramienta será excelente para reflexionar sobre la cantidad de trabajo que realizó en una hora, día, semana o mes determinado. Diferentes escalas de tiempo le permiten comparar y visualizar los momentos en que se encuentra en una situación crítica, en comparación con los tiempos en los que adquiere el hábito de aflojar. Lo que es aún mejor, es que te permite establecer metas para ti mismo.

Decide por ti mismo cuánto de tu día estás dispuesto a gastar en aflojarte y cuánto trabajo quieres hacer, e incluso programa una notificación emergente que te dirá si te vas por mal camino en una cantidad de formas predeterminadas .

Una de mis partes favoritas, es el detector “AFK”. Si sale a almorzar, recibe una llamada telefónica, asiste a una reunión o se queda dormido en su escritorio, el programa detectará que ha estado inactivo y le dará un diálogo cuando regrese para clasificar lo que estaba haciendo. mientras estabas fuera Esto también es completamente personalizable, por lo que se determinará si su tiempo fuera de la computadora fue productivo o una distracción.

¿No confías en ti mismo para mantener el trabajo? Viene con una función de "Tiempo de enfoque". Aquí, puede decirle al programa cuánto tiempo desea abrocharse el cinturón y trabajar, y durante ese tiempo, le impedirá usar los sitios y las aplicaciones que ha enumerado como una distracción. Si realmente no confías en ti mismo, puedes hacerlo para que no puedas desbloquearlos hasta que se acabe el tiempo.

Solo lo he tenido durante un día, así que espero ver cómo mi productividad se compara día a día y semana a semana. Como era mi primer día con él, me abroché bastante, porque era consciente de lo que estaba haciendo, pero tengo curiosidad por ver a qué tipo de promedios se establece una vez que deje de prestarle atención. Sé que por lo general pierdo mucho más tiempo chateando con gente de Trillian y navegando en FFYa de lo que se ve hoy. Voy a publicar algunas fotos cuando se recoge un poco más demografía.

Ah, sí, la cuenta personal básica es gratuita y tiene la opción de vincularla directamente a su inicio de sesión en Google (lo que hice).

¡Disfruta obsesionándote con tus propios hábitos de trabajo!

Yo personalmente ya no lo uso. Me di cuenta de que para mí, solo podía motivar tanta productividad con este juego de superación personal y estadísticas. Una mejor solución a largo plazo fue encontrar trabajos que fueran más interesantes que los temas de tendencias más recientes en Skeptics Exchange.

Dicho esto, aquí estoy, respondiendo tu pregunta en el trabajo. :pag