SWT 调用 windows media 播放器

 

package com.player;
 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.events.SelectionAdapter; 
import org.eclipse.swt.events.SelectionEvent; 
import org.eclipse.swt.layout.FillLayout; 
import org.eclipse.swt.ole.win32.OleAutomation; 
import org.eclipse.swt.ole.win32.OleClientSite; 
import org.eclipse.swt.ole.win32.OleFrame; 
import org.eclipse.swt.ole.win32.Variant; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.FileDialog; 
import org.eclipse.swt.widgets.Menu; 
import org.eclipse.swt.widgets.MenuItem; 
import org.eclipse.swt.widgets.Shell; 
 
/**
 * @author cuiran
 *
 */ 
public class SWT_VideoPlayer { 
      static OleClientSite site; 
        static OleAutomation auto; 
        public static void main(String[] args) { 
            Display display = new Display(); 
            Shell shell = new Shell(display); 
            shell.setSize(300,180); 
            shell.setText("SWT Video Player"); 
 
            shell.setLayout(new FillLayout()); 
 
            OleFrame frm = new OleFrame(shell, SWT.NONE); 
 
            site = new OleClientSite(frm, SWT.NONE,"MediaPlayer.MediaPlayer.1"); 
            auto = new OleAutomation(site); 
            int[] ids = auto.getIDsOfNames(new String[] { "Play" }); 
            auto.invoke(ids[0]); 
            addFileMenu(frm); 
            shell.open(); 
 
            while (!shell.isDisposed()){ 
                if (!display.readAndDispatch()){ 
                    display.sleep(); 
                } 
            } 
 
            site.deactivateInPlaceClient(); 
            site.dispose(); 
            auto.dispose(); 
        } 
        
        public static void addFileMenu(OleFrame frame) { 
            final Shell shell = frame.getShell(); 
            Menu menuBar = shell.getMenuBar(); 
            if (menuBar == null) { 
                menuBar = new Menu(shell, SWT.BAR); 
                shell.setMenuBar(menuBar); 
            } 
            MenuItem fileMenu = new MenuItem(menuBar, SWT.CASCADE); 
            fileMenu.setText("&File"); 
            Menu menuFile = new Menu(fileMenu); 
            fileMenu.setMenu(menuFile); 
            frame.setFileMenus(new MenuItem[] { fileMenu }); 
 
            MenuItem menuFileOpen = new MenuItem(menuFile, SWT.CASCADE); 
            menuFileOpen.setText("Open"); 
            menuFileOpen.addSelectionListener(new SelectionAdapter() { 
                public void widgetSelected(SelectionEvent e) { 
                    fileOpen(); 
                } 
            }); 
             
            MenuItem menuFileExit = new MenuItem(menuFile, SWT.CASCADE); 
            menuFileExit.setText("Exit"); 
            menuFileExit.addSelectionListener(new SelectionAdapter() { 
                public void widgetSelected(SelectionEvent e) { 
                    shell.dispose(); 
                } 
            }); 
        } 
 
        public static void fileOpen() { 
            FileDialog dialog = new FileDialog(site.getShell(), SWT.OPEN); 
            dialog.setFilterExtensions(new String[] { "*.wma","*.mp3","*.wav","*.wmv","*.rmvb" }); 
            String filename = dialog.open(); 
            if (filename != null) { 
                OleAutomation player = new OleAutomation(site); 
                int playURL[] = player.getIDsOfNames(new String[] { "Open" }); 
                if (playURL != null) { 
                    Variant theFile = new Variant(filename); 
                    player.invoke(playURL[0],new Variant[] { theFile}); 
                } 
            } 
        } 
        
        public static void setURL(String fileName){ 
            if (fileName != null) { 
                OleAutomation player = new OleAutomation(site); 
                int playURL[] = player.getIDsOfNames(new String[] { "Open" }); 
                if (playURL != null) { 
                    Variant theFile = new Variant(fileName); 
                    player.invoke(playURL[0],new Variant[] { theFile}); 
                } 
            } 
        } 
 
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值