I have some SDI windows forms application. This application has main form, a huge of module forms. At the same time I can view one module form and many it's sub modal forms. So, every module form is responsible for some functionality. Users are noticed that they switch between some module forms many times per day. I have to collect this information and extract a common user's behavior. Are there any methods, tricks to get this information instead of manual investigation (shadowing)?

I can write any code to implement this.


I have decided to add some proxies to start logging their actions:

  • list view: select item
  • grid view: select item, other actions (filter, sort, edit)
  • button: action (add, edit, reorder, import, export, reset, save, undo, exit...)
  • look up text box: input text (with search button click)

I have decided to collect these data: user, location, action source, action base type, on date, action data

User1 | form1 | button1 | button action | 10/28/2010 10:00 | Edit

User1 | form1 | list1 | list view select action | 10/28/2010 10:03 | Items

User1 | form2 | grid1 | grid view select action | 10/28/2010 10:03 | 100654

Have I forgotten something?

  • You've mentioned "module form" and "modal form" - is this intentional? (re: not a native English speaker)
    – Rahul
    Sep 28, 2010 at 6:25
  • @Rahul modal form (show modal) is a programming term. modal form is a form that should be closed before user can iterate with other one. module forms is a logical (functional) separation of forms (I guess :)).
    – igor
    Sep 28, 2010 at 9:43
  • Thanks, I know the difference, was just checking if it was intentional :)
    – Rahul
    Sep 28, 2010 at 10:02
  • good question but the answers (and the wording of the question itself) aren't quite good yet Dec 21, 2011 at 12:41

3 Answers 3


We're looking into implementing something similar in an app that we're developing, though for different purposes (we want to be able to "replay" the user's actions for testing and robustness purposes). In our situation, we are enhancing the undo/redo mechanism in the software to make it save scripts of the user's actions.

If you don't have an undo ability, they you will need some sort of journaling, but it seems to me that this becomes more of a programming question than a UI one, no?

  • No, I am looking for a conception. Using Command pattern is a good option. Of course, I can add some lightweight logger. But I don't know how to extract of user's action chains, how to process collected data.
    – igor
    Sep 27, 2010 at 16:27
  • Good point, I have updated my question.
    – igor
    Sep 28, 2010 at 14:13

I have a bad idea, but I'll share it anyway as it might trigger better ones :)

If you were implementing a website, I'd say you could use Google Analytics or other software that gives you insight about your user actions (for example ClickTale).

Since I understand it's a desktop application, perhaps you could emulate using such web services, by associating certain modules and forms with specific urls.

Naturally you have to think about performance, letting your users know about the logging, etc., but if you can make it work, you might get the tools such services provide very easily.

What do you think?

  • 2
    It would be far from a bad thing if the app's architecture were definable in restful syntax :)
    – Rahul
    Sep 28, 2010 at 6:28
  • Application is working and it seams to be difficult to change its architecture. :). I have updated my question.
    – igor
    Sep 28, 2010 at 13:48
  • 1
    As it's SDI (that is, Win32 app) you'd need to embed an IE control with a web page that has the Google Analytics tracking javascript code on it. That's quite a lot of work really.
    – Julian H
    Sep 28, 2010 at 14:45

If there are certain UI widgets you are interested in, such as dialogs, forms, etc, could you not just add some logging to their various events? For example, if the user switches from one tab to another tab frequently, and you want to measure this, you could count the number of times the tabs are hidden or shown. Similarly you could track button clicks, keyboard shortcut use, etc.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.