I have tryed to copy your interesting script in a "test.vbs" file and execute with cscript "test.vbs" but i have error.
How to use?
Private Foobar2000InstallDir As String = "" ' = HKLM\SOFTWARE\SOFTWARE\Wow6432Node\foobar2000\InstallDir
Private Foobar2000Exe As String = "" ' = Path.Combine(Foobar2000InstallDir,"foobar2000.exe")
Imports System.Runtime.InteropServices
Public Class WINAPI
<StructLayout(LayoutKind.Sequential)> _
Public Structure COPYDATASTRUCT
Public dwData As IntPtr
Public cbData As Int32
Public lpData As IntPtr
End Structure
Public Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As IntPtr, ByVal wMsg As Int32, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
Public Const WM_COPYDATA As Int32 = &H4A
End Class
Private Function FoobarPostMessage(cmd As String) As Boolean
cmd = cmd & Chr(0) & Foobar2000InstallDir & Chr(0)
Dim hWnd As IntPtr = WINAPI.FindWindow("{75D55AF6-03A2-457a-9933-D4EC2CB25684}", Nothing)
If hWnd = IntPtr.Zero Then Return False
Dim cds As WINAPI.COPYDATASTRUCT
Dim lpcds As IntPtr
Dim lpcmd As IntPtr = Marshal.StringToHGlobalAnsi(cmd)
cds.dwData = New IntPtr(1)
cds.lpData = lpcmd
cds.cbData = cmd.Length
lpcds = Marshal.AllocHGlobal(Marshal.SizeOf(cds))
Marshal.StructureToPtr(cds, lpcds, False)
WINAPI.SendMessage(hWnd, WINAPI.WM_COPYDATA, IntPtr.Zero, lpcds)
Marshal.FreeHGlobal(lpcmd)
Marshal.FreeHGlobal(lpcds)
Return True
End Function
Select Case PressedKey
Case Keys.MediaPlayPause
FoobarPostMessage(Foobar2000Exe & " /play")
Case Keys.MediaStop
FoobarPostMessage(Foobar2000Exe & " /stop")
Case Keys.MediaNextTrack
FoobarPostMessage(Foobar2000Exe & " /next")
Case Keys.MediaPreviousTrack
FoobarPostMessage(Foobar2000Exe & " /prev")
Case Keys.VolumeUp
FoobarPostMessage(Foobar2000Exe & " /command:up")
Case Keys.VolumeDown
FoobarPostMessage(Foobar2000Exe & " /command:down")
End Select