Using programming you need to create a waitable timer and then call SetWaitableTimer.
This example in c++ sets one 10 minutes from the current time but you could create one for 24 hours to get the schedule once a day.
sTimeRecord = sTimeCurrent;
sTimeRecord.wMinute += 10; //Set the timer to go off 1 minute from current time
//Convert to a FILETIME
//Convert from local time to UTC time since the system works on UTC internally.
//Put time into a LARGE_INTEGER structure for the SetWaitableTimer function
liDueTime.HighPart = fTime.dwHighDateTime;
liDueTime.LowPart = fTime.dwLowDateTime;
//Create the WaitableTimer
hTimer = CreateWaitableTimer(NULL,TRUE,NULL);
//Set the timer with the required time
//Set the last parameter to true to wake up the computer if asleep
SetWaitableTimer(hTimer,&liDueTime, 0, NULL, NULL, TRUE);
Second method is actually alot easier: Use the windows scheduler to schedule Alans Process_all batch file. Set it to run once a day at your desired time. And make sure that advanced properties Wake the Computer to run this task is enabled.
If MyHD can wake your machine -- either of these two methods should work. Note some machines can wake from suspend and not Hibernate, some can work for both, and some for neither. It all depends on bios and APM/ACPI capabilities, your motherboard, and your ATX power supply version.