- Delphi
-
このページでは、Delphi用 の Tips や コンポーネントを公開しています。
- Tips
- WindowsオーディオミキサーAPIを使う
- コンポーネント、クラス
- TMixer
- TCpuUsage
- TVTrackBar
- TTask
- TSliderListBox
- THotkeyEx
- TMixer
- TMixer は Windows のオーディオミキサーを統合的に扱うためのコンポーネントです。FaderController3、MixerInfo で使っています。音量やミュートなどを簡単に操作できます。
ミキサー関係の操作は非常に難解なように思われていますが実際はそこそこシンプルな構造です。ただ、手間がかかります。TMixer はミキサーAPIを直接使うことなく音量などを操作するインターフェイスを提供します。
TMixer は Delphi4 以上で動作します(動的配列とデフォルト引数を使用しているため Delphi3 ではコンパイルできません)。
簡単なサンプルプログラムが同梱されています。MixerInfo はソースコードを公開しているのでこちらも参考にしてください。
-
更新履歴
- 【2006/08/11】軽量化する方向で全体的にブラッシュアップしました。(FaderController ver3.3fに該当)
- コントロール情報の所有者をTMixerItemからTMixerDevへ変更しデバイス内全コントロールを一つのリストで管理するように変更。しかしながら、TMixerItemを使ってTMixerCtrlへアクセスする手順は変更ありません。
- TMixerCtrl.Parentプロパティ(TMixerItem型)を追加。Parentプロパティでコントロールが接続されているライン(TMixerItem)への参照を得ることができます。
- すべてのTObjectListの使用をやめて動的配列へ変更。Contnrsユニットがusesから外れました。
- TMixerMultipleItemDataをclassからrecordへ変更。これに伴いTMixerMultipleItems.ItemsプロパティはPMixerMultipleItemData型へ変更。
- TMixerItem.IndexOfIDメソッドを廃止してTMixerDev.CtrlOfControlIDを追加。
- TMixerDev、TMixerItem、TMixerCtrlのDataプロパティを廃止。データを持たせる場合はTMixer.CreateMixerXXXメソッドをoverrideしてください。
- 役に立たないのでTMixerDevのManufacturerId、ProductId、DriverVersionプロパティを廃止。
- EMixerErrorにCtrlプロパティを追加。コントロール操作で例外が生成される場合に限り該当するTMixerCtrlを取得できます。
- TMixerItem.MultipleItemsプロパティへアクセスした場合にcsMultipleスタイルではないコントロールでリストを取得してしまう問題を修正。
- 【2006/03/24】GetUnsignedなどの音量操作関数すべてにおいて正しく例外が発生しない問題を修正
- 【2006/03/03】ライン名などに不正な文字列(終端Nullなし、終端が2バイトコードの1文字目)を返すデバイスへの対応(FaderController ver3.2jに該当)
- 【2004/11/28】3チャンネル以上のミキサーラインを所有するデバイスにおいてアクセス違反が発生していた問題を修正(FaderController ver3.2fに該当)
- TCpuUsage
- CPU使用率を取得する非ビジュアルコンポーネントです。VackupでCPU使用率を取得するために作成したコンポーネントです。Win9XとWinNTで使えます。
- 動作確認をしているDelphiのバージョンは6ですが、INT64を使ってるだけなのでDelphi4以降なら動作すると思われます。
-
- TVTrackBar
- Delphi標準のトラックバーコンポーネントはSel機能がデフォルトで有効になっており、オフにすることができないので、プロパティでSel機能をオフにすることができるトラックバーを作ってみました。TTrackBarを継承しています。UO mp3 と RO mp3 で使用しています。
- 動作確認をしているDelphiのバージョンは6ですが、CreateParamsでStyleからTBS_ENABLESELRANGEを除去しているだけなので、どのバージョンでも動作すると思います。
-
- TTask
- TTaskは Task Scheduler API の ITask COM オブジェクトをラップしたクラスです。VackupでWindowsタスクスケジューラを操作するために一部同じルーチンを使っています。今後のためにもと思いラッパークラスを作ってみました。TObjectを継承しているのでコンポーネントではないですが、タスクスケジューラを容易に操作できます。Delphi6用です。
-
- TSliderListBox
- ListBoxコンポーネントとTrackBarコンポーネントを合わせたような機能を提供します。RBR Car Tuneで使っています。元々はFaderController ver2用に製作したものですが、XPテーマへの対応などいくつか手直しして公開できるようにしました。SliderListBoxコンポーネントはTCustomListBoxを継承しています。Delphi5以上で使用できます。ちなみに、FaderController ver3には使用していません(軽量化のためにAPIを直接使って描画しています)。
-
- THotkeyEx
- Windowsキーの使えるHotkeyコントロールです。THotkeyを継承しています。ローレベルフックの関係上Windows2000以降のみWindowsキーを利用できます(Windows98でも動作はします)。たぶんDelphi4以上で動作します(確認は5と7)。
-
|