Alex Rivera | Logout

Are there any tools/libraries (.Net/WPF) to measure and store UI navigation data for analysis?

Asked 2010-11-04T00:04:59.810
19

I want to measure and analyze user movements and gestures in the UI in order to refine the application user experience. I had imagined that feature-tracking libraries (like EQATEC or Preemptive's Runtime Intelligence) would allow this. However, this does not appear to be the case.

Ideally, I'd like to be able to instrument a UI and then capture mouse and keyboard navigation gestures to display via a heat-map.

My searches have come up empty. Does anything OSS or commercial exist here?

Edit
Report

2 Answers

7
  1. Download Sources Version 2 from this article on code project
  2. Open the solution or only Gma.UserActivityMonitor project and blindly convert it to .NET 4.0
  3. In HookManager.Callbacks.cs file make following changes.

    1. Add using System.Diagnostics;
    2. Replace

      s_MouseHookHandle = SetWindowsHookEx(
          WH_MOUSE_LL,
          s_MouseDelegate,
          Marshal.GetHINSTANCE(
              Assembly.GetExecutingAssembly().GetModules()[0]),
          0);
      

      With

      using (Process curProcess = Process.GetCurrentProcess())
      using (ProcessModule curModule = curProcess.MainModule)
      {
          s_MouseHookHandle = SetWindowsHookEx(
              WH_MOUSE_LL,
              s_MouseDelegate,
             GetModuleHandle(curModule.ModuleName), 0);
      }
      
    3. Replace

      s_KeyboardHookHandle = SetWindowsHookEx(
          WH_KEYBOARD_LL,
          s_KeyboardDelegate,
          Marshal.GetHINSTANCE(
              Assembly.GetExecutingAssembly().GetModules()[0]),
          0);
      

      With

      using (Process curProcess = Process.GetCurrentProcess())
      using (ProcessModule curModule = curProcess.MainModule)
      {
          s_KeyboardHookHandle = SetWindowsHookEx(
          WH_KEYBOARD_LL,
          s_KeyboardDelegate, 
          GetModuleHandle(curModule.ModuleName), 0);
      }
      
  4. In HookManager.Windows.cs add following two lines anywhere in HookManager class's definition.

    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    public static extern IntPtr GetModuleHandle(string lpModuleName);
    
  5. Now you should be able to build this and keep it aside. Now starts the WPF part.

answered 2011-03-05T10:23:23.770
1

Try http://iographica.com it creates lines where the mouse cursor moved, and circles where the mouse cursor stopped, the bigger the circle, the longer it was stopped there.

answered 2011-03-03T22:33:07.750

Your Answer