On Thu, 26 Jan 2006, Peter Åstrand wrote:
Hi. I'm trying to get the EaseReader application (http://www.dolphinaudiopublishing.com/products/EaseReader/) running in Wine. By using the native oleacc, oleaut32 and rpcrt4, it's now actually possible to start the application. The "self voicing" mode also works: The application "speaks", for example when hovering above menu choices. Listening to the actual DAISY book does not work, however. I get:
fixme:imm:ImmGetContext (0x10136): stub fixme:imm:ImmGetContext (0x10136): stub fixme:amstream:IAMMultiMediaStreamImpl_QueryInterface (0x7a4fdc50/0x7a4fdc50)->({bebe595c-9a6f-11d0-8fde-00c04fd9189d},0x7fc6e968) fixme:amstream:IAMMultiMediaStreamImpl_Initialize (0x7a4fdc50/0x7a4fdc50)->(0,1,(nil)) partial stub! fixme:amstream:IAMMultiMediaStreamImpl_AddMediaStream (0x7a4fdc50/0x7a4fdc50)->((nil),0x4b0d3200,0,(nil)) partial stub! fixme:amstream:IAMMultiMediaStreamImpl_OpenFile (0x7a4fdc50/0x7a4fdc50)->(L"c:\program files\easereader demo\help\22_highlig.mp3",8) stub!
It seems like the main problem is the IAMMultiMediaStreamImpl_OpenFile stub. I've tried a quick-n-dirty hack: Just calling ShellExecute from IAMMultiMediaStreamImpl_OpenFile. See the patch below. After installing Winamp, this actually works (but stop/seek etc doesn't work, of course).
So: Now I'm wondering: How difficult would it be to properly implement IAMMultiMediaStreamImpl_OpenFile?
Best Regards, Peter Åstrand
diff -u -r1.12 amstream.c --- amstream.c 7 Nov 2005 16:38:48 -0000 1.12 +++ amstream.c 1 Mar 2006 09:45:06 -0000 @@ -28,6 +28,7 @@
#include "winbase.h" #include "wingdi.h" +#include "shellapi.h"
#include "amstream_private.h" #include "amstream.h" @@ -284,6 +285,12 @@
FIXME("(%p/%p)->(%s,%lx) stub!\n", This, iface, debugstr_w(pszFileName), dwFlags);
+ if (dwFlags & AMMSF_RUN) { + static const WCHAR verbW[] = {'o', 'p', 'e', 'n', 0}; + ShellExecuteW(NULL, verbW, pszFileName, NULL, NULL, SW_SHOWNORMAL); + return S_OK; + } + return E_NOTIMPL; }