Please see my comment to the question where I explain why you should not expect much help on this particular topic. But this is just because you don't really need help in a particular topic. Asking for such help does not make a lot of sense. You know why? Because you are missing one of the main features of programming (which is similar to a main trait of the science): you learn general fundamental technologies, not particular application topics, but that helps you to engineer software in many different application fields.
So, if you might need some help, you could be some help in software engineering: approached, platform, languages and techniques. The steps will be: design data structure, the library and the applications, and implement all that.
There are two approaches you could try to consider. First would be making your own CLR-only framework; and another one would be using some native-code framework (try to find one starting from
http://en.wikipedia.org/wiki/XLIFF[
^]) and using it through P/Invoke:
http://en.wikipedia.org/wiki/P/Invoke[
^],
http://msdn.microsoft.com/en-us/library/Aa712982[
^].
This CodeProject can also be useful:
Essential P/Invoke[
^].
One alternative to P/Invoke is to use C++/CLI mixed-mode (managed+unmanaged) project. This project could build a DLL required by the global hooks, but it can contain some managed wrapper CLI code, so, from the standpoint of your .NET application, you can use it as a regular .NET assembly, that is, reference it. Please see:
http://en.wikipedia.org/wiki/C%2B%2B/CLI[
^],
http://www.ecma-international.org/publications/standards/Ecma-372.htm[
^],
http://msdn.microsoft.com/en-us/library/xey702bw.aspx[
^],
http://msdn.microsoft.com/en-us/library/3bstk3k5[
^].
But we don't know your current weaknesses. Except one: probably, you are afraid to get to work independently. I did not find any .NET LIFF frameworks, so you probably also don't know any. And you don't have enough bravery to start your own without some external help. I explained above why getting a lot of help is not likely in your case. Now, I can try to offer you a reason why it could be the best for you to get to work, if you have enough or almost enough of knowledge and you are really interested in the result: you can get valuable experience. Besides, you will advance you into a position where you would be able to get effective help from CodeProject (or other) experts, because you would be able to show some problematic code.
There is one more important reason why such experience would help you to get more help: you would be able, after breaking some teeth against the problems, to understand the advice much better.
Just think about it.
—SA