求教mediaplayer控件播放vcd格式的文件?清高手赐教!
 还有如何禁止使用alt+tab热键?谢谢啦!

解决方案 »

  1.   

    利用MediaPlayer播入VCD影碟的简单方法,前提是系统中必须安装了XING软解压程序或其它VCD播入程序 (也可以是解压卡),并且为系统提供了标准的MCI设备驱动程序:   1.运行Delphi,单击SYSTEM工具组中的Mediaplayer控件,在窗体中建立此控制对象;   2.修改DEVICETYPE属性为dtAUTOSELECT,修改FILENAME属性,使之指向一个磁盘中的MPG文件或光盘中的.DAT文 件;   3.在窗体中加入两个命令按钮,置CAPTION属性分别为“打开”和“ 关闭”;   4.双击命令按钮1,加入代码:   MediaPlayer1.OPEN;   5.双击命令按钮2,加入代码:   MediaPlayer1.STOP;
       MediaPlayer1.CLOSE;
       Close;   按下F9或用鼠标点击运行按钮执行该程序,按下“打开”按钮则媒体控制按键组出现颜色表示可用,按下PLAY键后即 可播入指定的VCD视频文件,按下“关闭”按钮则停止播入并结束程序
      

  2.   

    禁止使用alt+tab热键,用HOOK:unit Main;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TMainForm = class(TForm)
        EnableBtn: TButton;
        DisableBtn: TButton;
        AboutBtn: TButton;
        ExitBtn: TButton;
        Bell1: TBevel;
        Image: TImage;
        procedure AboutBtnClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure EnableBtnClick(Sender: TObject);
        procedure DisableBtnClick(Sender: TObject);
        procedure ExitBtnClick(Sender: TObject);
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      MainForm: TMainForm;implementationuses Hook;{$R *.dfm}type
      // Declaration from VC++ WINUSER.H
      //
      PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
      KBDLLHOOKSTRUCT = record
        vkCode: DWORD;
        scanCode: DWORD;
        flags: DWORD;
        time: DWORD;
        dwExtraInfo: DWORD;
      end;const
      LLKHF_ALTDOWN  = KF_ALTDOWN shr 8;
      WH_KEYBOARD_LL = 13;var
      hhkNTKeyboard: HHOOK; // 钩子句柄// 低级键盘钩子回调函数
    //
    function LowLevelKeyboardFunc(nCode: Integer; w_Param: WPARAM;
      l_Param: LPARAM): LRESULT; stdcall;
    var
      blEatKeystroke: Boolean;
      p: PKBDLLHOOKSTRUCT;
    begin
      blEatKeystroke := False;
      if nCode = HC_ACTION then
      begin
        case w_Param of
          WM_KEYDOWN,
          WM_SYSKEYDOWN,
          WM_KEYUP,
          WM_SYSKEYUP:
            begin
               p := PKBDLLHOOKSTRUCT(l_Param);           // 进行按键过滤
               blEatKeystroke := (((p^.vkCode = VK_TAB) and
                                  ((p^.flags and LLKHF_ALTDOWN) <> 0)) or
                                  ((p^.vkCode = VK_ESCAPE) and
                                  ((p^.flags and LLKHF_ALTDOWN) <> 0)) or
                                  ((p^.vkCode = VK_ESCAPE) and
                                  ((GetKeyState(VK_CONTROL) and $8000) <> 0)) or
                                  ((p^.vkCode = VK_DELETE) and
                                  ((p^.flags and LLKHF_ALTDOWN) <> 0) and
                                  ((GetKeyState(VK_CONTROL) and $8000) <> 0)));
            end;
        end; // End of Case
      end;
      if blEatKeystroke then
      begin
        Result := 1;       // 捕获这些组合键,按键消息由自己处理,必须返回 1
        Hook.ShowHookInfo; // 显示一个窗口,你可以改为自己的处理代码
      end
      else
        // 其他的按键,交由别的线程处理(过滤)
        Result := CallNextHookEx(0, nCode, w_Param, l_Param);
    end;procedure TMainForm.AboutBtnClick(Sender: TObject);
    begin
      Application.MessageBox(
        PChar('Windows NT 键盘钩子演示程序'#13#10#13#10'作者:Phoenix2000,2001年7月。'),
        '关于本程序', 0);
    end;procedure TMainForm.FormCreate(Sender: TObject);
    begin
      hhkNTKeyboard := 0; // 钩子句柄初值
    end;procedure TMainForm.EnableBtnClick(Sender: TObject);
    begin
      // 挂上键盘钩子
      //
      hhkNTKeyboard := SetWindowsHookEx(WH_KEYBOARD_LL,
                                        LowLevelKeyboardFunc,
                                        HInstance, 0);
      if hhkNTKeyboard <> 0 then
        Application.MessageBox('系统键盘钩子已经启动了!', '信息', 64)
      else
        Application.MessageBox('无法启动系统键盘钩子!', '错误', 16);
    end;procedure TMainForm.DisableBtnClick(Sender: TObject);
    begin
      // 解除键盘钩子
      //
      if hhkNTKeyboard = 0 then
        Application.MessageBox('系统键盘钩子已经被禁止了!', '警告', 48)
      else
      begin
        UnhookWindowsHookEx(hhkNTKeyboard); // 卸载钩子
        hhkNTKeyboard := 0;
        Hook.CleanHookForm; // 此行代码与钩子无关,不要误解,是我自己的窗体清除
        Application.MessageBox('成功卸载系统键盘钩子!', '信息', 64)
      end;
    end;procedure TMainForm.ExitBtnClick(Sender: TObject);
    begin
      Close;
    end;procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      CanClose := (hhkNTKeyboard = 0);
      if not CanClose then
        Application.MessageBox('请先卸载系统键盘钩子,然后再退出本程序!', '警告', 48);
    end;procedure TMainForm.FormDestroy(Sender: TObject);
    begin
      if hhkNTKeyboard <> 0 then
      begin
        UnhookWindowsHookEx(hhkNTKeyboard);
        hhkNTKeyboard := 0;
      end;
      Hook.CleanHookForm;
    end;end.以上的代码在 NT 4.0 + SP3/Win 2000 下能捕获 Alt + Tab、Alt + ESC、Ctrl + ESC 这
    样的组合键,而 Ctrl + Alt + Del 无法捕获。有兴趣的朋友自己研究一下又没有别的办
    法,或是我的代码由否不妥之处。另外,NT 环境下用低级键盘钩子,只有在 NT 4.0 + SP3
    以上的版本才有效,在 NT 4 + SP2 都是无效的。在 Win2000 下当然有效了
      

  3.   

    非常感谢!我抄回去自己研究一下代码!
    我想弄清楚如何安装XING软解压程序,再者我的机子有金山影霸2003,豪杰2003,媒体播放器8.0,如何让mediaplayer控件支持.dat文件?谢谢!
      

  4.   

    98下:  
    begin  
       WritePrivateProfileString('mci  extensions',  'mpg',  'MPEGVideo',  'win.ini');  
       WritePrivateProfileString('mci  extensions',  'dat',  'MPEGVideo',  'win.ini');  
       WritePrivateProfileString('mci  extensions',  'mpv',  'MPEGVideo',  'win.ini');  
       WritePrivateProfileString('mci  extensions',  'mpeg',  'MPEGVideo',  'win.ini');  
       WritePrivateProfileString('mci  extensions',  'cjt',  'MPEGVideo',  'win.ini');  
       WritePrivateProfileString('mci  extensions',  'avi',  'AVIVideo',  'win.ini');  
       WritePrivateProfileString('mci',  'MPEGVideo',  'mciqtz.drv',  'system.ini');  
    上面的代码,也就是修改了win.ini,system.ini文件。  
     
    2000下:  
    1.改注册表:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows  NT\CurrentVersion\MCI32  
    把MPEGVideo的键值改成想要的驱动就可,默认为  "mciqtz32.dll  "。  
    2.HKEY_LOCAL_MACHINE\Software\Microsoft\Windows  NT\CurrentVersion\MCI  Extensions        (新建键,键字符串为  "dat  ",值为  "MPEGVideo  ")