Очень хороший пример того как создаются подобные программы. Вместе с проектом есть некоторое количество уже готовых решений.