分享成果,隨喜正能量】人生就不會事事如意,樣樣隨心,學會寬慰自己,懂得安慰自己。世上就沒有最好,何必要強迫自己,盡心了,無論結果如何都可以。人生難料,難料人生。人吧,融入這個社會很容易,理解這個社會很難,懂這個社會里的人更是難如上青天。??。
跟我學VBA,我這里專注VBA, 授人以漁。我98年開始,從源碼接觸VBA已經20余年了,隨著年齡的增長,越來越覺得有必要把這項技能傳遞給需要這項技術的職場人員。希望職場和數據打交道的朋友,都來學習VBA,利用VBA,起碼可以提高自己的工作效率,可以有時間多陪陪父母,多陪陪家人,何樂而不為呢?
這講我們繼續學習64位Office API聲明語句第92講,這些內容是MS的權威資料,看似枯燥,但對于想學習API函數的朋友是非常有用的。
當學員學習到高級階段,如果引用API,這個資料可以直接查到64位寫法。大多數情況下我們是將低版本的程序文件升級到高版本,這時您就不必為如下的錯誤提示所困擾了:
Type WAVEHDR
lpData As String
dwBufferLength As Long
dwBytesRecorded As Long
dwUser As LongPtr
dwFlags As Long
dwLoops As Long
lpNext As LongPtr
Reserved As LongPtr
End Type
' flags for dwFlags field of WAVEHDR
Const WHDR_DONE = &H1 ' done bit
Const WHDR_PREPARED = &H2 ' set if this header has been prepared
Const WHDR_BEGINLOOP = &H4 ' loop start block
Const WHDR_ENDLOOP = &H8 ' loop end block
Const WHDR_INQUEUE = &H10 ' reserved for driver
Const WHDR_VALID = &H1F ' valid flags / ;Internal /
Type WAVEOUTCAPS
wMid As Integer
wPid As Integer
vDriverVersion As Long
szPname(0 To MAXPNAMELEN - 1) As Byte
dwFormats As Long
wChannels As Integer
wReserved1 As Integer
dwSupport As Long
End Type
' flags for dwSupport field of WAVEOUTCAPS
Const WAVECAPS_PITCH = &H1 ' supports pitch control
Const WAVECAPS_PLAYBACKRATE = &H2 ' supports playback rate control
Const WAVECAPS_VOLUME = &H4 ' supports volume control
Const WAVECAPS_LRVOLUME = &H8 ' separate left-right volume control
Const WAVECAPS_SYNC = &H10
Type WAVEINCAPS
wMid As Integer
wPid As Integer
vDriverVersion As Long
szPname(0 To MAXPNAMELEN - 1) As Byte
dwFormats As Long
wChannels As Integer
wReserved1 As Integer
End Type
' defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS
Const WAVE_INVALIDFORMAT = &H0 ' invalid format
Const WAVE_FORMAT_1M08 = &H1 ' 11.025 kHz, Mono, 8-bit
Const WAVE_FORMAT_1S08 = &H2 ' 11.025 kHz, Stereo, 8-bit
Const WAVE_FORMAT_1M16 = &H4 ' 11.025 kHz, Mono, 16-bit
Const WAVE_FORMAT_1S16 = &H8 ' 11.025 kHz, Stereo, 16-bit
Const WAVE_FORMAT_2M08 = &H10 ' 22.05 kHz, Mono, 8-bit
Const WAVE_FORMAT_2S08 = &H20 ' 22.05 kHz, Stereo, 8-bit
Const WAVE_FORMAT_2M16 = &H40 ' 22.05 kHz, Mono, 16-bit
Const WAVE_FORMAT_2S16 = &H80 ' 22.05 kHz, Stereo, 16-bit
Const WAVE_FORMAT_4M08 = &H100 ' 44.1 kHz, Mono, 8-bit
Const WAVE_FORMAT_4S08 = &H200 ' 44.1 kHz, Stereo, 8-bit
Const WAVE_FORMAT_4M16 = &H400 ' 44.1 kHz, Mono, 16-bit
Const WAVE_FORMAT_4S16 = &H800 ' 44.1 kHz, Stereo, 16-bit
' flags for wFormatTag field of WAVEFORMAT
Const WAVE_FORMAT_PCM = 1 ' Needed in resource files so outside #ifndef RC_INVOKED
Type WAVEFORMAT
wFormatTag As Integer
nChannels As Integer
nSamplesPerSec As Long
nAvgBytesPerSec As Long
nBlockAlign As Integer
End Type
Type WAVEFORMATEX
wFormatTag As Integer
nChannels As Integer
nSamplesPerSec As Long
nAvgBytesPerSec As Long
nBlockAlign As Integer
wBitsPerSample As Integer
cbSize As Integer
End Type
Type PCMWAVEFORMAT
wf As WAVEFORMAT
wBitsPerSample As Integer
End Type
Declare PtrSafe Function waveOutGetNumDevs Lib "winmm.dll" Alias "waveOutGetNumDevs" () As Long
Declare PtrSafe Function waveOutGetDevCaps Lib "winmm.dll" Alias "waveOutGetDevCapsA" (ByVal uDeviceID As LongPtr, lpCaps As WAVEOUTCAPS, ByVal uSize As Long) As Long
Declare PtrSafe Function waveOutGetVolume Lib "winmm.dll" Alias "waveOutGetVolume" (ByVal uDeviceID As LongPtr, lpdwVolume As Long) As Long
Declare PtrSafe Function waveOutSetVolume Lib "winmm.dll" Alias "waveOutSetVolume" (ByVal uDeviceID As LongPtr, ByVal dwVolume As Long) As Long
Declare PtrSafe Function waveOutGetErrorText Lib "winmm.dll" Alias "waveOutGetErrorTextA" (ByVal err As Long, ByVal lpText As String, ByVal uSize As Long) As Long
Declare PtrSafe Function waveOutOpen Lib "winmm.dll" Alias "waveOutOpen" (lphWaveOut As LongPtr, ByVal uDeviceID As Long, lpFormat As WAVEFORMATEX, ByVal dwCallback As LongPtr, ByVal dwInstance As LongPtr, ByVal dwFlags As Long) As Long
Declare PtrSafe Function waveOutClose Lib "winmm.dll" Alias "waveOutClose" (ByVal hWaveOut As LongPtr) As Long
Declare PtrSafe Function waveOutPrepareHeader Lib "winmm.dll" Alias "waveOutPrepareHeader" (ByVal hWaveOut As LongPtr, lpWaveOutHdr As WAVEHDR, ByVal uSize As Long) As Long
Declare PtrSafe Function waveOutUnprepareHeader Lib "winmm.dll" Alias "waveOutUnprepareHeader" (ByVal hWaveOut As LongPtr, lpWaveOutHdr As WAVEHDR, ByVal uSize As Long) As Long
Declare PtrSafe Function waveOutWrite Lib "winmm.dll" Alias "waveOutWrite" (ByVal hWaveOut As LongPtr, lpWaveOutHdr As WAVEHDR, ByVal uSize As Long) As Long
Declare PtrSafe Function waveOutPause Lib "winmm.dll" Alias "waveOutPause" (ByVal hWaveOut As LongPtr) As Long
Declare PtrSafe Function waveOutRestart Lib "winmm.dll" Alias "waveOutRestart" (ByVal hWaveOut As LongPtr) As Long
Declare PtrSafe Function waveOutReset Lib "winmm.dll" Alias "waveOutReset" (ByVal hWaveOut As LongPtr) As Long
Declare PtrSafe Function waveOutBreakLoop Lib "winmm.dll" Alias "waveOutBreakLoop" (ByVal hWaveOut As LongPtr) As Long
Declare PtrSafe Function waveOutGetPosition Lib "winmm.dll" Alias "waveOutGetPosition" (ByVal hWaveOut As LongPtr, lpInfo As MMTIME, ByVal uSize As Long) As Long
Declare PtrSafe Function waveOutGetPitch Lib "winmm.dll" Alias "waveOutGetPitch" (ByVal hWaveOut As LongPtr, lpdwPitch As Long) As Long
Declare PtrSafe Function waveOutSetPitch Lib "winmm.dll" Alias "waveOutSetPitch" (ByVal hWaveOut As LongPtr, ByVal dwPitch As Long) As Long
Declare PtrSafe Function waveOutGetPlaybackRate Lib "winmm.dll" Alias "waveOutGetPlaybackRate" (ByVal hWaveOut As LongPtr, lpdwRate As Long) As Long
Declare PtrSafe Function waveOutSetPlaybackRate Lib "winmm.dll" Alias "waveOutSetPlaybackRate" (ByVal hWaveOut As LongPtr, ByVal dwRate As Long) As Long
Declare PtrSafe Function waveOutGetID Lib "winmm.dll" Alias "waveOutGetID" (ByVal hWaveOut As LongPtr, lpuDeviceID As Long) As Long
Declare PtrSafe Function waveOutMessage Lib "winmm.dll" Alias "waveOutMessage" (ByVal hWaveOut As LongPtr, ByVal msg As Long, ByVal dw1 As LongPtr, ByVal dw2 As LongPtr) As Long
Declare PtrSafe Function waveInGetNumDevs Lib "winmm.dll" Alias "waveInGetNumDevs" () As Long
Declare PtrSafe Function waveInGetDevCaps Lib "winmm.dll" Alias "waveInGetDevCapsA" (ByVal uDeviceID As LongPtr, lpCaps As WAVEINCAPS, ByVal uSize As Long) As Long
Declare PtrSafe Function waveInGetErrorText Lib "winmm.dll" Alias "waveInGetErrorTextA" (ByVal err As Long, ByVal lpText As String, ByVal uSize As Long) As Long
Declare PtrSafe Function waveInOpen Lib "winmm.dll" Alias "waveInOpen" (lphWaveIn As LongPtr, ByVal uDeviceID As Long, lpFormat As WAVEFORMATEX, ByVal dwCallback As LongPtr, ByVal dwInstance As LongPtr, ByVal dwFlags As Long) As Long
Declare PtrSafe Function waveInClose Lib "winmm.dll" Alias "waveInClose" (ByVal hWaveIn As LongPtr) As Long
Declare PtrSafe Function waveInPrepareHeader Lib "winmm.dll" Alias "waveInPrepareHeader" (ByVal hWaveIn As LongPtr, lpWaveInHdr As WAVEHDR, ByVal uSize As Long) As Long
Declare PtrSafe Function waveInUnprepareHeader Lib "winmm.dll" Alias "waveInUnprepareHeader" (ByVal hWaveIn As LongPtr, lpWaveInHdr As WAVEHDR, ByVal uSize As Long) As Long
Declare PtrSafe Function waveInAddBuffer Lib "winmm.dll" Alias "waveInAddBuffer" (ByVal hWaveIn As LongPtr, lpWaveInHdr As WAVEHDR, ByVal uSize As Long) As Long
Declare PtrSafe Function waveInStart Lib "winmm.dll" Alias "waveInStart" (ByVal hWaveIn As LongPtr) As Long
Declare PtrSafe Function waveInStop Lib "winmm.dll" Alias "waveInStop" (ByVal hWaveIn As LongPtr) As Long
Declare PtrSafe Function waveInReset Lib "winmm.dll" Alias "waveInReset" (ByVal hWaveIn As LongPtr) As Long
Declare PtrSafe Function waveInGetPosition Lib "winmm.dll" Alias "waveInGetPosition" (ByVal hWaveIn As LongPtr, lpInfo As MMTIME, ByVal uSize As Long) As Long
Declare PtrSafe Function waveInGetID Lib "winmm.dll" Alias "waveInGetID" (ByVal hWaveIn As LongPtr, lpuDeviceID As Long) As Long
Declare PtrSafe Function waveInMessage Lib "winmm.dll" Alias "waveInMessage" (ByVal hWaveIn As LongPtr, ByVal msg As Long, ByVal dw1 As LongPtr, ByVal dw2 As LongPtr) As Long
我20多年的VBA實踐經驗,全部濃縮在下面的各個教程中:
【分享成果,隨喜正能量】人到中年,最好的狀態就是,低配你的生活,高配你的靈魂,
年齡只是符號,把生活調到你喜歡的頻道,每一段時光都藏著不可復制的美好。。
本文原文鏈接:https://learnblockchain.cn/docs/etherscan/Accounts.html
點擊這里獲取Etherscan API 中文文檔(完整版):https://learnblockchain.cn/docs/etherscan/
完整內容排版更好,推薦讀者前往閱讀。
賬號及地址相關的 API,接口的參數說明請參考Etherscan API 約定, 文檔中不單獨說明。
獲取單個賬號余額
譯者注: 英文 `balance` 有人翻譯為`金額`,譯者習慣稱為`余額`。 賬號和地址大部分也是指一個意思。
接口:
/api?module=account&action=balance&address=0x&tag=latest&apikey=YourApiKeyToken
返回:
{ status: "1", message: "OK", result: "40807178566070000000000" }
說明:
余額的單位都是最小單位wei, 更多單位換算可閱讀:以太單位換算
請求樣例URL,點擊可在瀏覽器查看效果。
獲取多個賬號余額
接口:
/api?module=account&action=balancemulti&address=0xabc,0x63..,0x198..&tag=latest&apikey=YourApiKeyToken
使用,來分割地址,一次請求最多20個賬號。
返回:
{ status: "1", message: "OK", result: [ { account: "0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a", balance: "40807178566070000000000" }, { account: "0x63a9975ba31b0b9626b34300f7f627147df1f526", balance: "332567136222827062478" } ] }
請求樣例URL
獲取地址(普通)交易列表
接口:
/api?module=account&action=txlist&address=&apikey=YourApiKeyToken
可選參數:startblock 、endblock、sort
返回:
{ "status": "1", "message": "OK", "result": [{ "blockNumber": "47884", "timeStamp": "1438947953", "hash": "0xad1c27dd8d0329dbc400021d7477b34ac41e84365bd54b45a4019a15deb10c0d", "nonce": "0", "blockHash": "0xf2988b9870e092f2898662ccdbc06e0e320a08139e9c6be98d0ce372f8611f22", "transactionIndex": "0", "from": "0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a", "to": "0x2910543af39aba0cd09dbb2d50200b3e800a63d2", "value": "5000000000000000000", "gas": "23000", "gasPrice": "400000000000", "isError": "0", "txreceipt_status": "", "input": "0x454e34354139455138", "contractAddress": "", "cumulativeGasUsed": "21612", "gasUsed": "21612", "confirmations": "7525550" }] }
說明:
isError: 0= 沒錯, 1=出錯
最多返回最近的10000個交易
返回字段中出現的關鍵字可參考以太坊設計與實現-術語。
請求樣例URL
也可以使用分頁,參數說明請參考Etherscan API 約定,分頁請求樣例URL
點擊獲取Etherscan API 中文文檔(完整版)
示意圖:
相關文檔推薦:
Solidity 中文文檔(完整版)
ethers.js 中文文檔(完整版)
Web3.js 中文文檔(完整版)
Truffle 中文文檔(完整版)