約 2,010,469 件
https://w.atwiki.jp/yatteyoruby/pages/22.html
作成中 概要 Win32APIクラスを用いると、WindowsでRubyからDLLを利用できます。 例 WinInet.dllのInternetCrackUrl()を用いた例を以下に示します。WinInet.dllはHTTPやFTP通信APIを提供し、InternetExplorerなどでも用いられています。 InternetCrakUrl()は引数のURLを構成要素に分解します。 +dlの例 require dl/struct require dl/import module WININET extend DL Importable dlload( winInet.dll ) typealias( BOOL , unsigned int ) typealias( DWORD , unsigned long ) typealias( LPSTR , char * ) typealias( INTERNET_SCHEME , int ) typealias( INTERNET_PORT , unsigned short ) UrlComponent_t = struct ["DWORD dwStructSize", "LPSTR lpszScheme", "DWORD dwSchemeLength", "INTERNET_SCHEME nScheme", "LPSTR lpszHostName", "DWORD dwHostNameLength", "INTERNET_PORT nPort", "LPSTR lpszUserName", "DWORD dwUserNameLength", "LPSTR lpszPassword", "DWORD dwPasswordLength", "LPSTR lpszUrlPath", "DWORD dwUrlPathLength", "LPSTR lpszExtraInfo", "DWORD dwExtraInfoLength"] extern( BOOL InternetCrackUrl(const char *, DWORD, DWORD, void *) ) end uc = WININET UrlComponent_t.malloc uc.dwStructSize = uc.size uc.lpszScheme = "\0" * 100 uc.dwSchemeLength = 100 uc.nScheme = 0 uc.lpszHostName = "\0" * 100 uc.dwHostNameLength = 100 uc.nPort = 0 uc.lpszUserName = "\0" * 100 uc.dwUserNameLength = 100 uc.lpszPassword = "\0" * 100 uc.dwPasswordLength = 100 uc.lpszUrlPath = "\0" * 100 uc.dwUrlPathLength = 100 uc.lpszExtraInfo = "\0" * 100 uc.dwExtraInfoLength = 100 p WININET internetCrackUrl("http //localhost/test", 0, 0, uc) print uc.lpszScheme +win32apiの例1 require Win32API class Test def initialize @crackUrl = Win32API.new( WinInet.dll , InternetCrackUrl , p l l p , i ) end attr_reader uc def crackUrl(url) urlComponent = Struct.new( dwStructSize, lpszScheme, dwSchemeLength, nScheme, lpszHostName, dwHostNameLength, nPort, lpszUserName, dwUserNameLength, lpszPassword, dwPasswordLength, lpszUrlPath, dwUrlPathLength, lpszExtraInfo, dwExtraInfoLength) @uc = urlComponent.new @uc.dwStructSize = 60 @uc.lpszScheme = " " * 100 @uc.dwSchemeLength = 100 @uc.nScheme = 0 @uc.lpszHostName = " " * 100 @uc.dwHostNameLength = 100 @uc.nPort = 100 @uc.lpszUserName = " " * 100 @uc.dwUserNameLength = 100 @uc.lpszPassword = " " * 100 @uc.dwPasswordLength = 100 @uc.lpszUrlPath = " " * 100 @uc.dwUrlPathLength = 100 @uc.lpszExtraInfo = " " * 100 @uc.dwExtraInfoLength = 100 rc = @crackUrl.call(url, 0, 0, @uc.to_a.pack( L!pL!i!pL!i!pL!pL!pL!pL! )) return rc end end test = Test.new p test.crackUrl("http //localhost/test?query=true") p test.uc.lpszScheme +win32apiの例2 require Win32API class Test def initialize @crackUrl = Win32API.new( WinInet.dll , InternetCrackUrl , %w(p l l p), i ) end attr_reader uc def crackUrl(url) uc = [60, " "*100, 100, 0, " "*100, 100, 0, " "*100, 100, " "*100, 100, " "*100, 100, " "*100, 100].pack( L!pL!i!pL!i!pL!pL!pL!pL! ) rc = @crackUrl.call(url, 0, 0, uc) @uc = uc.unpack( L!pL!i!pL!i!pL!pL!pL!pL! ) return rc end end test = Test.new p test.crackUrl("http //localhost/test?query=true") p test.uc
https://w.atwiki.jp/kgh07155/pages/28.html
作り方の基本 フォーム付きDLLの作り方 実行ファイルからDLL内フォームを制御する 作り方の基本 DLLSample.dpr(DLLのソースファイル) library DLLSample; // library はDLLであることを示す。 uses SysUtils, Classes; // Unit作成時と同様に、必要ならばユニットを追加して構わない。 {$R *.res} // ここから、DLL側が行う処理をUnit作成時と同様に記述。 // 返し値を持たない処理は procedure // 返し値を持つ処理は function // 固定値は受け渡せないので、DLL側で管理する固定値は function で返す。 function Version ShortString; stdcall; // 最後に stdcall を追加すると、Delphi以外の言語でも返し値が使えるようになる。 // ただしDelphi以外の言語で返し値を使いたい場合は、返し値の型にも注意すること。 // 例えば String はDelphi独自の型なので、PChar か ShortString を使うようにする。 begin Result = DateToStr( FileDateToDateTime(FileAge( DLLSample.dll )) ); // この場合、返し値は DLLSample.dll と言うファイルのタイムスタンプ。 end; exports Version; // 外部ファイルから呼び出せる処理を記述。 // ここに記述されない処理は、DLL内部専用処理になる。 begin end. Unit_Sample.pas(DLLを呼び出す Unit のソースファイル) unit Unit_Sample; {$R *.dfm} // ここから、DLLを呼び出すための記述。 function ver ShortString; stdcall; // 処理名や引数名は異なっても構わないが、 // 引数や返し値の型と「stdcall」の有無は、DLL側と同じにすること。 external DLLsample.dll name Version ; // external で呼び出すDLLを指定する。 // name は、DLL内部での処理名が、ここに記述した処理名と異なることを示す。 // DLL内部での処理名と、ここに記述した処理名が同じなら不要。 // また、DLL内部の処理名は常に大文字と小文字が区別されるので、 // 大文字・小文字は常に正確に記述すること。 // ここまで、DLLを呼び出すための記述。 procedure TForm1.FormCreate(Sender TObject); begin self.Caption = ver; end; end. フォーム付きDLLの作り方 DLLSample.dpr(DLLのソースファイル) library DLLSample; uses Windows, // 呼び出し元の特定に使用。 Forms, // フォームの操作に使用。 Controls, // 返し値 TModalResult の操作に使用。 Unit_DLLForm in Unit_DLLForm.pas {DLLForm}; // フォームのソースファイル。 {$R *.res} function ShowDLLForm(hOwner HWND) TModalResult; stdcall; begin Application.Handle = hOwner; // 呼び出し元の情報をDLL側が受け取る。 DllForm = TDllForm.Create(Application); // DLL側でフォームを作成する。 // フォームに配置された各オブジェクトも、自動で作成される。 Result = DllForm.ShowModal; // 返し値を設定。 DllForm.Free; // DLL側で作成したフォームを破棄。 Application.Handle = 0; // 呼び出し元の情報を破棄。 end; procedure ShowDLLForm2; begin DllForm = TDllForm.Create(Application); // DLL側でフォームを作成する。 DllForm.Show; // 作成したフォームを表示。 end; exports ShowDLLForm, ShowDLLForm2; begin end. Unit_DLLForm(DLLに組み込みたいフォームのソースファイル) 通常のアプリケーションと同様に作成。 このプログラムの場合、Button1を配置し、Button1.ModalResult = mrOK に設定する。 Unit_Sample.pas(DLLを呼び出す Unit のソースファイル) フォームにButton1とButton2を配置する。 unit Unit_Sample; implementation {$R *.dfm} // ここから、DLLを呼び出すための記述。 function ShowDLLForm(hOwner HWND) TModalResult; stdcall; external DLLSample.dll ; procedure ShowDLLForm2; external DLLSample.dll ; // ここまで、DLLを呼び出すための記述。 procedure TForm1.Button1Click(Sender TObject); begin ShowDLLForm(Application.Handle); // DLL側でフォームを作成した後、 // 通常のフォームのShowModalメソッドと同じ動作をして // 作成したフォームを破棄。 end; procedure TForm1.Button2Click(Sender TObject); begin ShowDLLForm2; // DLL側でフォームを作成した後、 // 作成したフォームを表示。 end; end. 実行ファイルからDLL内フォームを制御する DLL内フォームの表示/非表示を、実行ファイルのToolButtonで制御するプログラムのソース。頑張れば他の制御にも応用できるかも。 基本的な仕組みは、 実行ファイルにToolButtonを配置。 DLLフォームのソースファイルに、ToolButtonを使ったイベント処理を記述。 DLLソースファイルに、ToolButtonのイベント設定(DLLフォームのソースにイベント処理の実行部があるので、その受け渡し)と、実行ファイル→DLL内フォームへのToolButton名を受け渡す処理を記述。 DLLSample.dpr(DLLのソースファイル) library DLLSample; uses Windows, // 呼び出し元の特定に使用。 Forms, // フォームの操作に使用。 ComCtrls, // ToolButtonの特定に使用。 Unit_DLLForm in Unit_DLLForm.pas {DLLForm}; // DLLフォームのソースファイル。 {$R *.res} procedure CreateDLLForm(hOwner HWND); stdcall; // DLLフォームを作成する。 begin Application.Handle = hOwner; // DLLフォームの親アプリケーションを特定。 DllForm = TDllForm.Create(Application); // DLLフォームを作成。 end; procedure FreeDLLForm; stdcall; // DLLフォームを破棄する。 begin DLLForm.Free; // DLLフォームを破棄。 Application.Handle = 0; // DLLフォームの親アプリケーションを解放。 end; procedure SetToolBtn1(Sender TToolButton); begin // 親アプリのToolButtonとDLLフォームを連携させる。 DLLForm.ToolBtn1 = Sender; // 親アプリのToolButton名をDLLフォーム側に保存。 with Sender do // 親アプリ側のToolButton設定を変更する。 begin Style = tbsCheck; // ToolButtonをトグルスイッチ型に設定。 // ↑動作確認用。ToolButtonのプロパティを直接設定して構わない。 OnClick = DLLForm.ToolBtn1Click; // ToolButtonをクリックしたときの処理をDLLフォームで用意したものに変更。 end; end; exports // 親アプリから呼び出せる処理を設定。 CreateDLLForm, FreeDLLForm, SetToolBtn1; begin end. Unit_DLLForm(DLLに組み込みたいフォームのソースファイル) unit Unit_DLLForm; type TDLLForm = class(TForm) public ToolBtn1 TToolButton; // 親アプリのToolButtonを保存するための変数。 procedure ToolBtn1Click(Sender TObject); // 親アプリのToolButtonをクリックしたときの処理の定義。 implementation {$R *.dfm} procedure TDLLForm.ToolBtn1Click(Sender TObject); begin // 親アプリのToolButtonがクリックされたとき、 DLLForm.Visible = TToolButton(Sender).Down; end; // DLLフォームの表示/非表示は ToolButton.Downプロパティに合わせる。 procedure TDLLForm.FormClose(Sender TObject; var Action TCloseAction); begin // DLLフォームが閉じられるとき、 ToolBtn1.Down = False; end; // 親アプリのToolButtonのトグルをオフ側にする。 Unit_Sample.pas(DLLを呼び出す Unit のソースファイル) フォームにToolBar1を配置し、ToolBar1上にToolButton1を作成する。 unit Unit_Sample; implementation {$R *.dfm} // ここから、DLLを呼び出すための記述。 procedure CreateDLLForm(hOwner HWND); stdcall; external DLLSample.dll ; // procedure FreeDLLForm; stdcall; external DLLSample.dll ; procedure SetToolBtn1(Sender TToolButton); external DLLSample.dll ; // ここまで、DLLを呼び出すための記述。 procedure TForm1.FormCreate(Sender TObject); begin CreateDLLForm(Application.Handle); // DLLフォームを初期化。 SetToolBtn1(ToolButton1); // ToolButton設定を初期化。 end; procedure TForm1.FormClose(Sender TObject; var Action TCloseAction); begin FreeDLLForm; // DLLフォームを破棄。 end;
https://w.atwiki.jp/ooooasys/pages/20.html
OASYS文書保存のdll
https://w.atwiki.jp/ooooasys/pages/19.html
OASYS文書編集展開のdll
https://w.atwiki.jp/project_c3/pages/65.html
PC-OP-RS1-CONTROL.DLL APIリファレンス Last updated 06/07/2008 Written by Yasuhiro ISHII(石井 康寛) このページのもくじ PC-OP-RS1-CONTROL.DLL APIリファレンス [#m5267b48] このページのもくじ [#h5dbc73f] ここでとりあげるモジュールのダウンロード [#p92ca3d9] DLL本体 [#c1847000] ソース一式 [#o41a9d2f] 概要 [#c89ba7d3] API一覧 [#j6d2369d] APIリファレンス [#i504d55b] Open [#x858dacd] 概要 [#oe87c3c6] プロトタイプ [#b0e5ea22] 入力 [#x9c7ea5b] 出力 [#h67f8afa] Close [#m1ba29e3] 概略 [#k1643f21] プロトタイプ [#g5714d58] 入力 [#d6fdb1bf] 出力 [#i74793ab] SetTimeOut [#icf07ea4] 概要 [#ud9c8ad3] プロトタイプ [#x2129700] 入力 [#jf6d943f] 出力 [#p72efdd0] Receive [#x18ffd2c] 概要 [#ic91e2e0] プロトタイプ [#cf87c833] 入力 [#w74d5e50] 出力 [#q85cec92] Transmit [#zd21945c] 概要 [#la6b7fb5] プロトタイプ [#s8e56b19] 入力 [#wd1e106c] 出力 [#o4679621] LedFlash [#n158dc12] 概要 [#t92748b2] プロトタイプ [#he05946f] 入力 [#tc8d843a] 出力 [#neec3631] GetModuleVersion [#u249cbca] 概要 [#o5502930] プロトタイプ [#y5866c4d] 入力 [#c5193269] 出力 [#k88f062f] ここでとりあげるモジュールのダウンロード DLL本体 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (pc-op-rs1-control.dll) ソース一式 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (pc-op-rs1-control.zip) 概要 このページでは、バッファロー製学習リモコンPC-OP-RS1に対してアクセスするライブラリPC-OP-RS1-CONTROL.DLLの提供するAPIについて説明しています。 このリファレンスでは、C言語によるインターフェースで説明していますので、他の言語から使用される場合には適宜読み替えてください。 API一覧 このライブラリが提供するAPIとそれぞれが提供する機能の内訳は以下の通りです。 API名 機能 Open ドライバのオープンを行う Close ドライバのクローズを行う SetTimeOut PC-OP-RS1との送受信をする際のタイムアウト時間を設定する Receive PC-OP-RS1でリモコンデータを受信する Transmit PC-OP-RS1からリモコンデータを送信する LedFlash PC-OP-RS1のACCESS LEDの点灯を行う GetModuleVersion 当DLLのバージョンを取得する APIリファレンス Open 概要 ドライバをオープンする。 プロトタイプ PCOPRS1CONTROL_RET Open(int port_no) 入力 port_no使用するCOMポート番号(0 - 255) 出力 PCOPRS1CONTROL_RET_OK 成功 PCOPRS1CONTROL_RET_ERR 失敗 Close 概略 オープンしたドライバをクローズする。 プロトタイプ PCOPRS1CONTROL_RET Close(void) 入力 なし 出力 PCOPRS1CONTROL_RET_OK 成功 PCOPRS1CONTROL_RET_ERR 失敗 SetTimeOut 概要 送受信のタイムアウト時間を設定する。(単位 [ms]) なお、このタイムアウト時間は、Receive関数での、リモコンコード受信待ちを中断するタイムアウト時間としても機能します。 プロトタイプ PCOPRS1CONTROL_RET SetTimeOut(unsigned long tmo_milliseconds) 入力 tmo_millisecondsタイムアウト時間(単位 [ms]) 出力 PCOPRS1CONTROL_RET_OK 成功 PCOPRS1CONTROL_RET_ERR 失敗 Receive 概要 PC-OP-RS1のリモコン受光部からのリモコンコード受信処理を行います。 受信データは、PC-OP-RS1の仕様により240バイト固定です。 プロトタイプ PCOPRS1CONTROL_RET Receive(unsigned char* premocon_code) 入力 premocon_code受信したリモコンコードのタイミング情報を保存する為のバッファへのポインタです。240バイトあるいはそれ以上の領域を設定して下さい。(使用するのは先頭から240バイトのみ) 出力 PCOPRS1CONTROL_RET_OK 成功 PCOPRS1CONTROL_RET_ERR 失敗 Transmit 概要 PC-OP-RS1の4chある赤外線リモコンコマンド送出ポートの任意の一つを使用して、設定したコマンド列を出力します。 プロトタイプ PCOPRS1CONTROL_RET Transmit(int ch,unsigned char* premocon_code) 入力 ch赤外線を出力するポートを設定します。ポート番号 0 - 3 premocon_code送出する赤外線コマンドデータ。Receive関数で取得した240バイト長のデータを設定します。 出力 PCOPRS1CONTROL_RET_OK 成功 PCOPRS1CONTROL_RET_ERR 失敗 LedFlash 概要 PC-OP-RS1に搭載されたアクセスLEDを一定期間点灯させます。 また、Receive関数でコマンド受信待ちのまま、タイムアウトを検出した場合の復帰処理としても使用します。 ソフトウェアがPC-OP-RS1に対して制御を開始した時のPC-OP-RS1の状態は不明であるため、一旦ソフトウェア側でLedFlashを呼び出すことを推奨いたします。 プロトタイプ PCOPRS1CONTROL_RET LedFlash(void) 入力 なし 出力 PCOPRS1CONTROL_RET_OK 成功 PCOPRS1CONTROL_RET_ERR 失敗 GetModuleVersion 概要 PC-OP-RS1-CONTROL.DLLのバージョン番号を取得する為のインターフェースです。 プロトタイプ PCOPRS1CONTROL_RET GetModuleVersion(unsigned long* major_version,unsigned long* minor_version) 入力 major_versionmajor_versionを格納する為のバッファへのポインタ minor_versionminor_versionを格納する為のバッファへのポインタ 出力 PCOPRS1CONTROL_RET_OK 成功 PCOPRS1CONTROL_RET_ERR 失敗 アクセスカウント(累計) - アクセスカウント(本日) - アクセスカウント(昨日) -
https://w.atwiki.jp/dtmer/pages/132.html
続:VSTを作ろう! さて、突発的に「そういえばVSTを作ってみるのも面白いかも・・・まぁ作れなくてもそのプロセスを知ってれば作曲に有利じゃね?」ってことで調べてみることに。 まずはSDKを使ってみよう計画 いろいろサイト見てみたけどやっぱりVST作ろうなんて考える人はあまりいないみたいで、情報が少なすぎる!仕方ないのでSteinBergが出しているキットをいじりつつ作れるかなぁと期待をこめてやるのもいいということでw というわけで今回は定番のVC++でSDKのサンプルを構築し、その仕様についてちょっと考察してみたいと思います。 まずプロジェクトに以下のようなフォルダを入れます。 サンプルが入っているのはpublicほにゃららというフォルダの下です。 今回は私が持っているのがVC2005なので、そのプロジェクトファイルで構築してみることにします。といってもこのプロジェクトファイルをダブルクリックしてコンパイルするだけwww どうやら出来上がったファイルは私の環境だと C \Program Files\Common Files\vst3\steinberg とかに出来上がったので、それをホストで検索かけるようにしてあげて立ち上げると・・・ 一応なんかできてインサートできるみたいです。ゲインをかえるプラグインになってるのかな? とまぁVSTらしきものはこれで一応作ったことにはなりますが、この段階ではとても胸を張って「VSTが作れて音が制御できます!」とは言えないですね。これからすべきことはいっぱいありますが、いくつか代表的なものを挙げると以下のようになるでしょう。 GUIとソースの関連性を把握しないといけない。 例えばこのサンプルでスライダがありますが、それらの画像はBMPのリソースになっていました。当然VSTはGUIがしっかりしていないといけませんから、画面に自分が用意したパーツを貼らないといけません。これがダイアログボックス上にボタンを貼る感じなのか、はたまたデバイスコンテキストをいじる感じなのか把握しないといけません。またここでユーザーが変更したステータスがどのようなメッセージでプログラム本体に送られてくるのかも把握しないといけません。 音データの入出力の制御を把握しないといけない おそらくいくつかのタイムスライスで、特定のバッファにホストのトラックから送られてきた音のディジタルデータがリアルタイムで送られてくるものと思われます。おそらくコールバック関数か何かで自動的にその関数が呼び出され、その引数がバッファになっているのではないかと予想します。そしてその関数の出力として特定のバッファに計算結果を流しこんで制御をホストに戻して抜けるのではないかと・・・。 プリセットとかどうなるの? プリセットならず、プロジェクトを保存して、再び読み込み直して再開した時にプラグインが初期化されていたらダメですよね。このサンプルならスライダの位置。これはどこに保存されるのでしょうか?またホストが起動して自動的に前回終了したプラグインを読み込むとき、その状態はどのようにしてプラグインに「このように設定して再開してね」と伝えているのでしょうか?恐らくはコンストラクタなどに鍵があると思われるのですが・・・はてさて。 遅延とかバッファサイズとかフォーマットとか これを考えるのはとりあえず後回しにしてもいいと思いますが、気になりますよね。これらの情報の来かたとそれらの管理の仕方をいずれ考えないといけません。少なくともプラグインの持つ遅延度合いはホストに反してあげないと同期とれないと思うんだけど・・・・? とりあえずいくつかサイトを見て調べてみると AudioEffect というクラスがあって、それがホストとの音データの受け渡しの制御を担っているらしいということ、そしてそれを派生してあげることによってVST内の音データの制御が可能になるらしいという情報を見つけました。というわけでサンプルをこれで検索かけて調べてみると・・・ ありましたね。まだAudioEffectがどういう機能を持つクラスかはわかりませんが、このサンプルもこれを派生させて何かをしているみたいです。後はこのサンプルの機能がどこに実装されているのか、そのソースの所在をつきつめていけば少し解明できそうな気がします。あとどうでもいいけどcontructorじゃなくてconstructorだろうなぁw 続く?w
https://w.atwiki.jp/nwpo_reaper/pages/22.html
MIDI編集画面のノート名は任意に設定可能。以下、ドラムマップの設定方法。 インストール ①VSTiを用意する。VSTiはDLLファイル形式。 ※当ページではフリーのVSTi「TS-808」を例に説明 Tacticle sounds music synthesizers ②DLLファイルを以下に保存 C \Program Files\REAPER (x64)\Plugins\FX VSTi使用方法 ①FXボタンを押す ②[追加]→[VST Folders]配下に追加したVSTiが表示されるので選択 ③VSTi画面が開く
https://w.atwiki.jp/abwiki/pages/236.html
Basic言語でDLLを作るだって?冗談言うなよ! それが、ActiveBasicでは自然な形で作れてしまいます。ネイティブ コードにコンパイルされるため、DLLプログラムとして要求されるだけの実行速度、プログラム サイズが期待できます。 作り方はとてもシンプル 通常のEXEプログラムと違う点は以下の2つだけ。 ① プロジェクト作成時に「DLL」を選択する ② エクスポートする関数には "Export" 指定をする ①は画面の説明に従うだけなので解説の必要はありませんね。②に関してですが、今までは関数を定義するというと、 Sub func1(parm...) ... End Sub Function func2(oarm...) As Long ... End Sub という感じに定義するのに対し、エクスポートする関数に関しては、 Sub Export func1(parm...) ... End Sub Function Export func2(oarm...) As Long ... End Sub などと、"Sub/Function" の後に "Export" という指定をしましょうということです。エクスポートとは、外部プログラムから呼び出すことができる関数のことです。例えば、func1という関数をエクスポートし、test.dllを作成すると、 Declare Sub func1 Lib "test.dll" (parm...) というように、外部プログラム(EXEやDLL)からの呼び出しが可能になります。 実際にDLLを作ってみよう DLLの利点は、なんといっても汎用性の高いプログラムを様々なアプリケーション プログラムから共有する形で呼び出すことができることにつきます。そこで、今回は2つの役立ちそうな機能(関数)をDLL化してみたいと思います。 GetFileDlg … OPENFILENAME構造体の初期化、GetOpenFileName/GetSaveFileName関数の呼び出し GetFolderDlg … GetFileDlgにちなんで、フォルダ(ディレクトリ)パスを取得するためのダイアログボックスを表示するプログラムをまとめる まずは、プロジェクトの作成から。プロジェクト名を "FileDlg" などとし、タイプを "DLL" にします。プロジェクト オプションなどの設定は特に必要ありません。 プロジェクトの作成はできたでしょうか?ここから皆さんが扱うファイルは、FileDlg.sbp のみになります。このファイルに関数郡を定義していくのですが、なにやら、初期状態ですでにDllMainといった関数が定義されています。これはDLLのロードやスレッド開始、終了などの処理を記述するための特別な関数ですが、めったなことではいじりませんので、ほっときましょう。そのDllMain関数の下に独自の関数を定義していきます。 エクスポート関数 "GetFileDlg" を作る この関数では、「ファイルを開く」「ファイルの保存」ダイアログボックスを表示します。OPENFILENAME構造体の内容を共有する形で、GetOpenFileName関数、GetSaveFileName関数を呼び出します。ユーザーがファイルを選択すると1が、キャンセルすると0が返るようにします。 Function Export GetFileDlg(hWnd As Long, lpBuf As BytePtr, lpFilter As BytePtr, bOpen As Long) As Long Dim ofn As OPENFILENAME 'OPENFILENAME構造体の初期化 FillMemory(VarPtr(ofn),Len(ofn),0) ofn.lStructSize=Len(ofn) ofn.hwndOwner=hWnd SetDWord(VarPtr(ofn.lpstrFilter),lpFilter) ofn.nFilterIndex=1 SetDWord(VarPtr(ofn.lpstrFile),lpBuf) ofn.nMaxFile=MAX_PATH ofn.Flags=OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST ofn.lpstrDefExt="*" If bOpen Then ofn.lpstrTitle="ファイルを開く" '「ファイルを開く」ダイアログ ボックスを表示 If GetOpenFileName(ofn)=0 Then GetFileDlg=0 Exit Sub End If Else ofn.lpstrTitle="ファイルの保存" '「ファイルの保存」ダイアログ ボックスを表示 If GetSaveFileName(ofn)=0 Then GetFileDlg=0 Exit Sub End If End If GetFileDlg=1End Function エクスポート関数 "GetFolderDlg" を作る SHBrowseForFolder関数、SHGetPathFromIDList関数を初めて目にした方がほとんどでしょう。SHBrowseForFolder関数で「フォルダの参照」ダイアログボックスを表示し、ユーザーがOKボタンを押すとSHGetPathFromIDList関数でフォルダへのパスを取得する流れになっています。ユーザーがフォルダを選択すると1が、キャンセルボタンを押すと0が返るようにします。 Function Export GetFolderDlg(hWnd As Long, lpFolder As BytePtr) As Long Dim bi As BROWSEINFO Dim pidlBrowse As VoidPtr 'BROWSEINFO構造体の初期化 FillMemory(VarPtr(bi),Len(bi),0) bi.hwndOwner=hWnd bi.lpszTitle="フォルダの選択" bi.ulFlags=BIF_RETURNONLYFSDIRS '「フォルダの参照」ダイアログボックスを表示 pidlBrowse=SHBrowseForFolder(bi) If pidlBrowse Then 'フォルダへのパスを取得(lpFolderポインタが示すバッファにコピー) SHGetPathFromIDList(pidlBrowse, lpFolder) GetFolderDlg=1 Else GetFolderDlg=0 End IfEnd Function DLL内のプログラムはこれですべてです。コンパイルが正常に行われると、"FileDlg.dll" というファイルが生成されるはずです。 "FileDlg.dll" を作ったはいいが、どうやって使うの? ということで、DLL呼び出しのサンプル プログラムを作ってみましょう。ProjectEditorの新規作成でBasicプログラムを選択し、以下のソースコードを入力します。コンパイル前に、"test.abp" などというファイル名でFileDlgプロジェクトのディレクトリに保存しておきましょう。 Declare Function GetFileDlg Lib "FileDlg" ( hWnd As Long, lpBuf As BytePtr, lpFilter As BytePtr, bOpen As Long) As LongDeclare Function GetFolderDlg Lib "FileDlg" ( hWnd As Long, lpFolder As BytePtr) As LongDim i As LongDim buf As StringDim FileFilter As Stringbuf=ZeroString(MAX_PATH)FileFilter="すべてのファイル(*.*)" + Chr$(0) + "*" + Chr$(0)'開くダイアログを表示i=GetFileDlg(0, _ StrPtr(buf), _ StrPtr(FileFilter), _ 1)If i Then MessageBox(0,buf,"「ファイルを開く」で選択されたファイル",MB_OK)Else MessageBox(0,"ファイルは選択されませんでした","エラー",MB_OK)End If'保存ダイアログを表示i=GetFileDlg(0, _ StrPtr(buf), _ StrPtr(FileFilter), _ 0)If i Then MessageBox(0,buf,"「ファイルの保存」で選択されたファイル",MB_OK)Else MessageBox(0,"ファイルは選択されませんでした","エラー",MB_OK)End If'「フォルダの参照」ダイアログを表示i=GetFolderDlg(0,StrPtr(buf))If i Then MessageBox(0,buf,"「ファイルの参照」で選択されたフォルダ",MB_OK)Else MessageBox(0,"フォルダは選択されませんでした","エラー",MB_OK)End IfExitProcess(0) 上のプログラムでわかるとおり、Win32APIの関数を定義したことがある方なら、自作DLL内の関数の定義、呼び出しは朝飯前ですね!? DLL作成は初めてだったというかたはどうだったでしょうか?今回作成したFileDlg.dllは、意外と便利なDLLなので、テキスト エディタ プログラムなどで採用してみるのも良いかもしれません。
https://w.atwiki.jp/musichouse/pages/13.html
VST Instruments Synth 名前 価格 デモ曲(link) コメント Rob papen BLUE € 199/$ 239 〇 お勧め Albino3 $ 239 〇 BLUEと並んで定番シンセ Predator € 149/$ 179 〇 ダンス・トランス系の太い音が得意 RG € 149/$ 179 〇 リズムギターシンセ SubBoomBass € 99/$ 119 - ベースシンセ linplug Albino3 239 US$ 〇 linplugでも売ってます Alpha3 USD 99 〇 アナログ系 シンプルで安いがなかなか良い CronoX3 USD 149 〇 Sample synth Sophistry USD 199 〇 Ambient Synth CronX3のAmbient音色特化版 Octopus USD 129 〇 Dual-Matrix Synthesizer LennarDigital Sylenth1 Euro 139 〇 フィルターの効きがすごい Cakewalk D-pro $ link サンプルプレイバックシンセ Z3ta+ $ 〇 変態系が得意 Rapture $ link FutureAudioWorkshop future_a_w_fawcir-.jpgCircle $199.00 / €149.00 〇 最近では珍しいパッケージ発売 GForce impOSCar €99 〇 自分は使った事ないけどかなり評判良い M-Tron €139 〇 Tron Oddity €99 〇 Oddity Minimonsta €149 〇 Minimonsta Melohman VSM €129 〇 Virtual String Machine M-Tron Pro 〇 サンプルプレイバックシンセ D-pro http //www.cakewalk.jp/ 〇 サンプルプレイバックシンセ D-pro http //www.cakewalk.jp/ 〇 サンプルプレイバックシンセ D-pro http //www.cakewalk.jp/ 〇 サンプルプレイバックシンセ screenshotthumb.jpg AA #seeqpod Drums DrumCore KitCore Horn/Brass オーケストラ/ストリングス KirkHunter Sampler Kontackt E-mu ボーカル音源 VOCALOID 初音ミク 鏡音リン・レン MEIKO KAITO 総合音源 UVIworkstaion SampleTank SonikSynth
https://w.atwiki.jp/nico_player/pages/46.html
再生速度変更不可だったのは解決法見つかったのでしょうか - 名無しさん 2007-11-12 03 11 32 flvsplit.dllにはもともと速度を変更する機能がないので、必要ならFLVSplitter.axに切り替える必要があります。 - 名無しさん 2007-12-03 06 21 42 Cドライブで実行しないとCDのとこでうまくいかないみたいです。 - 名無しさん 2007-12-31 20 40 31 ②はやらなくても①のバッチで取って来るようですが… - 名無しさん 2008-02-16 08 02 13 現時点では「flvsplit.dllインストール用batファイル」のreadme.txtに「ない場合は wget を使ってこっそり取ってきます。」と書いてあり、試しに一緒のフォルダに入れないで「FLVsplitインストール.bat」を実行したら、勝手にネットにつないで「SetupFlixEnginePCDEMO.zip」のダウンロードもしてくれるようです。 - 名無しさん 2008-06-01 15 17 31 上記の「現時点では~」を書き込んだ者ですが、私の環境では同じフォルダにOn2FlixEngineDemo_8_0_11_0.exe(setupFlixEnginePCDEMO.zipを解凍すると中に入っています)がない状態でバッチファイルを実行すると、zipファイルの解凍に失敗し、うまくいきませんでした。setupFlixEnginePCDEMO.zipは、バッチファイルで使用している7Zipが対応していないzipファイルなのかも。 ちなみに私の環境はwindows2000sp4、NTFSです。 - 名無しさん 2008-06-01 15 40 56 VISTA 64bit SP1ではエラーが出て手動でもインストール出来ませんね。互換性の問題がどうとかエラーが出てきました - 名無しさん 2008-07-07 10 52 28 何回On2からダウンロードし直しても、~SetupFlixEnginePCDEMO.zip 一致しません。ファイルが正しくありませんと出ます。どうすればいいのでしょうか? - 名無しさん 2008-07-18 15 11 32 すいません。上の項目にひとつ書き忘れが。解凍しようとすると上の表示が出てしまいます。 - 名無しさん 2008-07-18 15 12 57 上記に書き込んだものですが何回もすみません。さっきWinRARで解凍、修復ソフトで調べてみたところ「書庫がありません」と出たのでもしかしてダウンロード先のファイルが壊れているのではないでしょうか?こういうときはどうすれば良いのですか? - 名無しさん 2008-07-18 17 59 06 ttp //flix.on2.com/demos/SetupFlixEnginePCDEMO.zip をDLしてみましたが問題ありませんでした。他に原因があるのではないでしょうか。 - 名無しさん 2008-07-19 10 18 17 二つ上とは別の人間ですが、7-zipを公式からDLし、binの中のものと差し替えたところうまくいきましたよ。 - 名無しさん 2008-08-03 03 24 22 同じく7-zipを差し替えると問題なく動作しました。 - 名無しさん 2008-08-09 09 59 02 Vista 64bitにてインストールした際のメモです。まずはSetupFlixEnginePCDEMO.zipが解凍できなかったので7-ZipよりDL。同梱されているのが7z.exeなのに対し、DLしてきた物は7za.exeだったため、ファイル名(もしくはbatファイル内の記述)を変更することで解凍成功。インストールを実行すると、flvdecvp6.dllとflvsplit.dllの登録に失敗しましたというエラーが発生。まずはコマンドプロンプトを「管理者として実行(A)」で起動し、regsvr32コマンドで、インストールしたいファイルのフルパスを指定して実行(例 regsvr32 C ¥Users¥ユーザー名¥デスクトップ¥flvsplit_inst¥DELETEME¥flvdecvp6.dll)とすることでインストールに成功しました。また、ffdshowはX64版をインストールしても駄目な様です。32bit版に入れ替えることで再生出来るようになりました。 - 名無しさん 2008-09-02 16 15 22 Vista 64bit ですが、flvdecvp6.dllとflvsplit.dllをC \Windows\SysWOW64にコピーして、管理者として実行したコマンドプロンプトからregsvr32で登録すればよいようです。C \Windows\System32では「指定されたモジュールが見つかりません。」というエラーが出ます。 - mitty 2008-09-14 08 46 10 Vista 32bitですがflvsplit.dllインストール用batファイルをDLしてインストールしようとするとSetupFlixEnginePCDEMOが解凍できませんとでます。何故でしょうか?? - 名無しさん 2008-10-29 01 06 13 ↑同じく。しかし7-zip公式よりzip版をDLし中に入っていた7za.exeをbinフォルダ内に入れて7z.exeに名前を変えて右クリック→管理者として実行 そしてしばらく待ちPress Enter~でエンターを押し成功しましたメッセージが出れば大丈夫みたいです - 名無しさん 2008-11-17 18 31 10 2回目やってみるか、とbat実行したらフォルダ内に勝手にセットアップでもジップができた - 名無しさん 2009-01-05 09 22 27 batファイルを更新しました - 名無しさん 2009-02-21 23 07 14 2008-11-17の名無しさんのヤリ方で管理者として、実行まではいけたんですが、ソコでは成功メッセージは出ず、代わりにflvsplit.dllとflvdecvp6.dllそのものがbatファイル横に出現したので、手動で32ビット版vistaにあるWindows\System32に移動なりコピーなりすると成功しましたメッセージが出て大丈夫みたいです..導入に1時間以上かかりました - 桝矢よしのり 2009-02-27 08 29 40 上のついでですが、SetupFlixEnginePCDEMOをあっさりIZArcという解凍ソフトで解凍後、インストールで自動ぎみに導入しようとすると、インストの最後に名前とシリアルナンバー入力画面になり入力できずにアウトでした!バッチファイルも普通に開くと延々とFlixEnginePCDEMOのダウンロードに進むだけだし、管理者として実行するとパスが見当たりませんのエラーが出て無理でした。もちろん解凍前もdllがふたつあってもbatファイルの実行クリックで導入するのは私のVista32 - 桝矢 2009-02-27 08 40 08 (*1)ビット版では無理でした - 名無しさん 2009-02-27 08 43 50 タイムバークリックしまくると停止するのはこのプラグインのせい? - 名無しさん 2009-03-19 21 43 02 ↑flvsplit.dllの代わりにFlash Video Splitter 1.0.0.5を導入すると症状が改善されるという情報も。 - ttp //www.free-codecs.com/download/Flash_Video_Splitter.htm - 名無しさん 2009-03-20 07 45 31 On2 Flix Engineに同封のflvsplit.dll(とflvdecvp6.dll)は10月に更新されてver.2.7.0.5になった。7月に確認したときはver1.6.7.0だった。 - 名無しさん 2009-11-02 13 28 57 2.7.5.0はFLV1再生したときプレイヤーが落ちた - 名無しさん 2010-06-04 03 51 14 flvsplit.dll2.7.5.0はシークがちゃんとできない - 名無しさん 2010-06-04 03 57 33 おそらくflvsplit.dll-1.6.6.0(On2 Flix Proに同封)+flvdecvp6.dll-2.7.5.0(On2 Flix Engine Demosに同封)の組合せがいい - 名無しさん 2010-06-04 04 29 35 初期の(ニコ動がFLV4/VP4対応した直後あたり)のflvsplit.dll(1.5.3.0)だと、ニコ動のFLVは問題なくても現在のYouTubeのFLV(バージョン不明)がデコードできなくなっている。参考:ttp //www.katch.ne.jp/~kakonacl/douga/flv_flashplayer/flv_splitter.html もはやスプリッタはMPCしかダメかもしれん… - 名無しさん 2011-01-12 06 48 35 書いてあるサイトではもうダウンロードできないようなのですが・・・ - 名無しさん 2011-01-20 18 45 28 ↑の人は解決したのかな? 他のサイトでうpされてるのを発見したので報告。 ttp //lostware.web.fc2.com/lostware/ - 名無しさん 2011-03-17 23 01 23 1/20の人ではありませんが、助かりました。ありがとうございます。 - 名無しさん 2011-04-09 18 23 26 2ができなくなっていて先に進めません。Flash Video decoders(FLVSplitter.ax)で対応していないflvを再生する方法はありませんか - 名無しさん 2012-02-27 17 35 08