- 在线时间
- 1957 小时
- 最后登录
- 2024-6-29
- 注册时间
- 2004-4-26
- 听众数
- 49
- 收听数
- 0
- 能力
- 60 分
- 体力
- 40960 点
- 威望
- 6 点
- 阅读权限
- 255
- 积分
- 23863
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 20501
- 主题
- 18182
- 精华
- 5
- 分享
- 0
- 好友
- 140
TA的每日心情 | 奋斗 2024-6-23 05:14 |
|---|
签到天数: 1043 天 [LV.10]以坛为家III
群组: 万里江山 群组: sas讨论小组 群组: 长盛证券理财有限公司 群组: C 语言讨论组 群组: Matlab讨论组 |
<DIV class=HtmlCode>8 G8 M& H- B, z$ [1 t( v
< >//---------------------------------------------------------------------------</P>
8 r; e7 H5 p# C4 C& q< >#ifndef SoundControlH& M& B, |# ^" k7 m) B8 X6 Q- M. G' t
#define SoundControlH
/ {3 K: i' o" t2 A0 @# t( w3 Y4 Z//---------------------------------------------------------------------------
' x8 w7 z4 U, J#include <Classes.hpp>
* `1 G( A2 }/ N5 O( N9 F#include <mmsystem.h>' w8 ]2 ~+ s# p% G
#include <mmreg.h></P>& I/ l. t; Z' j3 c% a' ?
< >
4 I& H: W7 f) D# h+ _( @. j- Bbool GetVolumeControl(HMIXER hmixer ,long componentType,long ctrlType,MIXERCONTROL* mxc);</P>8 H t$ c9 Q: y- Z6 k7 K3 U
< >long GetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc) ;/ T* P# L4 E: E, k. c) Z* \
unsigned GetVolumeValue(HMIXER hmixer ,MIXERCONTROL *mxc);! M3 x* h2 A& C% w( D9 y# ?/ [1 d [
bool SetVolumeValue(HMIXER hmixer ,MIXERCONTROL *mxc, long volume);
( ]' l8 J! Y5 L) U+ ], n& Ubool SetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc, bool mute);</P>
3 S; v0 w* }- v8 A. s' G< >- H$ l. G( y* k
//下面四个是输出函数,可以自己调用" z: I: @8 O; e/ [
bool WINAPI SetVolume(long dev,long vol);//设置设备的音量9 |# E, C% v( L2 |
unsigned WINAPI GetVolume(int dev);//得到设备的音量dev=0主音量,1WAVE ,2MIDI ,3 LINE IN</P> W" D; e2 K7 o2 ~& v4 Y
< >bool WINAPI SetMute(long dev,bool vol);//设置设备静音
' L# T4 o `+ h7 Kbool WINAPI GetMute(long dev);& S: W2 b! d ?. |: ]) N- M7 _
#endif</P>
/ t: {; n( F1 j/ ?. U. |+ b8 C' Q% w
< >bool GetVolumeControl(HMIXER hmixer ,long componentType,long ctrlType,MIXERCONTROL* mxc)
1 ~. F; V v4 s6 }/ g4 O3 f* R{( w% j. \9 t& w. X
MIXERLINECONTROLS mxlc;
* f+ l' ^! ^" J3 @MIXERLINE mxl;
4 U r, n8 u+ l1 g" hmxl.cbStruct = sizeof(mxl);
- p I! F3 R+ Z, l: pmxl.dwComponentType = componentType;
, C2 g) i P7 \: {1 lif(!mixerGetLineInfo((HMIXEROBJ)hmixer, &mxl, MIXER_GETLINEINFOF_COMPONENTTYPE))6 g# ?" \) B% C" ?
{
+ _9 N8 U! ^$ s9 z5 u8 Lmxlc.cbStruct = sizeof(mxlc);# b! m3 V$ c" [# J) T) @
mxlc.dwLineID = mxl.dwLineID;
. _/ w* N$ B/ Omxlc.dwControlType = ctrlType;
* D0 X/ T2 Y+ dmxlc.cControls = 1;
' p5 ]1 R9 V1 H/ G( ?mxlc.cbmxctrl = sizeof(MIXERCONTROL);
0 t! \, W5 N2 amxlc.pamxctrl = mxc;
4 L( k+ W, u5 ~5 z ^5 oif(mixerGetLineControls((HMIXEROBJ)hmixer,&mxlc,MIXER_GETLINECONTROLSF_ONEBYTYPE))
: r; K" I. B& ireturn 0;! }. `* o l% W0 f: Q& P
else: K+ k/ u1 @ n I/ @4 |
return 1;1 B1 f6 ^& c7 c1 V) }) S
} & h! C6 K, K+ A& p( A: ^
return 0;
2 B* J) o( X E3 Q( E}
' x+ w* A) b4 r, a) J//--------------------------------------------------------------------------- , ^& X- d; p, z
long GetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc)
f6 A0 c' D! S0 N, x6 t& g{3 ^4 N2 t f% ]" @; b
MIXERCONTROLDETAILS mxcd;
4 J9 n n& {8 `5 e: @. n/ yMIXERCONTROLDETAILS_BOOLEAN mxcdMute;; |* ?' R5 w4 K
mxcd.hwndOwner = 0; ; C4 S: J! r J/ e C, |
mxcd.cbStruct = sizeof(mxcd);
/ X% P/ f V% F' R$ _mxcd.dwControlID = mxc->dwControlID; 6 L# F' q1 T9 a
mxcd.cbDetails = sizeof(mxcdMute);" a! [5 g" h, C' P" ~
mxcd.paDetails = &mxcdMute; 0 J0 u, c. t# ]3 ^* T4 A- ^
mxcd.cChannels = 1;
/ r8 r7 X; @& D, Zmxcd.cMultipleItems = 0;
& k* R2 E/ \1 nif (mixerGetControlDetails((HMIXEROBJ)hmixer, &mxcd,MIXER_OBJECTF_HMIXER|MIXER_GETCONTROLDETAILSF_VALUE)) 8 k( f" J6 s: ^$ h
return -1; $ B3 S0 Z* {; h8 o7 ?: n
return mxcdMute.fValue;
$ {5 q" g. j* W} </P>
# G8 h0 ^) I, ?2 m$ w# Y; Y+ q< >//---------------------------------------------------------------------------
/ K3 ~: `- w I$ B! Junsigned GetVolumeValue(HMIXER hmixer ,MIXERCONTROL *mxc)
6 x$ t; B! ?" t1 S6 D9 Q! z{ & s/ B' [# k2 ^4 H6 p. y
MIXERCONTROLDETAILS mxcd;
1 |# i, ~4 u% d6 o' n: ^MIXERCONTROLDETAILS_UNSIGNED vol; vol.dwValue=0; 7 r: ]) M4 U; r# l O! A
mxcd.hwndOwner = 0;& @" H# U! U5 g* t0 w
mxcd.cbStruct = sizeof(mxcd);
% Z; O$ U: e6 H) B- _mxcd.dwControlID = mxc->dwControlID; # F- n' s7 E" d3 v4 u3 a5 u# s
mxcd.cbDetails = sizeof(vol); 7 d# l# t! R Q! k% N# E8 _
mxcd.paDetails = &vol;# I$ C0 _6 y: d( e; A: G
mxcd.cChannels = 1;
% ]* r- f+ p( n9 n1 _: t- rif(mixerGetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_GETCONTROLDETAILSF_VALUE)). W; Q. X, n- r2 y
return -1; 0 V! J" z. }2 R' `4 R9 C& g
return vol.dwValue;
5 R6 ~1 ?0 o" I; d} </P>
) C: k* H& m! F R; F< >//---------------------------------------------------------------------------
& A0 Y/ U5 v6 ~1 M* w1 Bbool SetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc, bool mute)# e. u! U$ v7 e" m4 Q) c) C$ ?$ `
{
% V( a7 b7 |# `$ q2 F: jMIXERCONTROLDETAILS mxcd;
% L! Z% K8 G5 ^; ~( d! x5 KMIXERCONTROLDETAILS_BOOLEAN mxcdMute;mxcdMute.fValue=mute; ) m3 m- k" N4 w1 B" b5 ?7 v9 [
mxcd.hwndOwner = 0;
( \6 C$ ?7 b) n: W7 Wmxcd.dwControlID = mxc->dwControlID;
. s8 ]7 C, U2 }6 Z% |/ ]' mmxcd.cbStruct = sizeof(mxcd);& M0 s! i, e. F. ?9 [9 D. ?9 W
mxcd.cbDetails = sizeof(mxcdMute);
2 B' B9 k3 U: X( U& s2 T; Tmxcd.paDetails = &mxcdMute;
: o/ c7 C; E7 d* w: D' U$ c: Amxcd.cChannels = 1; $ b8 r9 A& i2 p' Z1 i5 v* I2 w+ i
mxcd.cMultipleItems = 0;- C# _. R! K' S( ^
if (mixerSetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_SETCONTROLDETAILSF_VALUE))
8 H0 H; K# y1 Xreturn 0;& F9 N' u, E: S2 Z3 H! M
return 1; ' z( D% r; T1 T/ R6 l O3 T5 S& [
} </P>$ i( a: c" n' M7 b) T |& g
< >//---------------------------------------------------------------------------</P>" Y5 T0 B& z6 V/ j0 b! X2 a, g
< >bool SetVolumeValue(HMIXER hmixer ,MIXERCONTROL *mxc, long volume), x7 h8 |6 Q1 W& y% K
{
! ?$ ~- x) t5 o2 MMIXERCONTROLDETAILS mxcd;
: t- g8 @' l+ pMIXERCONTROLDETAILS_UNSIGNED vol;vol.dwValue = volume;
6 S6 s4 W8 s3 K% b9 l2 _- P, Mmxcd.hwndOwner = 0;! V" \+ A9 W! \8 A
mxcd.dwControlID = mxc->dwControlID;
+ N) [: ]& f0 W5 Dmxcd.cbStruct = sizeof(mxcd);: N" [ a: S5 K9 s
mxcd.cbDetails = sizeof(vol);
: b" M% K0 Y& h7 E$ K" Lmxcd.paDetails = &vol;
/ a' E2 y; c; M" j% o- ?mxcd.cChannels = 1;* @ h' l+ u( V3 J
if(mixerSetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_SETCONTROLDETAILSF_VALUE))+ J0 w4 j& z3 G6 q+ n, ^, B. N
return 0;
2 P3 |' O4 {" |8 A) B& jreturn 1;
+ u! k( ` @$ r2 n0 W3 A1 K. [} </P>
5 J- A' x: I! p" g9 {+ y% r< >+ i9 l6 J3 N U$ x; V7 O" A
//---------------------------------------------------------------------------" j7 q: |& B! C
unsigned WINAPI GetVolume(int dev)//得到设备的音量dev=0主音量,1WAVE ,2MIDI ,3 LINE IN' x1 w9 K) }5 w( p6 X8 F
{</P>
1 a6 g, A! H2 k; h1 _< >long device;unsigned rt=0;
- {6 f5 }6 q* w( wMIXERCONTROL volCtrl; , Z% J/ t( a8 o9 n
HMIXER hmixer;
?) @& ^7 h" J8 F( F/ m$ }switch (dev)) o% o; X- @- |7 d5 Q8 T
{
' L0 g( H( q: [+ l7 n" Xcase 1:
/ [+ l" N# F* ?6 b- jdevice=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; break; 2 `( s. l3 b: `: {/ A
case 2:
; |' {5 F Y4 Y: d% L5 B1 e! sdevice=MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; break; 7 k. i6 Y$ ^, J+ X* f
case 3:" W* \9 _ h0 ~5 l
// device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break; // cd 音量
+ L/ S% I. _/ ]// device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE; break; //麦克风音量
" h X/ |( m# A9 Y// device=MIXERLINE_COMPONENTTYPE_SRC_LINE; break; //PC 扬声器音量 - O( v5 y* S6 `4 G% r4 I
device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break; </P>% W( Z3 ~$ L8 j
< >default:0 c; r) t% s& _
device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; 2 Y% [& r# s2 c! S/ {
}</P>
6 c5 X/ g$ F+ h. d4 O7 x+ j< >if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;
4 d3 `0 H% f% t/ H3 E1 wif(!GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_VOLUME,&volCtrl)) ! ?5 S7 C& }! K+ K% ]8 A8 T1 ^
return 0;5 f3 e* w# ?& y! C5 q% P( H
rt=GetVolumeValue(hmixer,&volCtrl)*100/volCtrl.Bounds.lMaximum;- k0 U5 n6 B( K2 s6 Y$ C! l, f
mixerClose(hmixer);
, T) Q1 k- W# L! @/ L1 Qreturn rt;</P>, t O) `1 R1 h' i' O
< >}</P>+ ~( B) } A2 h* H% p* ]) y# g2 [- ?
< >//---------------------------------------------------------------------------</P>
+ U/ D) O6 r: p: u f1 B< >bool WINAPI SetVolume(long dev,long vol)//设置设备的音量
9 j" w, `9 B7 t; M0 U' k{: l9 a) E" j4 u: L+ }8 d k
// dev =0,1,2 分别表示主音量,波形,MIDI ,LINE IN2 E: d; D+ O0 \% a1 y; i
// vol=0-100 表示音量的大小 , 设置与返回音量的值用的是百分比,即音量从0 - 100,而不是设备的绝对值
9 M! i4 M0 ]/ c: g4 h4 g// retrun false 表示设置音量的大小的操作不成功% @: ^ |# R* M+ h
// retrun true 表示设置音量的大小的操作成功</P>
% E4 Q* Q' u* w6 z2 D< >long device;
5 j7 Y9 ~- E4 d: S$ D) I; s& abool rc=false;5 O* `7 D* E) A; K! j3 R
MIXERCONTROL volCtrl;
5 Z. j# B+ Y z7 I0 S _HMIXER hmixer;/ L3 Y" F9 B) \. d& R& f
switch (dev)! W7 K' @7 @. V: I! J& T5 s
{9 q' h: O6 }& \1 O# ?+ d8 q
case 1:
- b1 V! s2 a# N v# ?* [7 Q- U" z6 Cdevice=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; break;
5 O( B% @0 A5 K' h8 L" P0 f- Zcase 2:
6 S% C& e/ A' T& g1 m/ Hdevice=MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; break;* r8 \/ O/ N1 j+ G% {/ p3 I
case 3:
0 ~! f* T( M0 c! Zdevice=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break;</P>. I4 k2 B# f( d
< >default:
) t* M2 Z' ^5 Q+ s3 Odevice=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; * `+ _7 Q# ]( C9 C Q, h. }
} </P>: ^) C! y2 N6 K. b' @
< >if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;</P>
, r, m1 U- Y$ [: E0 M: y< >if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_VOLUME,&volCtrl))
; ]* }' e# ]8 q: s% a{
, e( p+ ?* i: Q9 J' pvol=vol*volCtrl.Bounds.lMaximum/100; 3 w1 Z3 }: S. ]- Y- H
if(SetVolumeValue(hmixer,&volCtrl,vol))
% g8 t V3 D, t: I7 drc=true;
, [' A1 w/ P: O& U} : ?9 S$ p& W5 W1 W1 k+ ^/ {
mixerClose(hmixer); ( g3 C! O4 i$ ^( ^& P- F# h
return rc;
0 S# ~4 a7 G9 f2 V% i& }* t ~} </P>
. q# Y7 t! X% B, N4 f; E4 J6 H7 g< >//---------------------------------------------------------------------------</P>/ e! W! a: T: P9 a5 ]! M( C
< >bool WINAPI SetMute(long dev,bool vol)//设置设备静音2 |, s) O% L/ c% u" w/ W
{
& i3 p+ k( Q! j) S2 X& h* E+ j( V// dev =0,1,2 分别表示主音量,波形,MIDI ,LINE IN' h) [' G% v: M
// vol=0,1 分别表示取消静音,设置静音- N* B+ K' m# V' w* C5 C
// retrun false 表示取消或设置静音操作不成功
0 C' v% K2 _1 n9 k3 F' k5 j \// retrun true 表示取消或设置静音操作成功</P>
9 v' R Q3 j4 f" B< >long device;' {& E; g) n, {' @ b* o$ [2 j
bool rc=false;. \' M' c# J$ y0 v" ~8 e& l8 u8 U# A
MIXERCONTROL volCtrl;1 @8 K, G+ P5 X$ B* @
HMIXER hmixer;2 n M" y- A6 e$ }. J
switch (dev)
. C' N; D; F# n. U$ U+ [{1 w: P* @5 u) W$ H( _5 _$ Y
case 1:
2 ]" f8 s5 ^% m) k( D1 O0 Q" k/ Xdevice=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; break;
8 m6 |3 m/ j) R/ r q- P9 @case 2:
: R4 P A/ t* {( g. a( O2 x% z9 fdevice=MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; break;
7 D' j3 B/ D$ P6 E, X8 ?% v+ h6 ycase 3:
1 c2 p- }. C/ M4 \device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break; </P>' y3 |' l: M& O: `
< >default:
: |, B& J1 q8 S0 L8 A2 I5 _ Pdevice=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
3 J: p+ V4 J) W} </P>
) Y2 Q( Y0 p6 `: K: o< >if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0; ) W' C- C8 D! d4 u, m4 L
if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_MUTE,&volCtrl)) 8 Z( T8 Q7 @ a3 U$ @
if(SetMuteValue(hmixer,&volCtrl,(bool)vol))
# ?( v! d4 i1 b5 |rc=true;6 }6 F9 E+ u! G5 ^
mixerClose(hmixer); % H' U8 [; x1 C9 U( [- s
return rc;1 A9 ~$ M; U' u" L7 p: ^. l
} </P>
, k4 y% V2 m$ P) e5 Y, l< >//---------------------------------------------------------------------------</P>
9 }/ d2 Y9 k1 s$ g< >bool WINAPI GetMute(long dev)//检查设备是否静音: d' \0 V2 f z2 X+ D
{
# B& x# z s0 F- z. l//dev =0,1,2 分别表示主音量,波形,MIDI ,LINE IN7 X/ n$ t) I8 k" w0 I5 ]
// retrun false 表示没有静音& }% K5 I0 P! \ s
// retrun true 表示静音
$ J% X* D' {' n3 ^; k% _7 ilong device;
* B6 ?1 I+ C/ \; W+ Sbool rc=false;
" O! A7 _2 m7 T3 I6 o# d# N% HMIXERCONTROL volCtrl;) R2 p5 W L4 e0 W6 X8 p# J1 H
HMIXER hmixer;
) q, H( n7 Z- m# [switch (dev). O7 e1 ?, b& n- D0 o; d! Z
{
- m- f0 |' T. I! J+ ncase 1:
, u" x: T7 O; P5 P& F0 c' kdevice=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; break;7 `4 e! ~3 W8 O q( v2 E1 h& S) R
case 2:8 d0 W7 F: J* H4 x- |+ h4 i3 U
device=MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; break;
9 w7 B5 @, Q v: k. B( h% B/ Ucase 3:8 m9 P8 X+ g0 b- c
device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break;0 _& s- b8 V- T: G/ |3 p) v' B
default:
! x6 D/ T4 h% c! o$ k$ }device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
* J/ ^/ t* L8 v( a3 B} </P>
* f8 m3 X0 D0 h, F( ]8 Q% @< >if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0; </P>
; [4 k' V$ M( B$ i/ ~, |<P>if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_MUTE,&volCtrl))
) a' }0 j" E$ v, Jrc=GetMuteValue(hmixer,&volCtrl);: d/ J& q. h. C& {% D' @
mixerClose(hmixer);1 k8 h- O4 e7 Z7 U* J
return rc;</P>4 O7 ] ]# h5 d
<P>}</P></DIV>& T, K4 @4 o: q4 S1 F
<P><b><EM><FONT style="BACKGROUND-COLOR: #fdfddf" face=Tahoma>上面的存为SoundControl.h</FONT></EM></b></P>
. ?# _( i& o0 ?2 a<DIV class=HtmlCode>' w) E6 N6 f e. k4 z H! Y) A
<P>#include <vcl.h>
. e6 H0 l" x" f8 K& R$ R/ S% M+ b9 F#pragma hdrstop
1 X# |2 U* H" V( s; N) f#include "SoundControl.h"
" S/ e! l, h6 i6 {- r#include "Unit1.h"* J6 ^+ |% }. a' S1 w1 E
//--------------------------------------------------------------------------- V6 R9 g# R9 C9 l! E
#pragma package(smart_init)7 I% L' Q ~9 ^7 t2 o3 S! _" d. a+ \
#pragma resource "*.dfm"
" H- ^, j4 d% g4 nTForm1 *Form1;* h3 ]- S/ p! x, R! p
//---------------------------------------------------------------------------, b& Q+ \/ e, i' X
__fastcall TForm1::TForm1(TComponent* Owner)
- Y7 u0 M/ f( E2 [1 @: g" I% N : TForm(Owner)
* i# M) u4 i# X, f{</P>
6 S- h! b6 n* Q9 O& m" k6 ~<P>}</P>2 R$ K4 O$ K4 }* t$ Y. K
<P>void __fastcall TForm1::CheckBox1Click(TObject *Sender)
/ K( B# H# ]7 P: W# [! J* O# S{
& D E( H( m6 T O: fSetMute(0,CheckBox1->Checked);
; `1 d, x/ D' E& v}- ]+ i4 _( w' m& n' @6 j; g
//---------------------------------------------------------------------------) l) b' z. C7 B
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
3 ~' c# Y* M, ~# h- [2 Q{
7 h- e% B5 R) }7 O+ ~; z7 K SetVolume(0,TrackBar1->Position);9 o$ ]" C2 e: T& ]( h- N0 X1 w
}
6 ^, B; R1 `/ j9 V" K1 Qvoid __fastcall TForm1::Button1Click(TObject *Sender)
) H+ z9 `% t6 ?. {{
' {: ]1 w" u) c# L4 I: i# V( a5 u TrackBar1->Position = GetVolume(1);" B' G5 ~- ~" j) R3 \- G- `1 S- B
}2 {$ L; b7 ^! j2 O7 K
void __fastcall TForm1::Button3Click(TObject *Sender)3 t: ^ D/ P6 G+ }# i
{" x3 P- ?8 P& _, v& j
CheckBox1->Checked= GetMute(0);
. d; g0 M, k4 {6 Z. w- [9 P}</P></DIV> |
|