elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... 526
341  Comunicaciones / Mensajería / Re: No puedo fusionar MSN con Skype en: 3 Diciembre 2012, 20:23 pm
Yo no tuve problemas, me conecté a Skype con mi cuenta de messenger, me pidió asociar mi cuenta de Skype, y luego de eso simplemente debo de ingresar a Skype con mis credenciales de messenger y voilá, me aparecen mis contactos de ambas cuentas :P

Saludos
342  Programación / .NET (C#, VB.NET, ASP) / Re: WinWatcher (WinForms Application Source) en: 3 Diciembre 2012, 02:59 am
Ahora tengo una versión recortada (lite), 0% configurable y con una implementación bastante más rústica pero que cumple con lo que necesito :)
Código:
MainForm => 00:00:02
Nuevos temas no leídos - Google Chrome => 00:00:12
Twitter - Google Chrome => 00:00:01
Google Reader (193) - Google Chrome => 00:00:01
WinWatcherLite (Running) - Microsoft Visual Studio => 00:00:02

Y cuando digo que está recortada, realmente lo está :P
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. using System.Diagnostics;
  6. using System.IO;
  7. using System.Runtime.InteropServices;
  8. using System.Timers;
  9.  
  10. namespace WinWatcherLite
  11. {
  12.    public partial class MainForm : Form
  13.    {
  14.        string startTime;
  15.        string lastWindow;
  16.        string logFolder;
  17.        Dictionary<string, Stopwatch> windowLog;
  18.  
  19.        public MainForm()
  20.        {
  21.            InitializeComponent();
  22.            InitializeCustomObjects();
  23.        }
  24.  
  25.        private void InitializeCustomObjects()
  26.        {
  27.            startTime = DateTime.Now.ToString("ddMMyyyy_hhmmss");
  28.            lastWindow = string.Empty;
  29.            logFolder = Path.GetDirectoryName(Application.ExecutablePath);
  30.            windowLog = new Dictionary<string, Stopwatch>();
  31.  
  32.            System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
  33.            timer.Interval = 500;
  34.            timer.Tick += new EventHandler(timer_Tick);
  35.            timer.Start();
  36.  
  37.            System.Timers.Timer t = new System.Timers.Timer(60000);
  38.            t.Elapsed += new ElapsedEventHandler(OnTimedEvent);
  39.            t.Start();
  40.        }
  41.  
  42.        #region user32.dll
  43.  
  44.        [DllImport("user32.dll")]
  45.        public static extern IntPtr GetForegroundWindow();
  46.  
  47.        [DllImport("user32.dll")]
  48.        public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpWindowText, int nMaxCount);
  49.  
  50.        #endregion
  51.  
  52.        public void GetActiveWindow()
  53.        {
  54.            IntPtr win = GetForegroundWindow();
  55.            StringBuilder sb = new StringBuilder(255);
  56.            GetWindowText(win, sb, 256);
  57.  
  58.            string currentWindow = sb.ToString();
  59.            if (lastWindow != currentWindow)
  60.            {
  61.                if (windowLog.ContainsKey(lastWindow))
  62.                    windowLog[lastWindow].Stop();
  63.  
  64.                if (windowLog.ContainsKey(currentWindow))
  65.                    windowLog[currentWindow].Start();
  66.                else
  67.                {
  68.                    Stopwatch sw = new Stopwatch();
  69.                    sw.Start();
  70.                    windowLog.Add(currentWindow, sw);
  71.                }
  72.  
  73.                lastWindow = currentWindow;
  74.            }
  75.        }
  76.  
  77.        private void OnTimedEvent(object sender, ElapsedEventArgs e)
  78.        {
  79.            WriteLog();
  80.        }
  81.  
  82.        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
  83.        {
  84.            WriteLog();
  85.        }
  86.  
  87.        private void timer_Tick(object sender, EventArgs e)
  88.        {
  89.            GetActiveWindow();
  90.        }
  91.  
  92.        private void WriteLog()
  93.        {
  94.            string filePath = Path.Combine(logFolder, string.Format("WindowLog_{0}.txt", startTime));
  95.            StringBuilder sb = new StringBuilder();
  96.  
  97.            foreach (KeyValuePair<string, Stopwatch> registry in windowLog)
  98.            {
  99.                TimeSpan ts = registry.Value.Elapsed;
  100.                string elapsedTime = string.Format("{0:00}:{1:00}:{2:00}", ts.Hours, ts.Minutes, ts.Seconds);
  101.                sb.AppendLine(string.Format("{0} => {1}", registry.Key, elapsedTime));
  102.            }
  103.  
  104.            using (StreamWriter sw = new StreamWriter(filePath))
  105.                sw.Write(sb.ToString());
  106.        }
  107.    }
  108. }
  109.  

Saludos
343  Programación / .NET (C#, VB.NET, ASP) / WinWatcher (WinForms Application Source) en: 2 Diciembre 2012, 00:43 am
Buenas,

Entre ayer y hoy se me dió por crear una pequeña tool que ni bien iniciada se minimiza al trayicon, y luego va "cronometrando" el tiempo que se pasa en una ventana. El registro lo guarda o bien en formato de texto (esta "hardcodeado" el formato), o bien en XML.

Para que se hagan una idea, el XML es más o menos así;

Código
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ArrayOfWatchedWindow xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3.  <WatchedWindow>
  4.    <Executable>c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe</Executable>
  5.    <ProcessId>5492</ProcessId>
  6.    <WindowText>WinWatcher (Running) - Microsoft Visual Studio</WindowText>
  7.    <ElapsedTime>00:00:01</ElapsedTime>
  8.  </WatchedWindow>
  9.  <WatchedWindow>
  10.    <Executable>C:\Program Files (x86)\Google\Chrome\Application\chrome.exe</Executable>
  11.    <ProcessId>6048</ProcessId>
  12.    <WindowText>(37) Twitter - Google Chrome</WindowText>
  13.    <ElapsedTime>00:00:16</ElapsedTime>
  14.  </WatchedWindow>
  15.  <WatchedWindow>
  16.    <Executable>C:\Program Files (x86)\Google\Chrome\Application\chrome.exe</Executable>
  17.    <ProcessId>6048</ProcessId>
  18.    <WindowText>Foro de elhacker.net - Índice - Google Chrome</WindowText>
  19.    <ElapsedTime>00:01:13</ElapsedTime>
  20.  </WatchedWindow>
  21.  <WatchedWindow>
  22.    <Executable>C:\Program Files (x86)\Windows Media Player\wmplayer.exe</Executable>
  23.    <ProcessId>6276</ProcessId>
  24.    <WindowText>Reproductor de Windows Media</WindowText>
  25.    <ElapsedTime>00:00:03</ElapsedTime>
  26.  </WatchedWindow>
  27. </ArrayOfWatchedWindow>

La jerarquía en base a la cual se cronometran las ventanas es justamente la que se ve en el XML; Ejecutable > PID de proceso > Texto de ventana

Existen dos momentos en los que se vuelcan los datos a archivo;
  • Cada 15 minutos
  • Al cerrar la aplicación

Con click derecho en el icono del trayicon se puede cambiar la configuración y ver el log actual sin necesidad del volcado :)

Descarga de código fuente: http://bit.ly/WinWatcher (C# Visual Express 2010)

Le quería dar un uso personal, pero tal vez luego le haga alguna mejora y/o refactoring de código, porque se por ejemplo que tiene un bug conocido, si en un navegador se cambia de pestaña no se refleja hasta bien no se minimize y vuelva a restaurar la ventana, y esto es porque preferí hookear el cambio de ventana en lugar de hacer polling con un timer, así que al cambiar de tab no se entera :-X

Cualquier consulta y/o comentario ya saben

Saludos
344  Informática / Software / Re: Pregunta sobre VirtualBox en: 30 Noviembre 2012, 17:37 pm
Prueba la máquina virtual con la cantidad de memoria RAM que tienes pensado configurar cuando la cambies al portátil, con eso te darás cuenta que tan fluido va (aunque también influya el procesador)

Saludos
345  Foros Generales / Noticias / Re: Microsoft afirma que 4 de cada 5 usuarios de Gmail cambiarían a Outlook.com en: 29 Noviembre 2012, 14:53 pm
Acabo de entrar a outlook.com y me notificó de que mi cuenta de hotmail se había actualizado :P ... lo mismo con diferentes estilos? :-X

Saludos
346  Programación / .NET (C#, VB.NET, ASP) / Re: Quien me ayuda a Hacer un reproductor con open GL en c# ? en: 29 Noviembre 2012, 12:46 pm
Filter de OpenFileDialog
http://msdn.microsoft.com/en-us/library/system.windows.controls.openfiledialog.filter(v=vs.95).aspx

Saludos
347  Programación / .NET (C#, VB.NET, ASP) / Re: Como puedo interrumpir el thread en un For while? en: 26 Noviembre 2012, 14:52 pm
El BackgroundWorker no tiene un método específico para pausar y resumir el proceso, pero puedes crear tu propia clase y agregarle los dos métodos que le faltan :P
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/48305e65-cea6-4a88-8818-c122e152daa8/

Saludos
348  Sistemas Operativos / Windows / Re: Todo lo que necesitas saber para instalar Windows 8 en: 26 Noviembre 2012, 14:11 pm
Pues yo no lo he visto, en serio.  :huh: Aún así ya me lo volveré a mirar. estuve buscando el paso para omitirlo y al final se acabó vinculando hasta mi número de móvil, que ya tenía vienculado al hotmail.

Me acabo de topar con esto :P
http://geeks.ms/blogs/amazzite/archive/2012/11/25/win0021-cambiando-inicio-de-sesi-243-n-local-a-cuenta-microsoft-en-windows-8.aspx

Saludos
349  Programación / .NET (C#, VB.NET, ASP) / Re: [Encuesta] ¿ Que versión de Visual Studio usas ? en: 26 Noviembre 2012, 13:42 pm
En lo laboral 2008/2010 (depende del proyecto), en lo personal 2010 :P

Saludos
350  Programación / .NET (C#, VB.NET, ASP) / Re: ¿Cómo evitar el ingreso de caracter en variable entera? en: 26 Noviembre 2012, 13:41 pm
Tienes muy pocas opciones en tu menú, para que utilizar un long?, y no utilices Parse sino TryParse para validar el input.

Saludos
Páginas: 1 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... 526
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines