|
返答ありがとうございます。質問に不備があったようで申し訳ありませんでした。もういちどその検索ワードで調べてみます。
ちなみに現在
http://www.eonet.ne.jp/~maeda/cs/mcimidi.htm
上のサイトのコードを少しだけ変えて、一度だけ右クリックテンポを半分にするという以下のコードを記述したところです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace mci
{
public class MyForm : Form
{
[DllImport("winmm.dll")]
extern static int mciSendString(string s1, StringBuilder s2, int i1, int i2);
// 返り値 = 0 @正常終了
// s1 = Command String
// s2 = Return String
// i1 = Return String Size
// i2 = Callback Hwnd
public MyForm()
{
this.Text = "MCI Function";
}
protected override void OnMouseDown(MouseEventArgs e)
{
int ret;
if (e.Button == MouseButtons.Left) //マウスの左ボタンで再生する
{
//ret = sound_open(@"C:\DATA\Test\Chimes.wav");
ret = sound_open(@"C:\DATA\Test\Chimes.wav");
Console.WriteLine(ret);
sound_play();
}
if (e.Button == MouseButtons.Middle) //マウスの中間ボタンで停止する
{
sound_stop();
sound_close();
}
if (e.Button == MouseButtons.Right) //マウスの右ボタンでテンポを60にする
{
sound_slow();
}
}
// ファイルを open
private int sound_open(string file_name)
{ return mciSendString("open \"" + file_name + "\" alias my_sound", null, 0, 0); }
// ファイルを close
private void sound_close()
{ mciSendString("close my_sound", null, 0, 0); }
// 再生を開始
private void sound_play()
{ mciSendString("play my_sound", null, 0, 0); }
// 停止
private void sound_stop()
{ mciSendString("stop my_sound", null, 0, 0); }
// 一時停止
private void sound_pause()
{ mciSendString("pause my_sound", null, 0, 0); }
// 一時停止解除
private void sound_resume()
{ mciSendString("resume my_sound", null, 0, 0); }
//テンポを60にする
private void sound_slow()
{ mciSendString("set my_sound tempo 60", null, 0, 0); }
StringBuilder sb = new StringBuilder(32); // mciSendString() の Return String 格納用
// 状態を取得
private string sound_get_mode()
{ // 返り値: 再生中 = "playing"
// 停止中/再生終了 = "stopped"
// 一時停止中 = "paused"
mciSendString("status my_sound mode", sb, sb.Capacity, 0);
return sb.ToString();
}
// play 中のファイルの位置を ms単位 で返す
private int sound_get_position()
{
mciSendString("status my_sound position", sb, sb.Capacity, 0);
return int.Parse(sb.ToString());
}
// open 中のファイルの曲長を ms単位 で返す
private int sound_get_length()
{
mciSendString("status my_sound length", sb, sb.Capacity, 0);
return int.Parse(sb.ToString());
}
}
class form01
{
public static void Main()
{
MyForm mf = new MyForm();
Application.Run(mf);
}
}
}
|