2 * Speech API (SAPI) IDL file.
4 * Copyright (C) 2017 Huw Davies
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
25 #define threading
(model
)
27 #define vi_progid
(str
)
30 typedef [hidden] enum SPDATAKEYLOCATION
32 SPDKL_DefaultLocation
= 0,
33 SPDKL_CurrentUser
= 1,
34 SPDKL_LocalMachine
= 2,
35 SPDKL_CurrentConfig
= 5
38 cpp_quote
("#if defined(__GNUC__)")
40 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 }")
41 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 }")
42 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 }")
44 cpp_quote
("#elif defined(_MSC_VER)")
46 cpp_quote
("#define SPCAT_AUDIOOUT L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AudioOutput\"")
47 cpp_quote
("#define SPCAT_AUDIOIN L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AudioInput\"")
48 cpp_quote
("#define SPCAT_VOICES L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\Voices\"")
52 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};")
53 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};")
54 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};")
58 interface IEnumSpObjectTokens
;
62 uuid(14056581-e16c
-11d2
-bb90
-00c04f8ee6c0
),
63 helpstring("ISpDataKey"),
64 pointer_default(unique),
68 interface ISpDataKey
: IUnknown
70 HRESULT SetData
([in] LPCWSTR pszValueName
,
72 [in] const BYTE *pData
);
73 HRESULT GetData
([in] LPCWSTR pszValueName
,
76 HRESULT SetStringValue
([in] LPCWSTR pszValueName
,
77 [in] LPCWSTR pszValue
);
78 HRESULT GetStringValue
([in] LPCWSTR pszValueName
,
79 [out] LPWSTR
*ppszValue
);
80 HRESULT SetDWORD
([in] LPCWSTR pszValueName
,
82 HRESULT GetDWORD
([in] LPCWSTR pszValueName
,
83 [out] DWORD
*pdwValue
);
84 HRESULT OpenKey
([in] LPCWSTR pszSubKeyName
,
85 [out] ISpDataKey
**ppSubKey
);
86 HRESULT CreateKey
([in] LPCWSTR pszSubKey
,
87 [out] ISpDataKey
**ppSubKey
);
88 HRESULT DeleteKey
([in] LPCWSTR pszSubKey
);
89 HRESULT DeleteValue
([in] LPCWSTR pszValueName
);
90 HRESULT EnumKeys
([in] ULONG Index
,
91 [out] LPWSTR
*ppszSubKeyName
);
92 HRESULT EnumValues
([in] ULONG Index
,
93 [out] LPWSTR
*ppszValueName
);
97 uuid(92a66e2b
-c830
-4149-83df
-6fc2ba1e7a5b
),
98 helpstring("ISpRegDataKey"),
99 pointer_default(unique),
102 interface ISpRegDataKey
: ISpDataKey
104 [local] HRESULT SetKey
([in] HKEY hkey
, [in] BOOL fReadOnly
);
109 uuid(2d3d3845
-39af
-4850-bbf9
-40b49780011d
),
110 helpstring("ISpObjectTokenCategory"),
111 pointer_default(unique),
115 interface ISpObjectTokenCategory
: ISpDataKey
117 HRESULT SetId
([in] LPCWSTR pszCategoryId
,
118 [in] BOOL fCreateIfNotExist
);
119 HRESULT GetId
([out] LPWSTR
*ppszCoMemCategoryId
);
120 HRESULT GetDataKey
([in] SPDATAKEYLOCATION spdkl
,
121 [out] ISpDataKey
**ppDataKey
);
122 HRESULT EnumTokens
([in, string] LPCWSTR pszReqAttribs
,
123 [in, string] LPCWSTR pszOptAttribs
,
124 [out] IEnumSpObjectTokens
**ppEnum
);
125 HRESULT SetDefaultTokenId
([in] LPCWSTR pszTokenId
);
126 HRESULT GetDefaultTokenId
([out] LPWSTR
*ppszCoMemTokenId
);
131 uuid(14056589-e16c
-11d2
-bb90
-00c04f8ee6c0
),
132 helpstring("ISpObjectToken"),
133 pointer_default(unique),
137 interface ISpObjectToken
: ISpDataKey
139 HRESULT SetId
(/*[in]*/ LPCWSTR pszCategoryId
,
140 [in] LPCWSTR pszTokenId
,
141 [in] BOOL fCreateIfNotExist
);
142 HRESULT GetId
([out] LPWSTR
*ppszCoMemTokenId
);
143 HRESULT GetCategory
([out] ISpObjectTokenCategory
**ppTokenCategory
);
144 HRESULT CreateInstance
([in] IUnknown
*pUnkOuter
,
145 [in] DWORD dwClsContext
,
147 [out, iid_is(riid
)] void **ppvObject
);
148 HRESULT GetStorageFileName
([in] REFCLSID clsidCaller
,
149 [in] LPCWSTR pszValueName
,
150 [in, string] LPCWSTR pszFileNameSpecifier
,
152 [out] LPWSTR
*ppszFilePath
);
153 HRESULT RemoveStorageFileName
([in] REFCLSID clsidCaller
,
154 [in] LPCWSTR pszKeyName
,
155 [in] BOOL fDeleteFile
);
156 HRESULT Remove
(/*[in]*/ const CLSID
*pclsidCaller
);
157 [local] HRESULT IsUISupported
([in] LPCWSTR pszTypeOfUI
,
158 [in] void *pvExtraData
,
159 [in] ULONG cbExtraData
,
160 [in] IUnknown
*punkObject
,
161 [out] BOOL
*pfSupported
);
162 [local] HRESULT DisplayUI
([in] HWND hwndParent
,
163 [in] LPCWSTR pszTitle
,
164 [in] LPCWSTR pszTypeOfUI
,
165 [in] void *pvExtraData
,
166 [in] ULONG cbExtraData
,
167 [in] IUnknown
*punkObject
);
168 HRESULT MatchesAttributes
([in] LPCWSTR pszAttributes
,
169 [out] BOOL
*pfMatches
);
174 uuid(06b64f9e
-7fda
-11d2
-b4f2
-00c04f797396
),
175 helpstring("IEnumSpObjectTokens"),
176 pointer_default(unique),
180 interface IEnumSpObjectTokens
: IUnknown
182 HRESULT Next
([in] ULONG celt
,
183 [out, size_is(celt
), length_is(*pceltFetched
)] ISpObjectToken
**pelt
,
184 [out] ULONG
*pceltFetched
);
185 HRESULT Skip
([in] ULONG celt
);
187 HRESULT Clone
([out] IEnumSpObjectTokens
**ppEnum
);
188 HRESULT Item
([in] ULONG Index
,
189 [out] ISpObjectToken
**ppToken
);
190 HRESULT GetCount
([out] ULONG
*pCount
);
194 helpstring("Speech Object Library"),
195 uuid(c866ca3a
-32f7
-11d2
-9602-00c04f8ee628
),
200 importlib
("stdole2.tlb");
203 uuid(a910187f
-0c7a
-45ac
-92cc
-59edafb77b53
),
204 helpstring("SpObjectTokenCategory Class"),
205 progid
("SAPI.SpObjectTokenCategory.1"),
206 vi_progid
("SAPI.SpObjectTokenCategory"),
209 coclass SpObjectTokenCategory
211 interface ISpObjectTokenCategory
;