; SAPI 5.1 ; GUIDS --------------------------------------------------------------------------- .data CLSID_SpVoice GUID {096749377h,03391h,011D2h,<09Eh,0E3h,000h,0C0h,04Fh,079h,073h,096h>} IID_ISpVoice GUID {06C44DF74h,072B9h,04992h,<0A1h,0ECh,0EFh,099h,06Eh,004h,022h,0D4h>} .const TEXT_ MACRO your_text:VARARG LOCAL text_string .data text_string db your_text,0 .code EXITM ENDM ;Com CoMethod1Proto typedef proto :DWORD CoMethod2Proto typedef proto :DWORD, :DWORD CoMethod3Proto typedef proto :DWORD, :DWORD, :DWORD CoMethod4Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD CoMethod5Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod6Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod7Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod8Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod9Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod10Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod11Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod12Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod13Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod14Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod15Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CoMethod1 typedef ptr CoMethod1Proto CoMethod2 typedef ptr CoMethod2Proto CoMethod3 typedef ptr CoMethod3Proto CoMethod4 typedef ptr CoMethod4Proto CoMethod5 typedef ptr CoMethod5Proto CoMethod6 typedef ptr CoMethod6Proto CoMethod7 typedef ptr CoMethod7Proto CoMethod8 typedef ptr CoMethod8Proto CoMethod9 typedef ptr CoMethod9Proto CoMethod10 typedef ptr CoMethod10Proto CoMethod11 typedef ptr CoMethod11Proto CoMethod12 typedef ptr CoMethod12Proto CoMethod13 typedef ptr CoMethod13Proto CoMethod14 typedef ptr CoMethod14Proto CoMethod15 typedef ptr CoMethod15Proto _vtIUnknown MACRO Name:REQ &Name&_QueryInterface CoMethod3 ? &Name&_AddRef CoMethod1 ? &Name&_Release CoMethod1 ? ENDM IUnknown struct _vtIUnknown IUnknown IUnknown ends coinvoke MACRO pInterface:REQ, Interface:REQ, Function:REQ, args:VARARG LOCAL istatement, arg FOR arg, ;; run thru args to see if edx is lurking in there IFIDNI <&arg>, .ERR ENDIF ENDM istatement CATSTR ,<_>,<&Function, pInterface> IFNB ;; add the list of parameter arguments if any istatement CATSTR istatement, <, >, <&args> ENDIF mov edx, pInterface mov edx, [edx] istatement ENDM RELEASE_INTERFACE MACRO Interface:REQ .if &Interface != 0 coinvoke Interface,IUnknown,Release mov Interface,0 .endif ENDM ; INTERFACES --------------------------------------------------------------------------- _vtISpVoice MACRO Name:REQ ;; IUnknown Methods _vtIUnknown Name ;; ISpVoice Methods &Name&_SetNotifySink CoMethod1 ? &Name&_SetNotifyWindowMessage CoMethod5 ? &Name&_SetNotifyCallbackFunction CoMethod4 ? &Name&_SetNotifyCallbackInterface CoMethod4 ? &Name&_SetNotifyWin32Event CoMethod1 ? &Name&_WaitForNotifyEvent CoMethod2 ? &Name&_GetNotifyEventHandl CoMethod1 ? &Name&_SetInterest CoMethod3 ? &Name&_GetEvents CoMethod4 ? &Name&_GetInfo CoMethod2 ? &Name&_SetOutput CoMethod3 ? &Name&_GetOutputObjectToken CoMethod2 ? &Name&_GetOutputStream CoMethod2 ? &Name&_Pause CoMethod1 ? &Name&_Resume CoMethod1 ? &Name&_SetVoice CoMethod2 ? &Name&_GetVoice CoMethod2 ? &Name&_Speak CoMethod4 ? &Name&_SpeakStream CoMethod4 ? &Name&_GetStatus CoMethod3 ? &Name&_Skip CoMethod4 ? &Name&_SetPriority CoMethod2 ? &Name&_GetPriority CoMethod2 ? &Name&_SetAlertBoundary CoMethod2 ? &Name&_GetAlertBoundary CoMethod2 ? &Name&_SetRate CoMethod2 ? &Name&_GetRate CoMethod2 ? &Name&_SetVolume CoMethod2 ? &Name&_GetVolume CoMethod2 ? &Name&_WaitUntilDone CoMethod2 ? &Name&_SetSyncSpeakTimeout CoMethod2 ? &Name&_GetSyncSpeakTimeout CoMethod2 ? &Name&_SpeakCompleteEvent CoMethod1 ? &Name&_IsUISupported CoMethod5 ? &Name&_DisplayUI CoMethod6 ? ENDM ISpVoice struct dword _vtISpVoice ISpVoice ISpVoice ends SpVoice TYPEDEF PTR ISpVoice SPF_DEFAULT equ 0 SPF_ASYNC equ 1 SPF_PURGEBEFORESPEAK equ 2 SPF_IS_FILENAME equ 4 SPF_IS_XML equ 8 SPF_IS_NOT_XML equ 16 SPF_PERSIST_XML equ 32 SPF_NLP_SPEAK_PUNC equ 64 SPF_NLP_MASK equ SPF_NLP_SPEAK_PUNC SPF_VOICE_MASK equ SPF_ASYNC or SPF_PURGEBEFORESPEAK or SPF_IS_FILENAME or SPF_IS_XML or SPF_IS_NOT_XML or SPF_NLP_MASK or SPF_PERSIST_XML SPF_UNUSED_FLAGS equ NOT SPF_VOICE_MASK