IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   программист-энтузиаст для win32 (http://www.imho.ws/showthread.php?t=75320)

Sly_G 08.12.2004 15:54

программист-энтузиаст для win32
 
Если у кого-то есть желание программить под win32, и свободное время для этого, могу предложить тему Ж)

Мне нужна простенькая программка следующего толка: висит в трее, при нажатии на ее иконку правой кнопкой выдает контестное меню - первый пункт "сохранить", второй "выход".
Второй пункт понятный, а первый вот что делает: берет заголовок окна плеера Apollo (то бишь, обычно там artist - title висит, исполнитель композиции и ее название), и добавляет его в текстовый файлик.

Смысл - составить список любимых песен. Как только песня выскакивает нужная, вызываешь эту програмуху, и она сохраняет в файл. Дешево и сердито.

Вот если кто-то такую тулзу сделает, буду очень благодарен.

albo 08.12.2004 19:13

Могу сделать тулзу, висящую в памяти, отлавливающая заголовок и записывающую его в файл.

ryfm 09.12.2004 08:48

Без проблем... Сделать?

Sly_G 09.12.2004 14:16

Цитата:

Сообщение от albo
Могу сделать тулзу, висящую в памяти, отлавливающая заголовок и записывающую его в файл.

Классно, только не всякий заголовок, а именно что по выбору. Выбор как-то надо сделать. Горячей клавишей (но это я не особо люблю) или еще как - например, как я предложил, через tray

Цитата:

Сообщение от ryfm
Без проблем... Сделать?

Да, я был бы весьма признателен Ж)

Вроде бы задачку я описал. Единственный вопрос, в какой файл сохранять заголовки - проще всего в файл в том же каталоге, откуда программа запускается, с именем например apollo.txt

Аполло можно взять тут:
http://apollo.caphost.biz/Apollo37zh.exe

Исходники программы semagic, которая умеет заголовок аполло ловить, тут:
http://sema.net.ru/semagic/Semagic_src.zip

Да, забыл что упомянуть - не знаю, имеет ли это значение для выкусывания информации или нет, но apollo у меня в виде mini window используется. У него в тулбаре это вторая справа кнопка.

albo 09.12.2004 17:03

Sly_G
Можно сделать через текстовый конфиг. Я просто не умею значки в трее делать.

ryfm 09.12.2004 17:22

Вложений: 1
Написал, куда кинуть....

А вот и прога

За глюки просьба не пинать писалось в свободное от работы время...

Sly_G 11.12.2004 00:04

А как она работает?
Я ее запускаю - она молча закрывается

ryfm 11.12.2004 09:30

Вложений: 1
Возможно у тебя нет библиотек mfc7... На экран хоть чтонибудь выдает?

Компилировать в Microsoft VisualC.Net 2003

alexey_ma 11.12.2004 19:17

2ryfm
Торопишся. Есть ошибочка.
Код:

void CSaveSongTitleDlg::OnTimer(UINT nIDEvent)
{
        // TODO: Add your message handler code here and/or call default
        CWnd *cWnd = FindWindow("Apollo - Main Window", NULL);

        if (cWnd == NULL)return

        cWnd->GetWindowText(st);
        this->SetWindowText(st);

        CDialog::OnTimer(nIDEvent);
}

Поставь точку с зпятой после if (cWnd == NULL)return , то код выполняется так:
if (cWnd == NULL)
return cWnd->GetWindowText(st);
При ненайденом окне завалится в "Access violation ...".

chesnok 11.12.2004 20:17

Вообще не понимаю, зачем в такой задаче (маленькая и быстрая программа) использовать MFC???

alexey_ma 11.12.2004 20:28

Да ладно, не драконь парня. Он молодец что взялся. Пусть пишет как ему удобно.

chesnok 11.12.2004 23:02

Цитата:

Сообщение от alexey_ma
Да ладно, не драконь парня. Он молодец что взялся. Пусть пишет как ему удобно.

Написал сабж на винапи.
Here
Не требует инсталляции, занимает 31кб (и это не предел), в оперативке занимает 1600кб (по сведениям Task Manager'а).
Обрезает номер песни и доп инфу (т.е. в лог пишется только Artist - Song).

ryfm 12.12.2004 10:07

Вложений: 2
Писалось в свободное от работы время, просто чтобы вспомнить Visual C++, т.к. сейчас работаю с SQL и Шарпом...
alexey_ma да уж прикольная ошибочка...
chesnok можно было написать и на asm с вызовом функций API, но ведь в данном случае это не принципиально.

Может посоревнуемся? :)
Поправленное, есть еще глюки, нет проверки на существование файла. Блин, суббота, воскресенье, завтра понедельник, нормальные люди отдыхают, а я последние два месяца все выходные и праздники провожу на работе...

chesnok 12.12.2004 16:41

Зажал сабж ещё больше, теперь работает ещё быстрее, однако пришлось засунуть ресурсы (иконка от Apollo) в отдельную dll. exe + dll вместе занимают 17kb :) :) лежит там же

Sly_G 15.12.2004 00:21

Цитата:

Сообщение от chesnok
Зажал сабж ещё больше, теперь работает ещё быстрее, однако пришлось засунуть ресурсы (иконка от Apollo) в отдельную dll. exe + dll вместе занимают 17kb :) :) лежит там же

Проблемса Ж(

Прога запускается, в трее висит. Open log работает.

А вот при попытке Save title - "apwatch.exe has generated errors and will be closed by Windows" :(((

Цитата:

Сообщение от ryfm
Возможно у тебя нет библиотек mfc7... На экран хоть чтонибудь выдает?

Компилировать в Microsoft VisualC.Net 2003

Не выдает вообще ничего - ни в консоль, ни в экран.
Библиотек таких не ставил, наверно нет их.

Цитата:

Сообщение от chesnok
Зажал сабж ещё больше, теперь работает ещё быстрее, однако пришлось засунуть ресурсы (иконка от Apollo) в отдельную dll. exe + dll вместе занимают 17kb :) :) лежит там же

Может быть из-за этого глюк - у меня аполло используется в виде мини-окна. Это вторая справа кнопка на тулбаре.
И в этом случае название окна его что-то вроде ApolloMiniWindow, это я узнал от HotKeyboard.
Хотя я попробовал и с открытым окном - все равно падает твоя программа.
:confused:
Кроме того, заголовок задан как %LEADARTIST% - %TITLE% (там по умолчанию как-то сложнее).

ryfm 15.12.2004 08:26

Sly_G у тебя винда какая 98 или XP?

chesnok 15.12.2004 10:51

Ну если винда 98, то всё понятно, я MSLU не подключал, думал, что 98й ни у кого уже и нет... А если ХР, то проблема скорее всего в обработке строки Apollo (т.к. программа думает, что эта строка в формате номер исполнитель - композиция - время - (общ.время @ битрейт))

MSLU - Microsoft Layer For Unicode, нужен т.к. строку с Apollo я считываю в юникоде, чтоб не геморроиться с названиями в разных локалях.

Sly_G 15.12.2004 13:34

Цитата:

Сообщение от ryfm
Sly_G у тебя винда какая 98 или XP?

Не угадал, win2000

Цитата:

Сообщение от chesnok
Ну если винда 98, то всё понятно, я MSLU не подключал, думал, что 98й ни у кого уже и нет... А если ХР, то проблема скорее всего в обработке строки Apollo (т.к. программа думает, что эта строка в формате номер исполнитель - композиция - время - (общ.время @ битрейт))

MSLU - Microsoft Layer For Unicode, нужен т.к. строку с Apollo я считываю в юникоде, чтоб не геморроиться с названиями в разных локалях.

У меня win2000 sp4.

А разве так критично, как строчка выглядит? Нельзя просто всю строку целиком брать?

У меня она такая: "исполнитель - композиция". Если нельзя целиком брать всю, то просьба переделать програмуху под такой вид строки.

Спасибо!

chesnok 15.12.2004 15:16

Подправил программу, теперь она ничего не делает со строкой, а просто записывает её в файл. Лежит там же, линк в предыдущих постах. Сейчас занимаюь тем, чтобы программа строку почти любого вида приводила к Исполнитель - Композиция.

Sly_G 20.12.2004 17:32

работает!
 
chesnok - Спасибо огромное Ж)

Заработала!

Sly_G 12.01.2005 14:38

А насколько сложно сделать на основе этой проги плугин для Samurize (samurize.com)? С целью просто отдавать название композиции.

chesnok 12.01.2005 16:18

А зачем изобретать велосипед? Скорее всего, такой плаг уже есть...


Часовой пояс GMT +4, время: 10:53.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.