Como monitorar alterações de foco?

Bem Às vezes eu estou digitando e muito raramente acontece que algo rouba o foco, eu li alguma solução (até mesmo um relógio VB), mas eles não se aplicam a mim. Existe algum 'manipulador' em toda a janela que lide com QUALQUER alteração de foco?

Não importa em qual idioma, C, C ++, VB.NET, C #, Qualquer coisa .NET ou janelas relacionadas, Lote, PoweShell, VBS Script ... Contanto que eu possa monitorar cada mudança de foco e registrá-la uma janela de arquivo / cmd / janela visual.

Algo como:

   void event_OnWindowsFocusChange(int OldProcID, int NewProcID);

Seria muito útil. Ou talvez já existam ferramentas para isso (o que não consigo encontrar?)

questionAnswers(2)

yourAnswerToTheQuestion