/*
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;
}