The .sch file consists of a small header followed by the events. Numbers are stored as ints (4 bytes each) and text is stored as a 4 byte length followed by the actual text. Strings are not null terminated. The one other type is a Windows 95 SYSTEMTIME structure (16 bytes long): typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME Numbers preceded with 0x are hex. All other numbers are decimal. File header ---------------- int Schedule file signature (0x08969eac) int File Version (0x5) int Total events stored in file (???) It's possible that this may be 0 if all events have been deleted. Each event has the following format: Event --------- int Event signature (0x7e5f892e) int Type 8 = Once on a specified date, 9 = daily int Enabled/Disabled 0 = disabled, 1 = enabled (This is ignored for now. All events are enabled) SYSTEMTIME Last This is the last time the event was triggered (to prevent repeats) SYSTEMTIME Start Next time to trigger. (For daily events, only the hours, minutes and seconds matter.) text group list to search sample.lst or other .lst file text search string Example: (.jpg OR .gif) text filter string Example: "Make money fast" if File Version > 1 int StartFrom Search New = 0, All = 1, Last nnn = 2, Last nnn New = 3 int StartFromVal Number of articles from last to search when using 'Search from Last' option. Example: 300 endif if File Version > 2 int StartFromLastNewVal Number of New articles to search with the Search Last nnn New option. endif if File Version > 3 int nDuration Time limit in seconds. 0 = no time limit. endif if File Version > 4 int nLoop 0 = End at last, 1 = Start over after last newsgroup int nHangUp 0 = Don't hang up, 1 = Hang Up when finished endif So the file format is: HEADER EVENT EVENT EVENT ...etc... Binary Boy keeps the schedule in memory and saves when it closes, so you'll need to update the schedule file only when Binary Boy is closed or it will be overwritten.