|
VFP ·R¥ÎªÌªÀ°Ï ¥»°Q½×°Ï¬° Visual Foxpro ·R¥ÎªÌ¸gÅç¥æ¬yªº¦a¤è, ½Ð¦h¦h§Q¥Î"·j´M"ªº¥\¯à, ¥ý¬d¬Ý¬Ý¦³µL«e¨Ò¥i´`, ¦pªGÁÙ¦³¤£À´ªº¦Aµo°Ý. ³¡¥÷¥DÃD¦³ªþ¥[ÀÉ®×, ¶·¥ýµù¥U¦¨¬°ªÀ°Ï©~¥Á¤~¥i¥H¤U¸ü.
|
¤W¤@½g¥DÃD :: ¤U¤@½g¥DÃD |
µoªí¤H |
¤º®e |
sunghsia
µù¥U®É¶¡: 2003-06-13 ¤å³¹: 52 ¨Ó¦Û: ¥x¥_
²Ä 1 ¼Ó
|
µoªí©ó: ¬P´Á¤ ¤E¤ë 30, 2005 12:06 pm ¤å³¹¥DÃD: ¥Dµ¶q |
|
|
**********************************************
* «þ³Æ¦Ü *.prg ±ýÂ÷¶}µ{¦¡®É,ÂIÀ»[ªÅ¥Õªº¦a¤è]
* µ²ºc¸ê®Æ¥i¬d¸ß vb ªº Win32api.txt ©Î MSDN
************************************************
ouserform=CREATEOBJECT ("userform")
ouserform.SHOW
DEFINE CLASS userform AS form
name="Form1"
caption="Form1"
left=47
top=46
width=100
height=142
maxbutton=.F.
closable=.F.
showwindow=2
visible=.T.
add object label1 AS Label with left=12,top=8 , autosize=.T. ,caption=[Master Volumn]
add object label2 AS Label with left=12,top=26 , autosize=.T. ,caption=[µ¶q]
add object shape1 AS shape with left=4,top=24,width=90,height=2, specialEffect=0
add object timer1 AS Timer
PROCEDURE ACTIVATE
_screen.windowstate=1
_screen.visible=.F.
READ EVENTS
ENDPROC
PROCEDURE CLICK &&Â÷¶}
= GlobalFree (hmem)
RELEASE DLL
CLEAR EVENTS
_screen.visible=.T.
_screen.windowstate=2
ENDPROC
PROCEDURE ERROR
LPARAMETERS nError, cMethod, nLine
messagebox("¿ù»~½X: "+ltrim(str(nError))+chr(13)+Message()+chr(13)+chr(13)+"±N PROCEDURE INIT ¨Æ¥óùتº COMCTL.Slider.1 ´«¦¨ MSComctlLib.Slider.2 ¸Õ¸Õ",16)
QUIT
ENDPROC
PROCEDURE INIT
this.addobject ("VSlider" , "Slider" , "COMCTL.Slider.1") &&«Ø¥ß Sliderª«¥ó
this.VSlider.move(42,42,90,90)
this.VSlider.tickStyle=3
this.VSlider.orientation=1
DECLARE INTEGER mixerOpen IN winmm INTEGER @ phmx, INTEGER uMxId, INTEGER dwCallback, INTEGER dwInstance, INTEGER fdwOpen
DECLARE INTEGER mixerGetLineInfo IN winmm INTEGER hmxobj, STRING @ pmxl, INTEGER fdwInfo
DECLARE INTEGER mixerGetLineControls IN winmm INTEGER hmxobj, STRING @ pmxlc, INTEGER fdwControls
DECLARE INTEGER mixerGetControlDetails IN winmm INTEGER hmxobj, STRING @ pmxcd, INTEGER fdwDetails
DECLARE INTEGER mixerSetControlDetails IN winmm INTEGER hmxobj, STRING @ pmxcd, INTEGER fdwDetails
DECLARE INTEGER GlobalFree IN kernel32 INTEGER hMem
DECLARE INTEGER GlobalLock IN kernel32 INTEGER hMem
DECLARE INTEGER GlobalAlloc IN kernel32 INTEGER wFlags, INTEGER dwBytes
DECLARE RtlMoveMemory IN kernel32 As CopyMemory STRING @ Destination, INTEGER Source, INTEGER nLength
public hmixer, hmem, mxc, mxcd, ³Ì¤jµ¶q
hmixer=0
= mixerOpen(@hmixer, 0, 0, 0, 0) &&¶}±Ò¹w³]¸Ë¸m
* --------------------------------------------------------------------
componentType = 4 && MIXERLINE_COMPONENTTYPE_DST_SPEAKERS &&¥Dµ¶qªºÈ
ctrlType = 1342177280 + 196608 + 1 && MIXERCONTROL_CONTROLTYPE_VOLUME
* --------------------------------------------------------------------
mxl = ; && µ²ºc MIXERLINE , »Ýn¤@¨Ç¿é¤J, ¨ä¥¦ªº³£¬O¶Ç¦^È
this.num2dword(168) +; && cbStruct ¿é¤J¥»µ²ºcªº¤j¤p long=1,4
repl(chr(0),4) +; && dwDestination long=5,4
repl(chr(0),4) +; && dwSource long=9,4
repl(chr(0),4) +; && dwLineID ¥»½uªºID long=13,4
repl(chr(0),4) +; && fdwLine long=17,4
repl(chr(0),4) +; && dwUser lomg=21,4
this.num2dword(componentType) +; &&¿é¤J¥Dµ¶qªºÈ long=25,4
repl(chr(0),4) +; && cChannels ¥»½uªº¥¿Å 1=¤£¯à½Õ¾ã 2=¥i½Õ¾ã long=29,4
repl(chr(0),4) +; && cConnections ¦p¥»½u¬O¥Dµ¶q,´N¦³stereo,Wave,CD,Mic,Aux,Vido..long=33,4
repl(chr(0),4) +; && cControls ¥»½u¥i±±¨îªºªº¶µ¥Ø¼Æ¶q,¦pµ¶q,ÀRµ©Î20db.. long=37,4
repl(chr(0),16) +; && szShortName ½uªºµu¦WºÙ MIXER_SHORT_NAME_CHARS = 16 string=41,16
repl(chr(0),64) +; && szName ½uªºªø¦WºÙ MIXER_LONG_NAME_CHARS = 64 string=57,64
repl(chr(0),48 ) && µ²ºc MIXERLINE_TARGET, 48 byte
*** 168 byte
*µ²ºc MIXERLINE_TARGET
* repl(chr(0),4) +; && dwType long=121,4
* repl(chr(0),4) +; && dwDeviceID long=125,4
* repl(chr(0),2) +; && wMid integer=129,2
* repl(chr(0),2) +; && wPid integer=131,2
* repl(chr(0),4) +; && vDriverVersion long=133,4
* repl(chr(0),32) && szPname string=137,32 MAXPNAMELEN=32
*** 48 byte
*-------------------------------------------------------------------------------
= mixerGetLineInfo (hmixer, @mxl, 3) && MIXER_GETLINEINFOF_COMPONENTTYPE=3
*-------------------------------------------------------------------------------
mxc = ; && µ²ºc MIXERCONTROL
this.num2dword(152) +; && cbStruct ¿é¤J¥»µ²ºcªº¤j¤p long=1,4
repl(chr(0),4) +; && dwControlID long=5,4
repl(chr(0),4) +; && dwControlType long=9,4
repl(chr(0),4) +; && fdwControl long=13,4
repl(chr(0),4) +; && cMultipleItems long=17,4
repl(chr(0),16) +; && szShortName µu¦WºÙ MIXER_SHORT_NAME_CHARS=16 string=21,16
repl(chr(0),64) +; && szName ªø¦WºÙ MIXER_LONG_NAME_CHARS=64 string=37,64
repl(chr(0),4) +; && lMinimum ³Ì¤pµ¶q long=101,4
repl(chr(0),4) +; && lMaximum ³Ì¤jµ¶q long=105,4
repl(chr(0),44) && reserved «O¯d long=109,44
*** 152 byte
*-------------------------------------------------------------------------------
hMem = GlobalAlloc(64, len(mxc)) &&¥Ó½Ð¤@Ó¦s©ñ°Ï
_add = GlobalLock(hMem) && _add¬O¦s©ñ°Ïªº¦a§}
dwLineID = substr(mxl, 13, 4) &&¥»½uªºID
mxlc= ; && µ²ºc MIXERLINECONTROLS
this.num2dword(24) +; && cbStruct ¿é¤J,¥»µ²ºc¤j¤p long=1,4
dwLineID +; && dwLineID ¿é¤J,mxl½uªºdwLineID long=5,4
this.num2dword(ctrlType) +; && dwControl long=9,4
this.num2dword(1) +; && cControls mxlªºcControls¼Æ¶q long=13,4
this.num2dword(len(mxc)) +; && cbmxctrl ¿é¤J,¦s©ñ°Ïªº¤j¤p long=17,4
this.num2dword(_add) && pamxctrl °O¿ý,¦s©ñ°Ïªº¦a§} long=21,4
*** 24 byte
*-------------------------------------------------------------------------------
= mixerGetLineControls(hmixer, @mxlc, 2) &&MIXER_GETLINECONTROLSF_ONEBYTYPE=2
= CopyMemory (@mxc , _add , len(mxc)) &&±N¦s©ñ°Ïªº¸ê®Æ,«þ³Æµ¹mxcµ²ºc
= GlobalFree (hMem)
³Ì¤pµ¶q = this.buf2dword (substr(mxc,101,4))
³Ì¤jµ¶q = this.buf2dword (substr(mxc,105,4))
this.VSlider.min = ³Ì¤pµ¶q
this.VSlider.max = ³Ì¤jµ¶q
*-------------------------------------------------------------------------------
vol = REPL(chr(0),4)
hmem = GlobalAlloc(0, Len(vol)) &&¥Ó½Ð¤@Ó¦s©ñ°Ï
_add = GlobalLock(hmem) && _add¬O¦s©ñ°Ïªº¦a§}
dwControlID = substr(mxc,5,4)
mxcd =; && µ²ºc MIXERCONTROLDETAILS
this.num2dword(24) +; && cbStruct ¿é¤J¥»µ²ºcªº¤j¤p long=1,4
dwControlID +; && dwControlID ¿é¤Jmxcªº dwControlID long=5,4
this.num2dword(1) +; && cChannels long=9,4
this.num2dword(0) +; && Item long=13,4
this.num2dword(len(vol)) +; && cbDetails ¿é¤J,¦s©ñ°Ïªº¤j¤p long=17,4
this.num2dword(_add) && °O¿ý,¦s©ñ°Ïªº¦a§} long=21,4
*** 24 byte
*-------------------------------------------------------------------------------
thisform.¨ú±oµ¶q
this.timer1.interval = 200 &&»Pwindowsªºµ¶q±±¨î¦P¨B, ¤£·Qªº¸Ü¥i¥H mark °_¨Ó
* ------- ¤U±µ{¦¡·|¶}±Òwindowsªºµ¶q±±¨î,¥i¥H§â¥¦mark ------
DECLARE INTEGER ShellExecute IN shell32 INTEGER, STRING, STRING, STRING, STRING, INTEGER
= ShellExecute (0, "open", "Sndvol32.exe", "", "", 1)
ENDPROC
PROCEDURE Timer1.Timer
thisform.¨ú±oµ¶q
ENDPROC
PROCEDURE ¨ú±oµ¶q
DECLARE RtlMoveMemory IN kernel32 As CopyMemory INTEGER @ Destination, INTEGER Source, INTEGER nLength
= mixerGetControlDetails (hmixer, @mxcd, 0) && MIXER_GETCONTROLDETAILSF_VALUE = 0
_add = this.buf2dword(substr(mxcd,21,4)) &&¦s©ñ°Ïªº¦a§}
vol = 4
= CopyMemory (@vol, _add, vol) &&±N _add«ü©w¦s©ñ°ÏªºÈ,«þ³Æµ¹vol
this.VSlider.value = ³Ì¤jµ¶q - vol
ENDPROC
PROCEDURE ³]©wµ¶q
DECLARE RtlMoveMemory IN kernel32 As CopyMemory INTEGER Destination, STRING @ Source, INTEGER nLength
_add = this.buf2dword(substr(mxcd,21,4)) &&¦s©ñ°Ïªº¦a§}
vol = this.num2dword(³Ì¤jµ¶q - this.VSlider.value) &&³]©wµ¶qªºÈ
= CopyMemory (_add , @vol , 4) &&±NvolªºÈ,«þ³Æ¦Ü _add©Ò«üªº¦s©ñ°Ï
= mixerSetControlDetails (hmixer, @mxcd, 0)
ENDPROC
PROCEDURE buf2Dword (v) &&±µ¦¬32¦ì¤¸¼Æȸê®Æ,¦^¶Ç¤Q¶i¦ì
RETURN ;
asc(substr(v, 1,1)) +;
asc(substr(v, 2,1)) * 256 +;
asc(substr(v, 3,1)) * 65536 +;
asc(substr(v, 4,1)) * 16777216
ENDPROC
PROCEDURE num2Dword (lnValue) &&±µ¦¬¤Q¶i¦ì,¦^¶Ç32¦ì¤¸¼Æȸê®Æ
#DEFINE m0 256
#DEFINE m1 65536
#DEFINE m2 16777216
LOCAL b0, b1, b2, b3
b3 = Int(lnValue/m2)
b2 = Int((lnValue - b3*m2)/m1)
b1 = Int((lnValue - b3*m2 - b2*m1)/m0)
b0 = Mod(lnValue, m0)
RETURN Chr(b0)+Chr(b1)+Chr(b2)+Chr(b3)
ENDPROC
ENDDEFINE
DEFINE CLASS Slider AS OLEcontrol
visible=.T.
PROCEDURE Scroll
thisform.³]©wµ¶q
ENDPROC
ENDDEFINE |
|
¦^³»ºÝ |
|
|
sunghsia
µù¥U®É¶¡: 2003-06-13 ¤å³¹: 52 ¨Ó¦Û: ¥x¥_
²Ä 2 ¼Ó
|
µoªí©ó: ¬P´Á¤ ¤E¤ë 30, 2005 2:09 pm ¤å³¹¥DÃD: |
|
|
¦b¶K<¥Dµ¶q>ªº®ÉÔ, ¦³¤@¨Ç¤å¦r¦n¹³·|³Q¦Y±¼,°õ¦æµ{¦¡®É,·|µo¥Í¿ù»~!!
¦³«þ³Æ<¥Dµ¶q>µ{¦¡ªº¤H,½Ð§Q¥Î°O¨Æ¥»:
±N: repl(chr(0),4 && µ²ºc MIXERLINE_TARGET, 48 byte
´«¦¨: repl(chr(0),4 && µ²ºc MIXERLINE_TARGET, 48 byte |
|
¦^³»ºÝ |
|
|
sunghsia
µù¥U®É¶¡: 2003-06-13 ¤å³¹: 52 ¨Ó¦Û: ¥x¥_
²Ä 3 ¼Ó
|
µoªí©ó: ¬P´Á¤ ¤E¤ë 30, 2005 2:17 pm ¤å³¹¥DÃD: |
|
|
¦b¶K<¥Dµ¶q>ªº®ÉÔ, ¦³¤@¨Ç¤å¦r¦n¹³·|³Q¦Y±¼,°õ¦æµ{¦¡®É,·|µo¥Í¿ù»~!!
¦³«þ³Æ<¥Dµ¶q>ªº¤H,½Ð§Q¥Î°O¨Æ¥»:
±N: repl(chr(0),4 && µ²ºc MIXERLINE_TARGET, 48 byte
´«¦¨: repl(chr(0),4¢·) && µ²ºc MIXERLINE_TARGET, 48 byte |
|
¦^³»ºÝ |
|
|
|
|
±z µLªk ¦b³oÓª©±µoªí¤å³¹ ±z µLªk ¦b³oÓª©±¦^ÂФ峹 ±z µLªk ¦b³oÓª©±½s¿è¤å³¹ ±z µLªk ¦b³oÓª©±§R°£¤å³¹ ±z µLªk ¦b³oÓª©±¶i¦æ§ë²¼ ±z µLªk ¦b³oÓª©±ªþ¥[ÀÉ®× ±z µLªk ¦b³oÓª©±¤U¸üÀÉ®×
|
Powered by phpBB © 2001, 2005 phpBB Group ¥¿Å餤¤å»y¨t¥Ñ phpbb-tw ºûÅ@»s§@
|