В выпуске MSDN Magazine за 2001 год есть статья, посвященная Win32, которая, кажется, охватывает эту тему.
Если идея, которую они обсуждают в своей статье, соответствует вашим требованиям, я согласендумаю, что вы можете использовать идеи из этой статьи и использовать P / Invoke, чтобы сделать это в C #.