?
Hallo MFK,
danke für deine Hilfe. Habe jetzt 'string' verwendet und diesen vor dem System-Aufruf in das erforderliche 'char *' umgewandelt. Bei mir klappt alles. Ich hoffe nur, dass ich bei 'string' nicht auch Speicher reservieren sollte.
Hier ist mein akutalisiertes Programm. Ein kleiner Tipp: Wer es auf seinem Rechner komfortabel verwenden möchte, kann Playlist-Files (m3u, pls) standardmäßig mit diesem Programm öffnen lassen.
Eintrag z. B.: C:\Pfad[dieses Programm] "%1"
#include <iostream.h>
#include <windows.h>
#include <string>
#include <frontend.h>
/* Diese Programm wechselt die WinAmp-Playlist, ohne das aktuelle
Lied abzubrechen. */
/* Aufruf des Programms mit zwei Parametern: Der erste bestimmt die
Datei (z. B. Playlist), die abgespielt werden soll, der zweite
den Pfad zur "winamp.exe" (Standard: "C:\Programme\Winamp\"). */
/* Geöffnetes WinAmp-Fenster suchen - nur bis Version 2.x! */
HWND hwndWinamp = FindWindow("Winamp v1.x",NULL);
int main(int paramcount, char* paramstr [])
{
string stri1="";
string stri2="winamp.exe ";
string stri3="\/ADD ";
string stri4="";
/* Pfad zu WinAmp bestimmen:
Wenn kein zweiter Parameter angegeben ist, wird standardmäßig
C:\Programme\Winamp\ verwendet. */
if (paramcount>2) stri1=paramstr[2];
else stri1="C:\\Programme\\Winamp\\";
/* Gewünschte Datei (beliebige WinAmp-Datei) bestimmen (wird als
erster Parameter übergeben). Wird kein Parameter angegeben,
passiert erstmal nichts. */
if (paramcount>1) stri4=paramstr[1];
stri1.append(stri2);
/* Ist kein WinAmp-Fenster geöffnet, so lautet 'stri1' beispielsweise:
"C:\Programme\Winamp\winamp.exe C:\Pfadname\playlist.m3u" */
if (FindWindow("Winamp v1.x",NULL)==NULL){
stri1.append(stri4);}
else{
/* WinAmp-Status prüfen. Wenn gerade nicht abgespielt wird (ret!=1),
lautet 'stri1' wie oben. Ansonsten wird zuerst die WinAmp-interne
Playlist gelöscht. 'stri1' lautet dann beispielsweise:
"C:\Programme\Winamp\winamp.exe /ADD C:\Pfadname\playlist.m3u" */
int ret=SendMessage(hwndWinamp,WM_USER, 0, 104);
if (ret!=1){
stri1.append(stri4);}
else{
stri1.append(stri3);
stri1.append(stri4);
/* Löschen der internen Playlist (nur wenn mindestens ein Parameter
angegeben wurde) */
if (paramcount>1) SendMessage(hwndWinamp,WM_USER, 0, 101);}
}
const char *aufruf=stri1.c_str();
/* WinAmp wird mit den in 'stri1'angegebenen Optionen aufgerufen.
Desweiteren werden die "Shuffle"- und die "Repeat"-Funktion
eingeschaltet. */
cout << aufruf;
system(aufruf);
SendMessage(hwndWinamp,WM_WA_IPC,1,IPC_SET_SHUFFLE);
SendMessage(hwndWinamp,WM_WA_IPC,1,IPC_SET_REPEAT);
return (0);
}
Gruß, winamper.