| /* |
| * Speech API (SAPI) IDL file. |
| * |
| * Copyright (C) 2017 Huw Davies |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| import "oaidl.idl"; |
| import "ocidl.idl"; |
| |
| #ifndef __WIDL__ |
| #define threading(model) |
| #define progid(str) |
| #define vi_progid(str) |
| #endif |
| |
| typedef [hidden] enum SPDATAKEYLOCATION |
| { |
| SPDKL_DefaultLocation = 0, |
| SPDKL_CurrentUser = 1, |
| SPDKL_LocalMachine = 2, |
| SPDKL_CurrentConfig = 5 |
| } SPDATAKEYLOCATION; |
| |
| cpp_quote("#if defined(__GNUC__)") |
| |
| cpp_quote("#define SPCAT_AUDIOOUT (const WCHAR []){ 'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','A','u','d','i','o','O','u','t','p','u','t',0 }") |
| cpp_quote("#define SPCAT_AUDIOIN (const WCHAR []){ 'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','A','u','d','i','o','I','n','p','u','t',0 }") |
| cpp_quote("#define SPCAT_VOICES (const WCHAR []){ 'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','V','o','i','c','e','s',0 }") |
| |
| cpp_quote("#elif defined(_MSC_VER)") |
| |
| cpp_quote("#define SPCAT_AUDIOOUT L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AudioOutput\"") |
| cpp_quote("#define SPCAT_AUDIOIN L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AudioInput\"") |
| cpp_quote("#define SPCAT_VOICES L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\Voices\"") |
| |
| cpp_quote("#else") |
| |
| cpp_quote("static const WCHAR SPCAT_AUDIOOUT[] = {'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','A','u','d','i','o','O','u','t','p','u','t',0};") |
| cpp_quote("static const WCHAR SPCAT_AUDIOIN[] = {'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','A','u','d','i','o','I','n','p','u','t',0};") |
| cpp_quote("static const WCHAR SPCAT_VOICES[] = {'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','V','o','i','c','e','s',0};") |
| |
| cpp_quote("#endif") |
| |
| interface IEnumSpObjectTokens; |
| |
| [ |
| object, |
| uuid(14056581-e16c-11d2-bb90-00c04f8ee6c0), |
| helpstring("ISpDataKey"), |
| pointer_default(unique), |
| local, |
| restricted |
| ] |
| interface ISpDataKey : IUnknown |
| { |
| HRESULT SetData([in] LPCWSTR pszValueName, |
| [in] ULONG cbData, |
| [in] const BYTE *pData); |
| HRESULT GetData([in] LPCWSTR pszValueName, |
| [in] ULONG *pcbData, |
| [out] BYTE *pData); |
| HRESULT SetStringValue([in] LPCWSTR pszValueName, |
| [in] LPCWSTR pszValue); |
| HRESULT GetStringValue([in] LPCWSTR pszValueName, |
| [out] LPWSTR *ppszValue); |
| HRESULT SetDWORD([in] LPCWSTR pszValueName, |
| [in] DWORD dwValue); |
| HRESULT GetDWORD([in] LPCWSTR pszValueName, |
| [out] DWORD *pdwValue); |
| HRESULT OpenKey([in] LPCWSTR pszSubKeyName, |
| [out] ISpDataKey **ppSubKey); |
| HRESULT CreateKey([in] LPCWSTR pszSubKey, |
| [out] ISpDataKey **ppSubKey); |
| HRESULT DeleteKey([in] LPCWSTR pszSubKey); |
| HRESULT DeleteValue([in] LPCWSTR pszValueName); |
| HRESULT EnumKeys([in] ULONG Index, |
| [out] LPWSTR *ppszSubKeyName); |
| HRESULT EnumValues([in] ULONG Index, |
| [out] LPWSTR *ppszValueName); |
| } |
| [ |
| object, |
| uuid(92a66e2b-c830-4149-83df-6fc2ba1e7a5b), |
| helpstring("ISpRegDataKey"), |
| pointer_default(unique), |
| restricted |
| ] |
| interface ISpRegDataKey : ISpDataKey |
| { |
| [local] HRESULT SetKey([in] HKEY hkey, [in] BOOL fReadOnly); |
| } |
| |
| [ |
| object, |
| uuid(2d3d3845-39af-4850-bbf9-40b49780011d), |
| helpstring("ISpObjectTokenCategory"), |
| pointer_default(unique), |
| local, |
| restricted |
| ] |
| interface ISpObjectTokenCategory : ISpDataKey |
| { |
| HRESULT SetId([in] LPCWSTR pszCategoryId, |
| [in] BOOL fCreateIfNotExist); |
| HRESULT GetId([out] LPWSTR *ppszCoMemCategoryId); |
| HRESULT GetDataKey([in] SPDATAKEYLOCATION spdkl, |
| [out] ISpDataKey **ppDataKey); |
| HRESULT EnumTokens([in, string] LPCWSTR pszReqAttribs, |
| [in, string] LPCWSTR pszOptAttribs, |
| [out] IEnumSpObjectTokens **ppEnum); |
| HRESULT SetDefaultTokenId([in] LPCWSTR pszTokenId); |
| HRESULT GetDefaultTokenId([out] LPWSTR *ppszCoMemTokenId); |
| } |
| |
| [ |
| object, |
| uuid(14056589-e16c-11d2-bb90-00c04f8ee6c0), |
| helpstring("ISpObjectToken"), |
| pointer_default(unique), |
| local, |
| restricted |
| ] |
| interface ISpObjectToken : ISpDataKey |
| { |
| HRESULT SetId(/*[in]*/ LPCWSTR pszCategoryId, |
| [in] LPCWSTR pszTokenId, |
| [in] BOOL fCreateIfNotExist); |
| HRESULT GetId([out] LPWSTR *ppszCoMemTokenId); |
| HRESULT GetCategory([out] ISpObjectTokenCategory **ppTokenCategory); |
| HRESULT CreateInstance([in] IUnknown *pUnkOuter, |
| [in] DWORD dwClsContext, |
| [in] REFIID riid, |
| [out, iid_is(riid)] void **ppvObject); |
| HRESULT GetStorageFileName([in] REFCLSID clsidCaller, |
| [in] LPCWSTR pszValueName, |
| [in, string] LPCWSTR pszFileNameSpecifier, |
| [in] ULONG nFolder, |
| [out] LPWSTR *ppszFilePath); |
| HRESULT RemoveStorageFileName([in] REFCLSID clsidCaller, |
| [in] LPCWSTR pszKeyName, |
| [in] BOOL fDeleteFile); |
| HRESULT Remove(/*[in]*/ const CLSID *pclsidCaller); |
| [local] HRESULT IsUISupported([in] LPCWSTR pszTypeOfUI, |
| [in] void *pvExtraData, |
| [in] ULONG cbExtraData, |
| [in] IUnknown *punkObject, |
| [out] BOOL *pfSupported); |
| [local] HRESULT DisplayUI([in] HWND hwndParent, |
| [in] LPCWSTR pszTitle, |
| [in] LPCWSTR pszTypeOfUI, |
| [in] void *pvExtraData, |
| [in] ULONG cbExtraData, |
| [in] IUnknown *punkObject); |
| HRESULT MatchesAttributes([in] LPCWSTR pszAttributes, |
| [out] BOOL *pfMatches); |
| } |
| |
| [ |
| object, |
| uuid(06b64f9e-7fda-11d2-b4f2-00c04f797396), |
| helpstring("IEnumSpObjectTokens"), |
| pointer_default(unique), |
| local, |
| restricted |
| ] |
| interface IEnumSpObjectTokens : IUnknown |
| { |
| HRESULT Next([in] ULONG celt, |
| [out, size_is(celt), length_is(*pceltFetched)] ISpObjectToken **pelt, |
| [out] ULONG *pceltFetched); |
| HRESULT Skip([in] ULONG celt); |
| HRESULT Reset(void); |
| HRESULT Clone([out] IEnumSpObjectTokens **ppEnum); |
| HRESULT Item([in] ULONG Index, |
| [out] ISpObjectToken **ppToken); |
| HRESULT GetCount([out] ULONG *pCount); |
| } |
| |
| [ |
| helpstring("Speech Object Library"), |
| uuid(c866ca3a-32f7-11d2-9602-00c04f8ee628), |
| version(5.4) |
| ] |
| library SpeechLib |
| { |
| importlib("stdole2.tlb"); |
| |
| [ |
| uuid(a910187f-0c7a-45ac-92cc-59edafb77b53), |
| helpstring("SpObjectTokenCategory Class"), |
| progid("SAPI.SpObjectTokenCategory.1"), |
| vi_progid("SAPI.SpObjectTokenCategory"), |
| threading(both) |
| ] |
| coclass SpObjectTokenCategory |
| { |
| interface ISpObjectTokenCategory; |
| } |
| } |