Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Standard Widget Toolkit (SWT) » MS-Mediaplayer don't work
MS-Mediaplayer don't work [message #454791] Thu, 28 April 2005 22:03 Go to next message
Eclipse UserFriend
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 Go to previous messageGo to next message
Eclipse UserFriend
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 #454945 is a reply to message #454930] Tue, 03 May 2005 14:21 Go to previous messageGo to next message
Hanspeter Schmutz is currently offline Hanspeter SchmutzFriend
Messages: 1
Registered: July 2009
Junior Member
Hi,

yes I know, but "MediaPlayer.MediaPlayer.1" is Media Player 6.4 ActiveX
control (which is deprecated by MS) and "WMPlayer.OCX.7" is 'Windows Media
Player 9 Series ActiveX control' with an other interface.

Hanspeter
Re: MS-Mediaplayer don't work [message #455198 is a reply to message #454791] Tue, 10 May 2005 10:52 Go to previous message
Jaap Reitsma is currently offline Jaap ReitsmaFriend
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();
> }
>
> }
>
Previous Topic:Only able to edit first column in a tableviewer
Next Topic:SWT & Palm OS
Goto Forum:
  


Current Time: Fri Apr 19 23:15:01 GMT 2024

Powered by FUDForum. Page generated in 0.03119 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top