Handling Events in Own Process

Hi,
Is there any method by which we can handle all the events in our own
process such as when thread is created, process is created, DLL is loaded
and Unloaded. I want to debug my process from my process as attaching the
process to debugger results in killing of debuggee also which I do not want.

Thanks
Ashish