投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/9/28 15:59:14
> Declareの違いは問題無いかなと
それでも間違いとは言い切れませんが、下記の方が望ましいと思います。
'Imports System.Runtime.InteropServices 
'Imports System.Text 
Declare Unicode Function mciSendString Lib "winmm" Alias "mciSendStringW" ( _
  ByVal lpstrCommand As String, _
  <Out, MarshalAs(UnmanagedType.LPWStr, SizeParamIndex:=2)> _
  ByVal lpstrReturnString As System.Text.StringBuilder, _
  ByVal uReturnLength As Integer, _
  ByVal hwndCallback As IntPtr) As Integer

> mciqtz32.dllが原因かなと思うのですが
AnyCPU ビルドにせず、x86 ビルドと x64 ビルドのそれぞれで試してみるとか。

> mciSendString(MCICmd, "", 0, IntPtr.Zero)
第 2 引数に「""」を渡すべきではありません。

第 3 引数を 0 を指定する場合、第 2 引数は Nothing を指定する必要があります。
第 3 引数に 1 以上の値を指定する場合、第 2 引数はその長さのバッファを含んだ変数を渡します。