HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0626
u音量や照明などの調節5解決


u

リンク

2009/6/26(Fri) 22:01:30|NO.26035

音量や画面の照明を調節するにはどんな関数を使えばよろしいのでしょうか。
windowsモビリティセンターのような感じで調節したいと思っています。

音量の方はmixerOpenというAPI関数で調節できるんでしょうかね…。
どちらにしてもこれがどう調節に繋がるのか理解できません。



この記事に返信する


inovia

リンク

2009/6/27(Sat) 07:02:43|NO.26048

音量調節するモジュール
ttp://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+200510/05100007.txt

明るさの調節は
ttp://wlog.flatlib.jp/archive/1/2009-1-29
を参考にスクリプトを組んでみましたが、
私のノートPCの場合CreateFile関数で失敗します。
スクリプトの記述が間違っているのかもしれませんが。

(※以下のスクリプトは明るさの取得のみ)

#include "kernel32.as" #define FILE_SHARE_READ 0x00000001 #define FILE_SHARE_WRITE 0x00000002 #define GENERIC_READ 0x80000000 #define GENERIC_WRITE 0x40000000 val="\\\\.\\LCD" CreateFile val,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,3,0,0 if stat=-1:gosub *ej hlcd=stat sdim levelbuffer,256 DeviceIoControl hlcd,0x230494,0,0,levelbuffer,256,varptr(levelCount),0 if stat=-1:gosub *ej stop *ej //エラー時にジャンプ GetLastError sdim e,256 FormatMessage 0x1200,0,stat,0,varptr(e),256,0 dialog e return

ポータブル コンピュータの LCD ディスプレイのコントラスト
またはバックライトを Windows XP で調整できない
ttp://support.microsoft.com/kb/843617/ja

サービスパックは3なのですがね〜。何故だろ?



inovia

リンク

2009/6/27(Sat) 15:21:31|NO.26052

明るさの取得は出来ますが、設定がうまくいかないようです。


#include "kernel32.as" #define FILE_SHARE_READ 0x00000001 #define FILE_SHARE_WRITE 0x00000002 #define GENERIC_READ 0x80000000 #define GENERIC_WRITE 0x40000000 #define IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS 0x00230494 #define IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS 0x00230498 #define IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS 0x0023049C //デバイスのオープン val="\\\\.\\LCD" CreateFile val,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,3,0,0 if stat=-1:gosub *ej hlcd=stat //バックライトを何段階に調光可能か調べる sdim levelbuffer,256 DeviceIoControl hlcd,IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS,0,0,varptr(levelbuffer),256,varptr(levelCount),0 if stat=-1:gosub *ej repeat levelCount tmp=peek(levelbuffer,cnt) if tmp=0:break lb.cnt=tmp loop l="" mes ""+levelCount+"段階で明るさを調節可能です。" repeat levelCount:l+=""+lb.cnt+" ":loop mes l //現在のバックライトの明るさを取得 dim bright,1:bytereturn=0 DeviceIoControl hlcd,IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS,0,0,varptr(bright),4,varptr(bytereturn),0 if stat=-1:gosub *ej //DISPLAY_BRIGHTNESS 構造体 //http://msdn.microsoft.com/en-us/library/aa372686(VS.85).aspx //AC電源のとき if peek(bright,0)=1&3{ nowbright=peek(bright,1) }else{ //DC電源 nowbright=peek(bright,2) } mes "現在明るさは、"+nowbright+" です。" //明るさ変更用のボックス設置 l="":repeat levelCount:l+=""+lb.cnt+"\n":loop combox s,,l button "変更",*set stop *set poke bright,1,lb.s:poke bright,2,lb.s DeviceIoControl hlcd,IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS,0,0,varptr(bright),4,varptr(bytereturn),0 if stat=-1:gosub *ej stop *ej //エラー時にジャンプ GetLastError sdim e,256 FormatMessage 0x1200,0,stat,0,varptr(e),256,0 dialog e:end return

Vista SP2にて確認。



u

リンク

2009/6/30(Tue) 21:48:22|NO.26125

すみません、しばらくパソコンに手を付けていなくて返信できないままでした。
わざわざモジュールまで作って頂きありがとうございました。
自分もvistaで実行してみましたが、確かに明るさが変わりませんね。何故でしょうかね・・。
しばらく自分で頑張ってみます。ありがとうございました。



u

リンク

2009/6/30(Tue) 21:48:58|NO.26126

解決チェック忘れです。



inovia

リンク

2009/6/30(Tue) 22:38:10|NO.26130

スクリプトにミスがありました。
これで明るさを変更できるはずです。


*set poke bright,1,lb.s:poke bright,2,lb.s DeviceIoControl hlcd,IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS,0,0,varptr(bright),4,varptr(bytereturn),0 if stat=-1:gosub *ej ↓以下のものに差し替え *set poke bright,1,lb.s:poke bright,2,lb.s DeviceIoControl hlcd,IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS,varptr(bright),4,0,0,varptr(bytereturn),0 if stat=-1:gosub *ej



ONION software Copyright 1997-2023(c) All rights reserved.