0% found this document useful (0 votes)
658 views

WinAmp Controller (Kontroller) Source Code

This document contains code for a console application that allows controlling Winamp media player functions like play, pause, next track etc through commands in the console. It uses Win32 API functions to find and send messages to the Winamp window to trigger actions. Functions are defined to map commands to appropriate Winamp control codes. The main method runs a loop taking user input and passing it to an Engine function which checks the command and calls the relevant control function.

Uploaded by

WorkOfArt
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
658 views

WinAmp Controller (Kontroller) Source Code

This document contains code for a console application that allows controlling Winamp media player functions like play, pause, next track etc through commands in the console. It uses Win32 API functions to find and send messages to the Winamp window to trigger actions. Functions are defined to map commands to appropriate Winamp control codes. The main method runs a loop taking user input and passing it to an Engine function which checks the command and calls the relevant control function.

Uploaded by

WorkOfArt
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 9

//by K.R. http://jurnal-idei-sentimente-conceptii.blogspot.

com/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
using System.Timers;
using WinampFrontEndLib;

namespace ConsoleApplication1
{
class Program
{

[DllImport("user32.dll", CharSet = CharSet.Auto)]

public static extern IntPtr FindWindow(

[MarshalAs(UnmanagedType.LPTStr)] string lpClassName,

[MarshalAs(UnmanagedType.LPTStr)] string lpWindowName

);

[DllImport("user32.dll", CharSet = CharSet.Auto)]

static extern int SendMessageA(

IntPtr hwnd,

int wMsg,

int wParam,

uint lParam

);

//The Window name for winamp

private const string m_windowName = "Winamp v1.x";

//type of code being sent


const int WM_COMMAND = 0x111;

const int WM_USER = 0x0400;

//List of command codes that we can retrieve from the winamp SDK
const int WA_NOTHING = 0;

const int WA_PREVTRACK = 40044;

const int WA_PLAY = 40045;


const int WA_PAUSE = 40046;

const int WA_STOP = 40047;

const int WA_NEXTTRACK = 40048;

const int WA_VOLUMEUP = 40058;

const int WA_VOLUMEDOWN = 40059;

const int WINAMP_FFWD5S = 40060;

const int WINAMP_REW5S = 40061;

//functions to get the required commands

public static void DisplaySong()


{
Console.WriteLine(WinampLib.GetCurrentSongTitle());
}

public static void ErrorMessage()


{
Console.WriteLine("There's no such command. Use 'help'.");

public static void Stop()


{
IntPtr hwnd = FindWindow(m_windowName, null);

SendMessageA(hwnd, WM_COMMAND, WA_STOP, WA_NOTHING);


}

public static void Forward()


{
IntPtr hwnd = FindWindow(m_windowName, null);

SendMessageA(hwnd, WM_COMMAND, WINAMP_FFWD5S, WA_NOTHING);


}

public static void Rewind()


{
IntPtr hwnd = FindWindow(m_windowName, null);

SendMessageA(hwnd, WM_COMMAND, WINAMP_REW5S, WA_NOTHING);


}

public static void Play()


{
IntPtr hwnd = FindWindow(m_windowName, null);

SendMessageA(hwnd, WM_COMMAND, WA_PLAY, WA_NOTHING);


}

public static void Pause()


{
IntPtr hwnd = FindWindow(m_windowName, null);

SendMessageA(hwnd, WM_COMMAND, WA_PAUSE, WA_NOTHING);


}

public static void PrevTrack()


{
IntPtr hwnd = FindWindow(m_windowName, null);

SendMessageA(hwnd, WM_COMMAND, WA_PREVTRACK, WA_NOTHING);


}

public static void NextTrack()


{
IntPtr hwnd = FindWindow(m_windowName, null);

SendMessageA(hwnd, WM_COMMAND, WA_NEXTTRACK, WA_NOTHING);


}

public static void VolumeUp()


{
IntPtr hwnd = FindWindow(m_windowName, null);

SendMessageA(hwnd, WM_COMMAND, WA_VOLUMEUP, WA_NOTHING);


}

public static void VolumeDown()


{
IntPtr hwnd = FindWindow(m_windowName, null);

SendMessageA(hwnd, WM_COMMAND, WA_VOLUMEDOWN, WA_NOTHING);


}

public static void Shutdown()


{
Process.Start("shutdown.exe", "-s -t 00");
// * "shutdown -s -t 0" - Shutdown
// * "shutdown -r -t 0" - Restart

}
public static void Restart()
{
Process.Start("shutdown.exe", "-r -t 00");
// * "shutdown -s -t 0" - Shutdown
// * "shutdown -r -t 0" - Restart

static void Main(string[] args)


{
System.Console.ForegroundColor = ConsoleColor.Green;

//Console.WriteLine("
****************************************************");
//Console.WriteLine("I can basically control a bit of your winamp and
shutdown \nor restart your computer. I'm simple, for now.");
//Console.WriteLine(" ****************************");
Console.WriteLine("Console Controller Version 0.1\n * Created by K.R.
*");
//Console.WriteLine(" ");
//Console.WriteLine("");
Console.WriteLine("Type 'help' for help!");
Console.WriteLine(" ");

string message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);

//This part lists all the files in the directory


/*Console.WriteLine("This program lists all the files in the
directory!");
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"C:\");

foreach (System.IO.FileInfo file in dir.GetFiles("*.*"))


{
Console.WriteLine("{0}, {1}", file.Name, file.Length);
}
Console.ReadLine();
*/
}

public static void Engine(string message)


{
if (message == "help")
{
Console.WriteLine("Commands: Description");
Console.WriteLine("winamp - open winamp");
Console.WriteLine("play - play track");
Console.WriteLine("stop - stop track");
Console.WriteLine("pause - pause track");
Console.WriteLine("next track - next track");
Console.WriteLine("prev track - previous track");
Console.WriteLine("forward - forward 10 seconds");
Console.WriteLine("rewind - rewind 10 seconds");
Console.WriteLine("volume up - turn the volume up with
15%");
Console.WriteLine("volume down - turn the volume down with
15%");
Console.WriteLine("song title - display the song's title");
Console.WriteLine("time - current time");
Console.WriteLine("shutdown - shutdown computer");
Console.WriteLine("restart - restart computer");
Console.WriteLine("shut - shutdown computer at a
specific given time");
Console.WriteLine("clear - clear screen");
Console.WriteLine("exit/Ctrl+C - exit this program");

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");
Engine(message);

}
else if (message == "winamp")
{
System.Diagnostics.Process.Start(@"C:\Program
Files\Winamp\winamp.exe");

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "play")
{
Play();

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "forward")
{
Forward();
Forward();

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "Rewind")
{
Rewind();
Rewind();

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "stop")
{
Stop();

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "pause")
{
Pause();

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "shut")
{
System.Timers.Timer aTimer = new System.Timers.Timer();

// add an event handler


aTimer.Elapsed += new ElapsedEventHandler(shut);

Console.WriteLine("How many minutes until shutdown?");


string minutes = Console.ReadLine();
bool go = true;
for (int i = 0; i < minutes.Length; i++)
{
if (Char.IsNumber(minutes[i]) == false)
{
go = false;
break;
}
else go = true;
}

//if (int.Parse(minutes) == 0) go = false;

if (go == false)
{
Console.WriteLine("Please try again.");
message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else
{

int thetime = int.Parse(minutes);

// Set the Interval to 10 min = 600 seconds = 600000 milisec


aTimer.Interval = (thetime*60)*1000;
aTimer.Enabled = true;
Console.WriteLine("Done.");

GC.KeepAlive(aTimer);
message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
}
else if (message == "volumeup")
{
int i = 1;
while (i <= 10)
{
VolumeUp();
i++;
}

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "volumedown")
{
int i = 1;
while (i < 10)
{
VolumeDown();
i++;
}

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "nexttrack")
{
NextTrack();

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "prevtrack")
{
PrevTrack();

message = Console.ReadLine();
message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "songtitle")
{
DisplaySong();

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "clear")
{
Console.Clear();

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "time")
{
Console.WriteLine(DateTime.Now);

message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");

Engine(message);
}
else if (message == "exit")
{
Environment.Exit(0);
}
else if (message == "shutdown")
{
Shutdown();
}
else if (message == "restart")
{
Restart();
}
else if (message != "songtitle" && message != "previoustrack" &&
message != "nexttrack" && message != "volumedown" && message != "volumeup" &&
message != "pause" && message != "stop" && message != "play")
{

message = "";
ErrorMessage();
message = Console.ReadLine();

message = message.ToLower();
message = message.Replace(" ", "");
Engine(message);
}
Console.ReadLine();

public static void shut(object source, ElapsedEventArgs e)


{
Process.Start("shutdown.exe", "-r -t 00");
}

You might also like