What's the best method to figure out when the computer is relatively idle on startup so my program can begin a specific task.
If you set your process priority via invoke GetCurrentProcess invoke SetPriorityClass ,eax,IDLE_PRIORITY_CLASS then you process does still get a timeslice, just it is serevry reduced when other applications are processing a new message from there message queue. Also you could get your app to 'sleep' when it first starts if you are getting it to start from the registry for a specified number of seconds, this allow for a bit of waiting while most other app finish there disk reading.
I see what you mean. What I would look for is a way to monitor CPU load. I've seen this done before in asm as well as commercial products like Norton System Doctor. Then when it drops below your preset threashold you let your app start it's work. It is true that some computers take seconds to load while others take minutes so a preprogrammed delay wouldn't be very efficient... See ya, Ben