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
для того чтобы проверить, является ли окно мультимедийным плеером. С помощью регекса также можно вытащить заголовок фильма, который воспроизводится в данный момент.
Более сложный, но более эффективный вариант - просматривать только список процессов пользователя и определять какие из плееров в данный момент запущены. После того, как плеер найден, все тривиально - заголовок файла можно вытащить по регексу конкретно для данного плеера. В таком случае тебе придется хранить только базу "имя процесса - регекс заголовка", что намного проще.
Что делать после этого и как парсить и куда отправлять полученный результат - решать в общем то тебе.