aboutsummaryrefslogtreecommitdiff
path: root/cdmp3/cmdmp3win.c
diff options
context:
space:
mode:
Diffstat (limited to 'cdmp3/cmdmp3win.c')
-rw-r--r--cdmp3/cmdmp3win.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/cdmp3/cmdmp3win.c b/cdmp3/cmdmp3win.c
new file mode 100644
index 0000000..229694f
--- /dev/null
+++ b/cdmp3/cmdmp3win.c
@@ -0,0 +1,74 @@
+// cmdmp3win
+// A command-line MP3 player for Windows
+// (window-mode version)
+//
+// License: MIT / X11
+// Copyright (c) 2009, 2015, 2022 by James K. Lawless
+// jimbo@radiks.net https://jiml.us
+// See https://jiml.us/license2022.htm
+//
+// To build, use the following MinGW command:
+// gcc cmdmp3win.c -lwinmm -mwindows -o cmdmp3win.exe
+
+
+#include <windows.h>
+#include <string.h>
+#include <stdio.h>
+
+char msg[256];
+char *title="cmdmp3win v2.20";
+
+char *parse_arg(char *);
+void sendCommand(char *);
+
+int WINAPI WinMain( HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow ) {
+
+ char cmdBuff[MAX_PATH + 64];
+ char *arg;
+
+ arg=parse_arg(lpCmdLine);
+
+ if(arg==NULL) {
+ sprintf(msg,"Syntax:\n\tcmdmp3win \"c:\\path to file\\file.mp3\"\n");
+ MessageBox(NULL,msg,title,MB_OK);
+ return 1;
+ }
+ sendCommand("Close All");
+ sprintf(cmdBuff,"Open \"%s\" Type MPEGVideo Alias theMP3",arg);
+ sendCommand(cmdBuff);
+
+ sendCommand("Play theMP3 Wait");
+ return 0;
+}
+
+ // parse a single command-line argument.
+ // remove enclosing double-quotes if present
+ // return a new string
+char *parse_arg(char *s) {
+ char *p;
+ char c;
+ p=strdup(s);
+ while((*p==' ')||(*p=='\t'))
+ p++;
+ c=*p;
+ if(c=='\"')
+ p=strtok(p+1,"\"");
+ else
+ p=strtok(p," \t");
+ return p;
+}
+
+ // Send a string to the Media Control Interface
+ // If an error occurs, display it and the string
+ // that produced the error.
+void sendCommand(char *s) {
+ int i;
+ i=mciSendString(s,NULL,0,0);
+ if(i) {
+ sprintf(msg,"Error %d when sending %s\n",i,s);
+ MessageBox(NULL,msg,"cmdmp3win",MB_OK);
+ }
+}