tags:

views:

52

answers:

1

Hello!

I want to automate service myshows.ru. People on it must manually put information about movies that watched.

I want to write program on c++, that get titles of movies in video players and put it to account on service.

What libraries i can use for this work?

P.S Sorry for my english

A: 

Use plain Winapi functions paired with some regex library. What you have to do is to enumerate windows in your system (get their HWND - handles), then take their captions and store them in std::strings. The next step would be checking if your caption matches some regex (this could be boost::regex or boost::xpressive, for example) - so you would have to maintain a regex database for every possible multimedia player caption.

There is a more complicated approach that is harder to code, but which is more efficient. The number of players that are widely used isn't very big, therefore you can enumerate processes in your system using Winapi call and take only players (like mpc.exe or winamp.exe). Then you can easily retrieve the active application window (from it's process handle) and only then invoke your regex search. This is actually much better, because you would only have to store process name - caption regex values in your database.

After that (when you've parsed out the name of currently opened file), it's all up to you - I mean storing it at the server, etc, etc.


Используй Winapi и какую-нибудь библиотеку для регексов. Тебе нужно пробежаться по всем хэндлам окон (HWND) и у каждого взять заголовок, записать его в std::string. После этого используешь регекс, например boost::regex / boost::xpressive для того чтобы проверить, является ли окно мультимедийным плеером. С помощью регекса также можно вытащить заголовок фильма, который воспроизводится в данный момент.

Более сложный, но более эффективный вариант - просматривать только список процессов пользователя и определять какие из плееров в данный момент запущены. После того, как плеер найден, все тривиально - заголовок файла можно вытащить по регексу конкретно для данного плеера. В таком случае тебе придется хранить только базу "имя процесса - регекс заголовка", что намного проще.

Что делать после этого и как парсить и куда отправлять полученный результат - решать в общем то тебе.

Kotti
what? was this meant for stackoverflow.ru?
mizipzor
haven't heard about [DRY](http://en.wikipedia.org/wiki/Don%27t_repeat_yourself)? :-)
Nick D
=D Well, I actually thought that if the person who asked this is bad in english, it would be ok if I translate everything, especially if I can...
Kotti
Big thx to you! Now I know what should I do. Thanks for translation to russian, but I have problems only with english grammar.