制作SCORM课件离线播放器(C#)
概述
SCORM标准的课程是e-learning比较常用的标准,但课程要放到LMS浏览才看到课件数据的交互很不方便,下面介绍.net写的SCORM课件播放器,方便离线浏览SCORM课程或用于SCORM的课件测试。
主要实现
建立winform项目,向窗体添加web browser控件,添加窗体的Load,FormClosing事件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace ScormPlayer
{
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
webBrowser1.ObjectForScripting = this; //让html访问窗体的成员
}
private void Form1_Load(object sender, EventArgs e)
{
string startupPath = System.Configuration.ConfigurationManager.AppSettings["StartupPath"];
//课程的入口文件,写在配置文件里,方便修改
string url = Path.Combine(Application.StartupPath, startupPath);
//SCORM外壳页面,主要初始化SCORM API对象,把课程的地址当做参数传入
string preview = Path.Combine(Application.StartupPath, "Preview.html?url=" + url);
webBrowser1.Navigate(preview);
}
//关闭控制
private bool _CanClose = false;
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (!_CanClose)
{
//触发页面的onunload方法,让课件提交数据
webBrowser1.Document.InvokeScript("eval", new object[] { "window.top.close()" });
_CanClose = true;
}
e.Cancel = !_CanClose;
}
}
}
向窗体添加SCORM标准的API实现
//SCORM API 对象
public object API
{
get
{
return this;
}
}
public string LMSInitialize(string value)
{
return "true";//没特殊处理返回"true"即可
}
public string LMSFinish(string value)
{
//课件页面unload时关闭窗体
_CanClose = true;
Close();
return "true";//没特殊处理返回"true"即可
}
public string LMSGetValue(string model)
{
Util.Debug("LMSGetValue(" + model + ")");
//TODO:读数据,添加自定义处理,可读写数据库或读写文件
// string value;
// ...
// return value
return "0";//返回指定的数据,这里hard code返回"0"。
}
public string LMSSetValue(string model, string value)
{
Util.Debug("LMSSetValue(" + model + ", " + value + ")");
//TODO:写数据,添加自定义处理,可读写数据库或读写文件
return "true";//没特殊处理返回"true"即可
}
public string LMSCommit(string value)
{
return "true";//没特殊处理返回"true"即可
}
public string LMSGetErrorString(string value)
{
return string.Empty;//没特殊处理返回""即可
}
public string LMSGetLastError()
{
return "0";//没特殊处理返回"0"即可
}
public string LMSGetDiagnostic(string value)
{
return string.Empty;//没特殊处理返回""即可
}
添加SCORM外壳页面preview.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>课程学习</title>
<script language="javascript" type="text/javascript">
window.API = window.external.API; //创建SCORM API对象,window.external.API是Form1.API属性
//获取地址参数
function getParam(paramName) {
var url = unescape(window.location.href);
var allargs = url.split("?")[1];
var args = allargs.split("&");
for (var i = 0; i < args.length; i++) {
var arg = args[i].split("=");
if (arg[0] == paramName) {
return arg[1];
}
}
return "";
}
function loadUrl() {
var url = getParam("url");//课程的地址
if (url != "") {
document.getElementById("content").src = url;
}
}
</script>
<style>
html{height: 100%;}
body{height: 100%;margin: 0px;overflow: hidden;}
</style>
</head>
<body onload="loadUrl()">
<iframe id="content" name="content" width="100%" height="100%" frameborder="0" scrolling="no" src="">iframe>
<noframes>
</noframes>
</body>
</html>
配置文件配置课程的入口文件
xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="StartupPath" value="Course3/index.html"/>
<!--<add key="StartupPath" value="Course1/Player.html"/>
<add key="StartupPath" value="Course2/lo/template.html"/>
<add key="StartupPath" value="Course3/index.html"/>
-->
</appSettings>
</configuration>
进阶
上面基本实现了SCORM标准,进一步完善,可以进行课程数据的存储,上载课程数据到平台,添加课程管理等功能,才算真正实现企业级的SCORM离线播放器。
制作SCORM课件离线播放器(C#)相关推荐
- html音频从10秒播放至30秒,基于Arduino制作SD卡音乐播放器
一.项目介绍 前面用ATtiny85制作SD卡音乐播放器,本次主要利用Arduino UNO 和SD卡制作音乐播放器.这个播放器不需要添加多余的模块,只需要SD读卡器和Arduino UNO开发板就可 ...
- html制作在线视频音乐播放器,用html5制作音乐播放器,这3款就足够了!
用HTML5结合Jquery做一个简易版的音乐播放器 代码展示: 三生草 var sum = 1; function ssss(a) { var s = document.getElementById ...
- html通过自适应制作手机端音乐播放器
html通过自适应制作手机端音乐播放器 实现效果: 实现思路: 1.布局: (1).将手机的宽度进行10等分 为10rem (2).通过rem定义各个元素的宽高.间距.字体大小 (3).通过CSS3 ...
- google vr 入门之制作简易的VR播放器(二)
本篇博客是 <google vr 入门之制作简易的VR播放器及去除界面控制按钮>的续篇: 是对上次创建的GVR播放器的优化与增强,建议先阅读上篇 本篇对播放器设置做了进一步优化: 1.支持 ...
- Android制作简易的音乐播放器和视频播放器
文章目录 制作简易的音乐播放器和视频播放器 播放多媒体文件 播放音频 MediaPlayer的工作流程 项目示例 播放视频 项目示例 制作简易的音乐播放器和视频播放器 播放多媒体文件 Android在 ...
- 用html做成的音频播放器,HTML5制作酷炫音频播放器插件图文教程
上图便是这个音频播放器的UI界面图,里面还隐藏了一个歌曲的播放列表.整个播放器的UI除了大背景的人像图和歌曲的星星评分使用了图片其他全部由CSS和font-face绘制而成,看上去有难度的地方就只有C ...
- PHP制作音乐播放器制作教案,js制作简单的音乐播放器的示例代码
一.设计目的: 1.随着现在人民生活质量的提高同样伴随着生活压力的增大,越来越多的人追求越来越多的娱乐,其中一种娱乐方式就是音乐,于是突发奇想,制作一个音乐播放器. 2.主要功能: 1 支持循环自动播 ...
- [DIY]给孩子做个音乐盒(arduino制作LCD显示音乐播放器)
一次带孩子去商场,他对一个用木盒做的,LCD显示的音乐盒非常感兴趣,玩了半天,于是便想给孩子做一个音乐盒. 完成效果图: 材料: Arduinouno USB供电音箱(或8欧姆喇叭,10欧姆电阻,10 ...
- google vr 入门之制作简易的VR播放器及去除界面控制按钮
在moudle app 的build.gradle文件中 dependencies 节点下添加如下配置: // 使用google vr 添加的 compile 'com.google.vr:sdk-b ...
最新文章
- 识别迷雾中的物体,谷歌提出最新目标检测算法Context R-CNN
- Python Django 配置URL的方式(url传参方式)
- Android之mediarecorder中的方法以及工作流程的过程
- 移植U-BOOT之裁剪和修改默认参数(易用性)启动内核,以及对uboot进行分区
- 基于顺序存储结构的图书信息表的最贵图书的查找(C++)
- spring boot2 kafka
- (12)自定义数据流(实战Docker事件推送的REST API)——响应式Spring的道法术器...
- BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]
- linux 命名空间Namespace机制【转】
- Markdown打造高逼格博客
- 计算机专业毕业设计—351个VB管理系统源码打包(计算机专业整理)
- EDI 电子数据交换(Electronic data interchange,缩写EDI)
- JAVA实现飞机大战详解
- 如何对Windows 2000中出现的“Stop 0x0000007B”错误信息进行故障诊断
- html打开lync客户端,Lync 2013与Exchange 2013--客户端发现响应内容类型为“text/html ”,但应为“text/xml”...
- 多图片拼图怎么操作?这个方法不要错过
- 入手评测 锐龙r7 5825u和i5 1240p选哪个好
- [HTML] HTML简单实现网络测速
- iOS 视频、图片翻转问题
- OSI和TCP/IP网络参考模型傻傻分不清?图解和各层作用详细说明