|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2006-09-23, 09:25 PM | #1 |
註冊會員
|
疑問 - 請教關於寫簡單的程式來模擬鋼琴(vbscript)
請教關於寫簡單的程式來模擬鋼琴(vbscript)
蒙之前mini psac sdany三位大大指出一條學習 vbscript 的路 所以現在對於vbscript算是稍微知道一點點 想寫一個簡單小程式來模擬鋼琴 以前好像在網頁上看人家有寫過程式 不知道該怎麼寫? 我的vbscript指的是WSH 非用於網頁的vbscript (因為兩者有點不同) 不好意思麻煩各位大大了 |
送花文章: 8,
|
2006-09-25, 12:08 PM | #2 (permalink) |
管理版主
|
vbs 因為沒有 Form 可以用
所以無法模擬鍵盤畫面 又 除非使用 VBA (也就是在MS 的應用程式上使用的 vbscript) 才可以宣告API 就算不是要 鍵盤畫面 或只是 直接寫譜方式 來模擬 .vbs 也沒有多媒體演奏函式可以使用 這裡有個利用網頁的vbscript的模擬鋼琴寫法 http://www.socialwork.com.hk/vb/vbsd...omForm0010.htm (這個網頁要開啟 要花一點時間...) 要不然只能退一步 準備好一首曲子 接著 .vbs內容如下三行 dim MCIOBJ set MCIOBJ = CreateObject("WScript.Shell") MCIOBJ.run "mplay32.exe /play /close c:\piano.wav" 註: mplay32.exe是 windows內建的一個播放程式 /play /close 表示演奏後自動關閉此播放程式 c:\piano.wav 就是準備好的曲子 WSH 在檔案操作上是很好用 但也是有限制的 無法像 VB做深入操作的 可以的話 退一步研究看看 VBA for Office (Excel、Word...什麼的) 最後 下三行是叫出windows多媒體裝置控制台 dim MCIOBJ set MCIOBJ = CreateObject("WScript.Shell") MCIOBJ.run "Rundll32.exe Shell32.dll, Control_RunDLL mmsys.cpl,,0" 那能否解析出 .dll 的操作 抽出 mciSendStringA、PlaySoundA 等WinAPI函式呢.....? 個人是找不到啦 ^^"" 可能還是有辦法 比如用 .js 來辦到 不過個人是對 Javascript 沒有研究 所以只能想到這些... 網路上大部分能找到都是 vbscript、JavaScript網頁設計 對 .js、.vbs for WSH 很多是定位於 危險 ≒ 病毒 所以建議網友 可以直接試試 VB 來設計 編譯成 .exe 也是容易攜帶的 |
送花文章: 2012,
|
向 mini 送花的會員:
|
Admin2 (2006-10-11)
感謝您發表一篇好文章 |
2006-09-25, 05:29 PM | #3 (permalink) | |
註冊會員
|
引用:
能不能請教大大 完整的播放一個聲音檔是下面這樣而已嗎? dim MCIOBJ set MCIOBJ = CreateObject("WScript.Shell") MCIOBJ.run "mplay32.exe /play /close c:\piano.wav" 還是說我需要再叫出"windows多媒體裝置控制台"才可以執行? MCIOBJ.run "Rundll32.exe Shell32.dll, Control_RunDLL mmsys.cpl,,0" 只能退而求其次準備多個鋼琴按鍵音的檔,沒有Form直接用鍵盤彈,也是不錯 如果要這麼做的話,第三行可不可以直接去掉 /close 寫成 MCIOBJ.run "mplay32.exe /play c:\piano.wav" 印象中好像有個程式叫API-Guide 好像可以查出API的功能,不過好像只有英文版(大概) 另外FoxAPIv15好像也可以,不過是簡體版,所以使用上會有亂碼 |
|
送花文章: 8,
|
2006-09-25, 07:12 PM | #4 (permalink) |
管理版主
|
這
dim MCIOBJ set MCIOBJ = CreateObject("WScript.Shell") MCIOBJ.run "mplay32.exe /play /close c:\piano.wav" 三行,存成 某某.vbs 就可得到效果了 去掉 /close 的話,演奏完 mplay32.exe開啟的播放視窗程式就不會自動關閉 MCIOBJ.run "Rundll32.exe Shell32.dll, Control_RunDLL mmsys.cpl,,0" 只是比喻 "是否有方法能使用 .dll 裡的API ?" 而已 Q:FoxAPIv15好像也可以,不過是簡體版,所以使用上會有亂碼 A:你可以用 Microsoft AppLocale 來掛上 FoxAPIv15簡體版 這樣就可以看到到簡體字 或 到中文化版區 求助 繁中化 |
送花文章: 2012,
|
2006-09-27, 05:32 PM | #5 (permalink) | |
註冊會員
|
引用:
要寫這個程式我目前能夠想到的是 準備各音階的聲音檔 , 製作的時候 只能寫好譜或是給一個inputbox讓使用者填入整首譜 , 然後讓vbs執行 這種方式應該不難 , 但是我比較想要作的是彈什麼就是什麼 , 就像一般的鋼琴般 把鍵盤當作琴鍵 , 按一個音是個音... 我有查到一個網站 http://faculty.stut.edu.tw/~tang/project/proj_ref.htm 鋼琴鍵盤示範midi發聲程式設計 這項有VB原始碼 我比較驚訝的是好像是直接以winAPI來發音 , 所以不需要準備什麼鋼琴音 看了一下他好像有用到winmm的東西 , 沒學過VB和API用法 一下子看很吃力 , 完全不知所云 不知道這個程式 , 有沒有辦法vbscript化 ? 不用太複雜 , 只要可以彈就好了 他是以Form用滑鼠來彈 ( 雖然看過資料WSH可以利用,IE的物件叫出表單 ) 我有想過 , 想用鍵盤彈感覺好像很難達成 因為用能夠給他指令的 , 目前我只知道 1. 以inputbox給 , 但是按一個音後要按enter , 所以不可行 2. 用另外的txt檔給或是由DOS執行時 , 順便給指令 但是這個跟一次給整首歌的情形 , 不就沒兩樣了 不知道有沒有辦法 , 達成按一個鍵就達成某事件(EX:一個鋼琴音) 的方法 |
|
送花文章: 8,
|