MS-Mediaplayer don't work [message #454791] |
Thu, 28 April 2005 22:03 |
Eclipse User |
|
|
|
Originally posted by: schmuhan.web4schmutz.ch
I like to write a MediaPlayer-widget for WMP V9 acting like SWT.Browser.
I'm always receiving an unexpected exception if I activate it with:
site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at
PC=0x4B64F839
Function=DllGetClassObject+0x2E8C4
Library=C:\WINNT\system32\wmp.dll
If I activate it with "OLEIVERB_SHOW" doesn't occur an exception but it
doesn't show the video using all the frame space.
I'm new to SWT and OLE and I hope you can give me same help or is this an
problem with MS-MediaPlayer?
Thanks Hanspeter
parts of the code:
public class MMediaPlayer extends Composite
{
OleFrame frame;
OleControlSite site;
OleAutomation auto;
public MMediaPlayer(Composite parent, int style)
{
super(parent, style & ~SWT.BORDER);
frame = new OleFrame(this, SWT.NONE);
try
{
site = new OleControlSite(frame, SWT.NONE, "WMPlayer.OCX.7");
//$NON-NLS-1$
}
catch (SWTException e)
{
dispose();
SWT.error(SWT.ERROR_NO_HANDLES);
}
site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
auto = new OleAutomation(site);
}
public String getStatus()
{
checkWidget();
int[] rgdispid = auto.getIDsOfNames(new String[]
{ "status" }); //$NON-NLS-1$
Variant pVarResult = auto.getProperty(rgdispid[0]);
if (pVarResult == null || pVarResult.getType() != OLE.VT_BSTR)
return "";
String result = pVarResult.getString();
pVarResult.dispose();
return result;
}
public boolean isRemote()
{
checkWidget();
int[] rgdispid = auto.getIDsOfNames(new String[]
{ "isRemote" }); //$NON-NLS-1$
Variant pVarResult = auto.getProperty(rgdispid[0]);
if (pVarResult == null || pVarResult.getType() != OLE.VT_BOOL)
return false;
boolean result = pVarResult.getBoolean();
pVarResult.dispose();
return result;
}
public boolean setUiMode(String mode)
{
checkWidget();
if (mode == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
int[] rgdispid = auto.getIDsOfNames(new String[]
{ "uiMode" }); //$NON-NLS-1$
boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
return result;
}
public boolean setMpEnabled(boolean mode)
{
checkWidget();
int[] rgdispid = auto.getIDsOfNames(new String[]
{ "enabled" }); //$NON-NLS-1$
boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
return result;
}
public boolean setStretchToFit(boolean mode)
{
checkWidget();
int[] rgdispid = auto.getIDsOfNames(new String[]{ "stretchToFit"
}); //$NON-NLS-1$
boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
return result;
}
public boolean setAutoStart(boolean mode)
{
checkWidget();
int[] rgdispid = auto.getIDsOfNames(new String[]
{ "settings" }); //$NON-NLS-1$
Variant pVarResult = auto.getProperty(rgdispid[0]);
if (pVarResult == null || pVarResult.getType() == 0) return false;
OleAutomation settings = pVarResult.getAutomation();
rgdispid = settings.getIDsOfNames(new String[]
{ "autoStart" }); //$NON-NLS-1$
boolean result = settings.setProperty(rgdispid[0], new Variant(mode));
settings.dispose();
return result;
}
public boolean setWindowlessVideo(boolean mode)
{
checkWidget();
int[] rgdispid = auto.getIDsOfNames(new String[]
{ "windowlessVideo" }); //$NON-NLS-1$
boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
return result;
}
public boolean setFullScreen(boolean mode)
{
checkWidget();
int[] rgdispid = auto.getIDsOfNames(new String[]
{ "fullScreen" }); //$NON-NLS-1$
boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
return result;
}
public boolean setUrl(String url)
{
checkWidget();
if (url == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
int[] rgdispid = auto.getIDsOfNames(new String[]
{ "URL" }); //$NON-NLS-1$
boolean result = auto.setProperty(rgdispid[0], new Variant(url));
return result;
}
public void play()
{
checkWidget();
int[] rgdispid = auto.getIDsOfNames(new String[]
{ "controls" }); //$NON-NLS-1$
Variant pVarResult = auto.getProperty(rgdispid[0]);
if (pVarResult == null || pVarResult.getType() == 0) return;
OleAutomation controls = pVarResult.getAutomation();
rgdispid = controls.getIDsOfNames(new String[]
{ "play" }); //$NON-NLS-1$
controls.invoke(rgdispid[0]);
pVarResult.dispose();
controls.dispose();
}
public void stop()
{
checkWidget();
int[] rgdispid = auto.getIDsOfNames(new String[]
{ "controls" }); //$NON-NLS-1$
Variant pVarResult = auto.getProperty(rgdispid[0]);
if (pVarResult == null || pVarResult.getType() == 0) return;
OleAutomation controls = pVarResult.getAutomation();
rgdispid = controls.getIDsOfNames(new String[]
{ "stop" }); //$NON-NLS-1$
controls.invoke(rgdispid[0]);
pVarResult.dispose();
controls.dispose();
}
}
|
|
|
Re: MS-Mediaplayer don't work [message #454930 is a reply to message #454791] |
Tue, 03 May 2005 00:44 |
Eclipse User |
|
|
|
Originally posted by: aaa.domain.invalid
Hanspeter,
When I used the ocx prog id , it crashes but with the following it seems
to work fine...
controlSite = new
OleControlSite(frame,SWT.NONE,"MediaPlayer.MediaPlayer.1");
-chhil
Hanspeter wrote:
> I like to write a MediaPlayer-widget for WMP V9 acting like SWT.Browser.
> I'm always receiving an unexpected exception if I activate it with:
>
> site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
>
> An unexpected exception has been detected in native code outside the VM.
> Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at
> PC=0x4B64F839
> Function=DllGetClassObject+0x2E8C4
> Library=C:\WINNT\system32\wmp.dll
>
> If I activate it with "OLEIVERB_SHOW" doesn't occur an exception but it
> doesn't show the video using all the frame space.
>
> I'm new to SWT and OLE and I hope you can give me same help or is this
> an problem with MS-MediaPlayer?
>
> Thanks Hanspeter
>
> parts of the code:
>
> public class MMediaPlayer extends Composite
> {
>
> OleFrame frame;
> OleControlSite site;
> OleAutomation auto;
>
> public MMediaPlayer(Composite parent, int style)
> {
> super(parent, style & ~SWT.BORDER);
> frame = new OleFrame(this, SWT.NONE);
> try
> {
> site = new OleControlSite(frame, SWT.NONE, "WMPlayer.OCX.7");
> //$NON-NLS-1$
> }
> catch (SWTException e)
> {
> dispose();
> SWT.error(SWT.ERROR_NO_HANDLES);
> }
> site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
> auto = new OleAutomation(site);
> }
>
> public String getStatus()
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "status" }); //$NON-NLS-1$
> Variant pVarResult = auto.getProperty(rgdispid[0]);
> if (pVarResult == null || pVarResult.getType() != OLE.VT_BSTR)
> return "";
> String result = pVarResult.getString();
> pVarResult.dispose();
> return result;
> }
>
> public boolean isRemote()
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "isRemote" }); //$NON-NLS-1$
> Variant pVarResult = auto.getProperty(rgdispid[0]);
> if (pVarResult == null || pVarResult.getType() != OLE.VT_BOOL)
> return false;
> boolean result = pVarResult.getBoolean();
> pVarResult.dispose();
> return result;
> }
>
> public boolean setUiMode(String mode)
> {
> checkWidget();
> if (mode == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "uiMode" }); //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
> return result;
> }
>
> public boolean setMpEnabled(boolean mode)
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "enabled" }); //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
> return result;
> }
>
> public boolean setStretchToFit(boolean mode)
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]{ "stretchToFit" });
> //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
> return result;
> }
>
> public boolean setAutoStart(boolean mode)
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "settings" }); //$NON-NLS-1$
> Variant pVarResult = auto.getProperty(rgdispid[0]);
> if (pVarResult == null || pVarResult.getType() == 0) return false;
> OleAutomation settings = pVarResult.getAutomation();
> rgdispid = settings.getIDsOfNames(new String[]
> { "autoStart" }); //$NON-NLS-1$
> boolean result = settings.setProperty(rgdispid[0], new Variant(mode));
> settings.dispose();
> return result;
> }
>
> public boolean setWindowlessVideo(boolean mode)
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "windowlessVideo" }); //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
> return result;
> }
>
> public boolean setFullScreen(boolean mode)
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "fullScreen" }); //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
> return result;
> }
>
> public boolean setUrl(String url)
> {
> checkWidget();
> if (url == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "URL" }); //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(url));
> return result;
> }
>
> public void play()
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "controls" }); //$NON-NLS-1$
> Variant pVarResult = auto.getProperty(rgdispid[0]);
> if (pVarResult == null || pVarResult.getType() == 0) return;
> OleAutomation controls = pVarResult.getAutomation();
> rgdispid = controls.getIDsOfNames(new String[]
> { "play" }); //$NON-NLS-1$
> controls.invoke(rgdispid[0]);
> pVarResult.dispose();
> controls.dispose();
> }
>
> public void stop()
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "controls" }); //$NON-NLS-1$
> Variant pVarResult = auto.getProperty(rgdispid[0]);
> if (pVarResult == null || pVarResult.getType() == 0) return;
> OleAutomation controls = pVarResult.getAutomation();
> rgdispid = controls.getIDsOfNames(new String[]
> { "stop" }); //$NON-NLS-1$
> controls.invoke(rgdispid[0]);
> pVarResult.dispose();
> controls.dispose();
> }
>
> }
>
|
|
|
|
Re: MS-Mediaplayer don't work [message #455198 is a reply to message #454791] |
Tue, 10 May 2005 10:52 |
Jaap Reitsma Messages: 69 Registered: July 2009 |
Member |
|
|
Hi Hanspeter
I have used the following statements:
setLayout(new FillLayout());
frame = new OleFrame(this, SWT.BORDER);
frame.setSize(246, 250);
site = new OleControlSite(frame, SWT.NONE, "WMPlayer.OCX");
auto = new OleAutomation(site);
mediaPlayer = new MediaPlayer(auto);
site.doVerb(OLE.OLEIVERB_SHOW);
And then I added the following statement that magically prevents a crash
when closing the widget.
// Prevent crash of JVM at shutdown of player
setFocus();
After that I do some initialization of the player.
The computeSize() is overridden:
int w = mediaPlayer.getImageSourceWidth();
int h = mediaPlayer.getImageSourceHeight();
size.x = (w == 0 ? 246 : w);
size.y = (h == 0 ? 250 : h);
return size;
It is very difficult to get it right, I don't know who to blame.
Kind regards,
Jaap Reitsma
"Hanspeter" <schmuhan@web4schmutz.ch> wrote in message
news:8429e3e06470fbba075bce3049885ac1$1@www.eclipse.org...
>I like to write a MediaPlayer-widget for WMP V9 acting like SWT.Browser.
>I'm always receiving an unexpected exception if I activate it with:
>
> site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
>
> An unexpected exception has been detected in native code outside the VM.
> Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at
> PC=0x4B64F839
> Function=DllGetClassObject+0x2E8C4
> Library=C:\WINNT\system32\wmp.dll
>
> If I activate it with "OLEIVERB_SHOW" doesn't occur an exception but it
> doesn't show the video using all the frame space.
>
> I'm new to SWT and OLE and I hope you can give me same help or is this an
> problem with MS-MediaPlayer?
>
> Thanks Hanspeter
>
> parts of the code:
>
> public class MMediaPlayer extends Composite
> {
>
> OleFrame frame;
> OleControlSite site;
> OleAutomation auto;
>
> public MMediaPlayer(Composite parent, int style)
> {
> super(parent, style & ~SWT.BORDER);
> frame = new OleFrame(this, SWT.NONE);
> try
> {
> site = new OleControlSite(frame, SWT.NONE, "WMPlayer.OCX.7");
> //$NON-NLS-1$
> }
> catch (SWTException e)
> {
> dispose();
> SWT.error(SWT.ERROR_NO_HANDLES);
> }
> site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
> auto = new OleAutomation(site);
> }
>
> public String getStatus()
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "status" }); //$NON-NLS-1$
> Variant pVarResult = auto.getProperty(rgdispid[0]);
> if (pVarResult == null || pVarResult.getType() != OLE.VT_BSTR) return
> "";
> String result = pVarResult.getString();
> pVarResult.dispose();
> return result;
> }
>
> public boolean isRemote()
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "isRemote" }); //$NON-NLS-1$
> Variant pVarResult = auto.getProperty(rgdispid[0]);
> if (pVarResult == null || pVarResult.getType() != OLE.VT_BOOL) return
> false;
> boolean result = pVarResult.getBoolean();
> pVarResult.dispose();
> return result;
> }
>
> public boolean setUiMode(String mode)
> {
> checkWidget();
> if (mode == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "uiMode" }); //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
> return result;
> }
>
> public boolean setMpEnabled(boolean mode)
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "enabled" }); //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
> return result;
> }
>
> public boolean setStretchToFit(boolean mode)
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]{ "stretchToFit" });
> //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
> return result;
> }
>
> public boolean setAutoStart(boolean mode)
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "settings" }); //$NON-NLS-1$
> Variant pVarResult = auto.getProperty(rgdispid[0]);
> if (pVarResult == null || pVarResult.getType() == 0) return false;
> OleAutomation settings = pVarResult.getAutomation();
> rgdispid = settings.getIDsOfNames(new String[]
> { "autoStart" }); //$NON-NLS-1$
> boolean result = settings.setProperty(rgdispid[0], new Variant(mode));
> settings.dispose();
> return result;
> }
>
> public boolean setWindowlessVideo(boolean mode)
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "windowlessVideo" }); //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
> return result;
> }
>
> public boolean setFullScreen(boolean mode)
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "fullScreen" }); //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(mode));
> return result;
> }
>
> public boolean setUrl(String url)
> {
> checkWidget();
> if (url == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "URL" }); //$NON-NLS-1$
> boolean result = auto.setProperty(rgdispid[0], new Variant(url));
> return result;
> }
>
> public void play()
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "controls" }); //$NON-NLS-1$
> Variant pVarResult = auto.getProperty(rgdispid[0]);
> if (pVarResult == null || pVarResult.getType() == 0) return;
> OleAutomation controls = pVarResult.getAutomation();
> rgdispid = controls.getIDsOfNames(new String[]
> { "play" }); //$NON-NLS-1$
> controls.invoke(rgdispid[0]);
> pVarResult.dispose();
> controls.dispose();
> }
>
> public void stop()
> {
> checkWidget();
> int[] rgdispid = auto.getIDsOfNames(new String[]
> { "controls" }); //$NON-NLS-1$
> Variant pVarResult = auto.getProperty(rgdispid[0]);
> if (pVarResult == null || pVarResult.getType() == 0) return;
> OleAutomation controls = pVarResult.getAutomation();
> rgdispid = controls.getIDsOfNames(new String[]
> { "stop" }); //$NON-NLS-1$
> controls.invoke(rgdispid[0]);
> pVarResult.dispose();
> controls.dispose();
> }
>
> }
>
|
|
|
Powered by
FUDForum. Page generated in 0.03119 seconds