/* Name: get_winamp_title 2.0 Author: cLx - http://clx.freeshell.org/ Date: 08/06/05 14:44 Description: I did this program to retrieve the name of the song which is played in winamp in a php script. I know, the method I used is a bit rough, but it works perfectly. */ #include <windows.h> #include <stdio.h> #include <string.h> #define WINAMP_CLASS "Winamp v1.x" #define MAXLENGTH 1000 int Remove(char *buffer, char *tokill); int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { /* Déclarations de variables et de pointeurs */ DWORD pid; HANDLE hProcess; char buffer[MAXLENGTH + 1] = ""; char *pbuf; /* Puis on essaye de trouver le HWND de la fenetre de winamp, à l'aide du nom de la classe. Si on ne trouve pas, on retournera un message d'erreur et on quittera. */ HWND fenetre = FindWindow(WINAMP_CLASS, NULL); if (!fenetre) { printf("The MP3 player not running."); return 1; } /* Si on a le HWND, on va récupérer le titre de la fenetre et ensuite trouver coller un pointeur sur la localisation après le premier espace, s'il est pas trop loin. */ GetWindowText((HWND)fenetre, buffer, MAXLENGTH); pbuf = strchr(buffer, 32) + 1; if ((!pbuf) || (pbuf > buffer + 6)) { pbuf = buffer; } /* On peut supprimer la mention " - Winamp" ainsi que quelques autres au passage */ Remove(pbuf, " (PulsRadio - www.pulsradio.com)"); Remove(pbuf, " - Winamp"); /* Puis, on sort ça sur la sortie standard, qui sera redirigée par le script d'au dessus, et puis on quitte */ printf("%s", pbuf); return 0; } /* cLx: Remove v1.0 : Cette fonction supprime toute les occurences d'une chaine dans une autre, et retourne le nombre de suppressions. J'ai rien trouvé de plus simple, mais ça à été marrant de programmer ça ! */ int Remove(char *buffer, char *tokill){ char *ptr; unsigned int count = 0; while (ptr = strstr(buffer, tokill)){ if (ptr) { int lenA = strlen(tokill); int lenB = strlen(buffer); char *ptr2 = ptr + lenA; while(*ptr2) { *ptr = *ptr2; ptr++; ptr2++; } *ptr = 0; count++; } } return count; }