using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;
using System.Collections.Specialized;
using Microsoft.Office.Interop.PowerPoint;
using System.Windows.Forms;
using GeneralLib;
using System.Runtime.InteropServices;
using Microsoft.Win32;
using System.Diagnostics;
using System.IO;
using System.Collections;
using ProService;
//using HotKeyPress;
namespace SunVoteARSPPT
{
public partial class SunVoteARSAddIn
{
//API申明
[DllImport("user32")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
private static extern IntPtr GetParent(IntPtr hWnd);
[DllImport("user32.dll", SetLastError = false)]
private static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr GetWindow(IntPtr hWnd, GetWindow_Cmd uCmd);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
enum GetWindow_Cmd : uint
{
GW_HWNDFIRST = 0,
GW_HWNDLAST = 1,
GW_HWNDNEXT = 2,
GW_HWNDPREV = 3,
GW_OWNER = 4,
GW_CHILD = 5,
GW_ENABLEDPOPUP = 6
}
public delegate bool EnumedWindow(IntPtr handleWindow, ArrayList handles);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool EnumWindows(EnumedWindow lpEnumFunc, ArrayList lParam);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsWindowVisible(IntPtr hWnd);
///
/// PPT编辑类,编辑题目用
///
public PPTEdit PPTEdit;
///
/// PPT显示类,播放控制用
///
public PPTShow PPTShow;
///
/// 自定义Esc动作,用来记忆当前遥控器按Esc如何处理,如打开了窗体,则按Esc是关闭
///
private string RemoteActionEsc = "";
///
/// 自定义Enter动作,用来记忆当前遥控器按Enter如何处理
///
private string RemoteActionEnter = "";
///
/// 自定义C键,可用来返回上一级菜单
///
private string RemoteActionC = "";
///
/// 自定义向上键,可用来上移菜单
///
private string RemoteActionUp = "";
///
/// 自定义向下键,可用来下移菜单
///
private string RemoteActionDown = "";
///
/// 控制条
///
public FrmVoteBar frmVoteBar;
///
/// 按键明细
///
//public FrmVoteDetail frmVoteDetail;
///
/// 全局快捷键对象
///
//public HotKey HotKey = new HotKey();
///
/// 初始化Addin入口
///
public void AddinStartupInit()
{
try
{
//GlobalInfo.InitMain();
PPTEdit = new PPTEdit(this.Application);
PPTShow = new PPTShow(this.Application);
//屏蔽。杨斌 2016-10-26
//修改标志 赵丽 2012-05-02 遥控器使用不了可能是由于初始化音频文件失败退出引起的
//GlobalInfo.response.ARSRequest.Enabled = GlobalInfo.sysConfig.RemontControl;
//GlobalInfo.response.ARSRequest.ChairControl += new SunVote.IRequestEvents_ChairControlEventHandler(ARSRequest_ChairControl);
//GlobalInfo.response.ARSRequest.ChairControlSN += ARSRequest_ChairControlSN;
GlobalInfo.InitRemontControl();//杨斌 2017-03-31
GlobalInfo.DXSoundPlay = new PLSound();//杨斌 2012-06-25
if (!GlobalInfo.DXSoundPlay.InitSound(new Form())) return;
GlobalInfo.DXSoundPlay.LoadSound(GlobalInfo.Sound_Key_Back, GlobalInfo.SOUND_DIR + GlobalInfo.sysConfig.BackgSoundPath);
GlobalInfo.DXSoundPlay.LoadSound(GlobalInfo.Sound_Key_Vote, GlobalInfo.SOUND_DIR + GlobalInfo.sysConfig.PressSoundPath, 10);//混音10个够了,杨斌 2012-02-28
//杨斌 2019-01-07
GlobalInfo.DXSoundPlay.LoadSound(GlobalInfo.Sund_Key_SlideShowResult, GlobalInfo.SOUND_DIR + GlobalInfo.sysConfig.ShowResultChartSoundPath);
GlobalInfo.DXSoundPlay.LoadSound(GlobalInfo.Sund_Key_ShowCorrectAnswer, GlobalInfo.SOUND_DIR + GlobalInfo.sysConfig.CorrectAnswerSoundPath);
}
catch (Exception ex)
{
SystemLog.WriterLog(ex);
}
}
private FrmReceive FrmGetMsg = new FrmReceive();//杨斌 2014-04-11
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;//杨斌 2016-06-24
try//杨斌 2014-04-11。放到加载项启动里
{
//调试。注释掉。杨斌 2015-07-10
//if (Globals.SunVoteARSAddIn.GetPPTVersion() >= 15)//杨斌 2020-07-27
{
FrmGetMsg.Show();
//FrmGetMsg.Hide();
Process.Start(GlobalInfo.GetAppWorkDir() + @"HotKeyServer.exe");
}
}
catch { }
}
///
/// 是否正在退出插件
/// 杨斌 2015-11-10
///
public bool IsExitApp = false;
///
/// 修改:杨斌 2012-05-16
///
///
///
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
//杨斌 2017-03-02
try
{
Globals.Ribbons.rbSunVoteARS.tmrCheckActivePres.Stop();
TimerCount.Delay(50);//杨斌 2017-03-06
}
catch { }
try//杨斌 2017-03-02
{
Param p = new Param();
p.Pa.Add("ToExit", "");
GlobalInfo.ServerRequest(p);
TimerCount.Delay(50);//杨斌 2017-03-06
}
catch { }
IsExitApp = true;//杨斌 2015-11-10
try
{
GlobalInfo.baseConnect.DisConnect();
}
catch { }
try
{
GlobalInfo.DBOperation.CloseConn();
List lstPres = new List();
foreach (var v in Globals.SunVoteARSAddIn.Application.Presentations)
{
lstPres.Add(v as Presentation);
}
foreach (var v in Globals.SunVoteARSAddIn.PPTEdit.DicNPres)
{
if (!lstPres.Contains(v.Key))
{
string db = GlobalInfo.DB_PATH + v.Value;
if (File.Exists(db))
File.Delete(db);
}
}
}
catch { }
try//杨斌 2014-04-11。放到加载项卸载里
{
//if (Globals.SunVoteARSAddIn.GetPPTVersion() >= 15)//杨斌 2020-07-27
{
SendMsg.SendMsgKey("ExitHotKey");
if ((FrmGetMsg != null) && (!FrmGetMsg.IsDisposed))
FrmGetMsg.Close();
}
}
catch { }
try//杨斌 2015-11-10。杀HotKeyServer进程
{
Process[] proSer = Process.GetProcessesByName("HotKeyServer");
foreach (var v in proSer)
{
v.Kill();
}
}
catch { }
try
{
RegistryKey sKey = null;
try
{
sKey = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("SunVote ARS").OpenSubKey(GlobalInfo.GetAppName());
}
catch { }
string loadType = "0"; //自动加载
if (sKey != null)
{
loadType = sKey.GetValue("LoadType").ToString();
}
loadType = GlobalInfo.sysConfig.AddType.ToString();//从配置文件获取加载方式。杨斌 2013-05-07
if (loadType == "1")
{
RegistryKey cKey = Registry.CurrentUser.OpenSubKey("Software", true).OpenSubKey("Microsoft", true).OpenSubKey("Office", true)
.OpenSubKey("PowerPoint", true).OpenSubKey("Addins", true).OpenSubKey(GlobalInfo.GetAppName(), true);
cKey.SetValue("LoadBehavior", 2);
}
}
catch { }
try//杨斌 2015-04-14
{
FrmPvsServer.FreeMyPvs();
}
catch { }
try//杨斌 2015-01-22
{
if (GlobalInfo.OEMLogo == OEMLogos.oemRealVote)
{
try
{
if (GlobalInfo.RealVoteSoftDog != null)
{
//FrmDebugMsg.ShowMsg("Call RealVoteSoftDog.LogOff ...");
//GlobalInfo.RealVoteSoftDog.LogOff();
if (GlobalInfo.ShowDebug)
MessageBox.Show("RealVoteSoftDog.LogOff Called");
}
}
catch (Exception ex)
{
SystemLog.WriterLog(ex);
}
}
}
catch { }
try
{
GC.Collect();
}
catch { }
//MessageBox.Show("ThisAddIn_Shutdown End");
try//杨斌 2015-04-16
{
if (this.Application.Presentations.Count < 1)
{
if (this.Application.Visible == Microsoft.Office.Core.MsoTriState.msoFalse)
{
//Process[] pros2 = Process.GetProcessesByName("OfficeClickToRun");
//foreach (var v in pros2)
//{
// MessageBox.Show("Kill " + v.ProcessName);
// v.CloseMainWindow();
// v.WaitForExit();
// v.Kill();
// v.WaitForExit();
// MessageBox.Show(v.ProcessName);
//}
this.Application.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(this.Application);
GC.Collect();
GC.WaitForPendingFinalizers();
//杨斌 2015-11-13
//Process.GetCurrentProcess().Kill();
//Process[] pros = Process.GetProcessesByName("POWERPNT");
//foreach (var v in pros)
// v.Kill();
//MessageBox.Show("Kill");
//杨斌 2018-03-06
Stopwatch t = Stopwatch.StartNew();
while (Process.GetProcessesByName("POWERPNT").Length > 0)
{
try
{
Process.GetCurrentProcess().Kill();
}
catch { }
System.Windows.Forms.Application.DoEvents();
if (t.ElapsedMilliseconds > 1000)
break;
}
}
}
}
catch (Exception ex)
{
string s = ex.ToString();
}
//MessageBox.Show("End");
}
///
/// 判断焦点是否在PowerPoint窗体上面
///
/// 是否激活焦点
public bool IsFocusPowerPoint()
{
return (GetForegroundWindow() == GetPPTFormHandle());
}
///
/// 说明:获取PowerPoint窗体句柄
/// 创建:杨斌 2010-08-01
///
/// PowerPoint窗体句柄
public IntPtr GetPPTFormHandle()
{
string className = "";
//杨斌 2013-11-15
string sVer = ConvertOper.DoNumberString(this.Application.Version);
int v = (int)Convert.ToDouble(sVer);
switch (v)
{
case 14:
case 15://杨斌 2013-10-16
case 16://杨斌 2016-07-12
className = "PPTFrameClass";
break;
default:
className = "PP" + v.ToString() + "FrameClass";
break;
}
return FindWindow(className, null);
//return FindWindow("PP12FrameClass", null);
}
///
/// 说明:获取PowerPoint播放SlideShow窗体句柄
/// 创建:杨斌 2010-08-08
///
///
public IntPtr GetPPTSlideShowHandle()
{
//杨斌 2013-11-15
string sVer = ConvertOper.DoNumberString(this.Application.Version);
int v = (int)Convert.ToDouble(sVer);
return FindWindow("screenClass", null);
}
[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild,
IntPtr hWndNewParent
);
///
/// 杨斌 2016-07-12
///
public static bool SetPPTSlideShowParent(Form frm)
{
bool res = false;
try
{
IntPtr p = Globals.SunVoteARSAddIn.GetPPTSlideShowHandle();
if (p == IntPtr.Zero)
return res;
SetParent(frm.Handle, p);
frm.FormBorderStyle = FormBorderStyle.Sizable;
res = true;
}
catch (Exception ex)
{
SystemLog.WriterLog(ex, false);
}
return res;
}
public static ArrayList GetWindows()
{
ArrayList windowHandles = new ArrayList();
EnumedWindow callBackPtr = GetWindowHandle;
EnumWindows(callBackPtr, windowHandles);
return windowHandles;
}
private static bool GetWindowHandle(IntPtr windowHandle, ArrayList windowHandles)
{
windowHandles.Add(windowHandle);
return true;
}
public List GetPPTSlideShowHandles()
{
List res = new List();
ArrayList all = GetWindows();
foreach (var v in all)
{
IntPtr p = (IntPtr)v;
if (IsWindowVisible(p))
{
StringBuilder ClassName = new StringBuilder(256);
int nRet = GetClassName(p, ClassName, ClassName.Capacity);
if (ClassName.ToString() == "screenClass")
res.Add(p);
}
}
return res;
}
public int GetPPTVersion()
{
int res = 0;
try
{
//杨斌 2015-09-17
res = (int)Convert.ToDouble(ConvertOper.DoNumberString(this.Application.Version));
}
catch { }
return res;
}
///
/// 激活PowerPoint,用于遥控器
/// 杨斌 2013-12-24
///
public void ActivePres()
{
try
{
Globals.SunVoteARSAddIn.Application.Activate();
}
catch { }
}
///
/// 获取遥控按键。杨斌 2016-10-25
///
public void GetRequestPress()
{
Param p = new Param();
p.Pa.Add("GetRequestPress", "");
Param r = GlobalInfo.ServerRequest(p);
if (r.Pa.ContainsKey("GetRequestPress"))
{
Dictionary dic = MyService.DeserializeObj>(r.Pa["GetRequestPress"].ToString());
foreach (var v in dic)
{
ARSRequest_ChairControlSN("", v.Key, 1, v.Value);
}
}
}
///
/// 50R转换R5X按键。杨斌 2019-07-02
///
Dictionary Dic50R_R5X = new Dictionary();
private void SendKey(string keys)//杨斌 2018-03-16
{
if (Globals.Ribbons.rbSunVoteARS.tmrCheckActivePres is System.Timers.Timer)
SendKeys.SendWait(keys);
else
SendKeys.Send(keys);
}
///
/// 50R遥控。杨斌 2016-08-08
///
private void ARSRequest_ChairControlSN(string BaseTag, string KeySN, int ReqType, string ReqInfo)
{
PowerPoint.Presentation pres = null;
PowerPoint.SlideShowWindow sldShowWin = null;
try
{
sldShowWin = Globals.SunVoteARSAddIn.PPTEdit.PPT.ActivePresentation.SlideShowWindow;
}
catch
{
//仅用来尝试获取PPT是否播放的窗体,因此不处理异常
}
bool isPlay = (sldShowWin != null);//是否正在播放状态
bool isNomalSlide = false;
if (isPlay)
{
//杨斌 2014-08-06
if ((Globals.SunVoteARSAddIn.PPTShow.ResponseType == ResponseType.None)
|| (Globals.SunVoteARSAddIn.PPTShow.ResponseType == ResponseType.Slide)
|| (Globals.SunVoteARSAddIn.PPTShow.ResponseType == ResponseType.ScoreRankChart)
|| (Globals.SunVoteARSAddIn.PPTShow.ResponseType == ResponseType.ScoreRankGroupChart)
|| (Globals.SunVoteARSAddIn.PPTShow.ResponseType == ResponseType.OperatorSlide))//杨斌 2015-07-23
isNomalSlide = true;
}
if (GlobalInfo.sysConfig.RemontControl == "R51")//50R转换R51。杨斌 2017-03-28
{
if (ReqInfo == "2")//开始
{
if (isPlay)
{
if (frmVoteBar.IsRunFrmRushAnswer)
return;
if (frmVoteBar.IsFrmRunLuckyShow)
return;
if (frmVoteBar.IsVoteStart) return;
if (isNomalSlide) return;
if (!frmVoteBar.tsbVoteStart.Enabled) return;
frmVoteBar.VoteBarChange(4);
}
return;
}
else if (ReqInfo == "3")//停止反馈、停止随机点名
{
if (isPlay)
{
if (frmVoteBar.IsVoteStart)
{
if (isNomalSlide) return;
if (!frmVoteBar.tsbVoteStart.Enabled) return;
frmVoteBar.VoteBarChange(4);
}
if (frmVoteBar.IsFrmRunLuckyShow)
{
if (frmVoteBar.frmLuckyShow.tmrRoll.Enabled)
frmVoteBar.frmLuckyShow.tmrRoll.Enabled = false;
}
}
return;
}
else if (ReqInfo == "5")//开始随机点名
{
if (isPlay)
{
if (frmVoteBar.IsVoteStart)
return;
if (frmVoteBar.IsRunFrmRushAnswer)
return;
//if (frmVoteBar.IsFrmRunLuckyShow)
//{
// frmVoteBar.frmLuckyShow.PressSpace();
// return;
//}
if (frmVoteBar.IsFrmRunLuckyShow)
{
if (frmVoteBar.frmLuckyShow.tmrRoll.Enabled)
return;
else
frmVoteBar.frmLuckyShow.tmrRoll.Enabled = true;
}
else
{
InitTmrRunRemote();
tmrRunRemote.Tag = "10";
tmrRunRemote.Start();
}
}
return;
}
else if (ReqInfo == "11")//正确答案
{
if (isPlay)
{
if (frmVoteBar.tsbCorrectAnswer.Enabled)
frmVoteBar.tsbCorrectAnswer.Checked = !frmVoteBar.tsbCorrectAnswer.Checked;
}
return;
}
if (Dic50R_R5X == null)
Dic50R_R5X = new Dictionary();
if (Dic50R_R5X.Count < 1)
{
Dic50R_R5X.Add("10", "11");//ESC键
//Dic50R_R5X.Add("5", "10");//随机点名
Dic50R_R5X.Add("6", "12");//启动抢答
Dic50R_R5X.Add("1", "1");//从当前页播放PPT
Dic50R_R5X.Add("4", "2");//上翻键
//Dic50R_R5X.Add("", "3");//从头播放PPT
//Dic50R_R5X.Add("", "4");//启动/停止投票反馈
//Dic50R_R5X.Add("", "5");//回车键/显示答案 暂做下翻键
Dic50R_R5X.Add("12", "6");//清除反馈数据
Dic50R_R5X.Add("8", "7");//显示/隐藏反馈图表
Dic50R_R5X.Add("7", "8");//下翻键
Dic50R_R5X.Add("9", "9");//按键明细查看键
}
ReqInfo = Dic50R_R5X[ReqInfo];
}
else if (GlobalInfo.sysConfig.RemontControl == "R52")//50R转换R52。杨斌 2019-07-02
{
if (ReqInfo == "9")//启动反馈
{
if (isPlay)
{
if (isNomalSlide) return;
if (!frmVoteBar.tsbVoteStart.Enabled) return;
if (!frmVoteBar.IsVoteStart)
frmVoteBar.VoteBarChange(4);
}
return;
}
if (ReqInfo == "12")//停止反馈
{
if (isPlay)
{
if (isNomalSlide) return;
if (!frmVoteBar.tsbVoteStart.Enabled) return;
if (frmVoteBar.IsVoteStart)
frmVoteBar.VoteBarChange(4);
}
return;
}
if (ReqInfo == "7")//正确答案
{
if (isPlay)
{
if (frmVoteBar.tsbCorrectAnswer.Enabled)
frmVoteBar.tsbCorrectAnswer.Checked = !frmVoteBar.tsbCorrectAnswer.Checked;
}
return;
}
if (ReqInfo == "8")//选项选择率
{
if (isPlay)
{
if (frmVoteBar.ddbAnalyzer.Enabled)
{
bool beCatch = false;
frmVoteBar.BeShowDialogFullAndTrySelect = true;
frmVoteBar.ShowSlideID = Globals.SunVoteARSAddIn.PPTShow.SlideShow.SlideID;
frmVoteBar.HotKey_KeyDownEvent((int)Keys.D2, "", 4, out beCatch);
}
}
return;
}
if (ReqInfo == "15")//退出播放
{
sldShowWin.View.Exit();
return;
}
if (Dic50R_R5X == null)
Dic50R_R5X = new Dictionary();
if (Dic50R_R5X.Count < 1)
{
Dic50R_R5X.Add("13", "11");//ESC键
Dic50R_R5X.Add("10", "10");//随机点名
Dic50R_R5X.Add("11", "12");//启动抢答
Dic50R_R5X.Add("1", "1");//从当前页播放PPT
Dic50R_R5X.Add("3", "2");//上翻键
Dic50R_R5X.Add("2", "3");//从头播放PPT
//Dic50R_R5X.Add("", "4");//启动/停止投票反馈
//Dic50R_R5X.Add("", "5");//回车键/显示答案 暂做下翻键
Dic50R_R5X.Add("14", "6");//清除反馈数据
Dic50R_R5X.Add("5", "7");//显示/隐藏反馈图表
Dic50R_R5X.Add("6", "8");//下翻键
Dic50R_R5X.Add("4", "9");//按键明细查看键
}
ReqInfo = Dic50R_R5X[ReqInfo];
}
else if (GlobalInfo.sysConfig.RemontControl == "R53")//50R转换R53。杨斌 2020-03-20
{
//硬件换人搞遥控器,按键值协议全乱了,跟以前40R、50R、R51、R52完全不兼容,只好进行转换。杨斌 2020-03-24
Dictionary dicR53_Old = new Dictionary();
dicR53_Old.Add("19", "1");
dicR53_Old.Add("20", "3");
dicR53_Old.Add("1", "4");
dicR53_Old.Add("2", "5");
dicR53_Old.Add("3", "6");
dicR53_Old.Add("4", "7");
dicR53_Old.Add("5", "8");
dicR53_Old.Add("6", "9");
dicR53_Old.Add("7", "10");
dicR53_Old.Add("8", "11");
dicR53_Old.Add("9", "12");
dicR53_Old.Add("16", "13");
dicR53_Old.Add("10", "14");
dicR53_Old.Add("17", "15");
if (dicR53_Old.ContainsKey(ReqInfo))
{
ReqInfo = dicR53_Old[ReqInfo];
}
else
{
return;
}
if (ReqInfo == "12")//启动反馈
{
if (isPlay)
{
if (isNomalSlide) return;
if (!frmVoteBar.tsbVoteStart.Enabled) return;
if (!frmVoteBar.IsVoteStart)
frmVoteBar.VoteBarChange(4);
}
return;
}
if (ReqInfo == "15")//停止反馈
{
if (isPlay)
{
if (isNomalSlide) return;
if (!frmVoteBar.tsbVoteStart.Enabled) return;
if (frmVoteBar.IsVoteStart)
frmVoteBar.VoteBarChange(4);
}
return;
}
if (ReqInfo == "7")//正确答案
{
if (isPlay)
{
if (frmVoteBar.tsbCorrectAnswer.Enabled)
frmVoteBar.tsbCorrectAnswer.Checked = !frmVoteBar.tsbCorrectAnswer.Checked;
}
return;
}
/*//
if (ReqInfo == "2")//选项选择率。R53对比R52去掉一个"选项选择率"按键。杨斌 2020-03-20
{
if (isPlay)
{
if (frmVoteBar.ddbAnalyzer.Enabled)
{
bool beCatch = false;
frmVoteBar.BeShowDialogFullAndTrySelect = true;
frmVoteBar.ShowSlideID = Globals.SunVoteARSAddIn.PPTShow.SlideShow.SlideID;
frmVoteBar.HotKey_KeyDownEvent((int)Keys.D2, "", 4, out beCatch);
}
}
return;
}//*/
if (ReqInfo == "8")//退出播放
{
sldShowWin.View.Exit();
return;
}
if (Dic50R_R5X == null)
Dic50R_R5X = new Dictionary();
if (Dic50R_R5X.Count < 1)
{
Dic50R_R5X.Add("13", "11");//ESC键
Dic50R_R5X.Add("10", "10");//随机点名
Dic50R_R5X.Add("11", "12");//启动抢答
Dic50R_R5X.Add("1", "1");//从当前页播放PPT
Dic50R_R5X.Add("6", "2");//上翻键
Dic50R_R5X.Add("3", "3");//从头播放PPT
//Dic50R_R5X.Add("", "4");//启动/停止投票反馈
//Dic50R_R5X.Add("", "5");//回车键/显示答案 暂做下翻键
Dic50R_R5X.Add("14", "6");//清除反馈数据
Dic50R_R5X.Add("5", "7");//显示/隐藏反馈图表
Dic50R_R5X.Add("9", "8");//下翻键
Dic50R_R5X.Add("4", "9");//按键明细查看键
}
ReqInfo = Dic50R_R5X[ReqInfo];
}//50R转换R53。杨斌 2020-03-20
//先处理模式窗体判断
switch (ReqInfo)
{
case "11"://ESC键
if (isPlay)
{
//if (!isPlay) return;
if (frmVoteBar.IsRunFrmRushAnswer)
{
frmVoteBar.frmRushAnswer.Close();
return;
}
if (frmVoteBar.IsFrmRunLuckyShow)
{
frmVoteBar.frmLuckyShow.Close();
return;
}
if (frmVoteBar.IsFrmRunAnalyzeRateOption)//杨斌 2019-07-04
{
frmVoteBar.FDialog.Close();
return;
}
if (frmVoteBar.DetailShow)
{
if ((GlobalInfo.sysConfig.RemontControl == "R52")
|| (GlobalInfo.sysConfig.RemontControl == "R53"))//杨斌 2020-03-20
{
frmVoteBar.frmVoteDetail.Close();
}
else
{
frmVoteBar.VoteBarChange(9);
}
}
else if ((GlobalInfo.sysConfig.RemontControl != "R52") //杨斌 2019-07-03
&& (GlobalInfo.sysConfig.RemontControl != "R53"))//杨斌 2020-03-20
{
sldShowWin.View.Exit();
return;
}
}
break;
case "10"://随机点名 杨斌 2013-12-24
if (!isPlay) return;
////2014-2-25 云智慧要求显示正确答案 赵丽
//if (GlobalInfo.OEMLogo == OEMLogos.oemYZH)
//{
// if (isNomalSlide) return;
// if (!frmVoteBar.tsbVoteDetail.Enabled) return;
// frmVoteBar.tsbCorrectAnswer.Checked = !frmVoteBar.tsbCorrectAnswer.Checked;
//}
//else
//{
if (frmVoteBar.IsRunFrmRushAnswer)
return;
if (frmVoteBar.IsFrmRunLuckyShow)
{
frmVoteBar.frmLuckyShow.PressSpace();
return;
}
InitTmrRunRemote();
tmrRunRemote.Tag = ReqInfo;
if (tmrRunRemote is System.Timers.Timer)
tmrRunRemote_Tick(null, null);//杨斌 2018-03-16
else
tmrRunRemote.Start();
//}
break;
case "12"://启动抢答 杨斌 2013-12-24
if (!isPlay) return;
if (frmVoteBar.IsVoteStart)//杨斌 2017-03-29
return;
if (frmVoteBar.IsRunFrmRushAnswer)
return;
if (frmVoteBar.IsFrmRunLuckyShow)
return;
InitTmrRunRemote();
tmrRunRemote.Tag = ReqInfo;
if (tmrRunRemote is System.Timers.Timer)
tmrRunRemote_Tick(null, null);//杨斌 2018-03-16
else
tmrRunRemote.Start();
break;
default://其他按键在模式窗体下无效
if (!isPlay) break;
if (frmVoteBar.IsRunFrmRushAnswer)
return;
if (frmVoteBar.IsFrmRunLuckyShow)
return;
break;
}
switch (ReqInfo)
{
case "1"://从当前页播放PPT
if (isPlay) return;
if (!IsFocusPowerPoint()) ActivePres();//if (!IsFocusPowerPoint()) return;
SendKey("+{F5}");
break;
case "2"://上翻键
if (!isPlay)
{
SendKey("{UP}");
}
else//杨斌 2016-10-26
{
if (frmVoteBar.IsVoteStart)
frmVoteBar.VoteStart(false);
else
sldShowWin.View.Previous();
}
break;
case "3"://从头播放PPT
if (isPlay) return;
if (!IsFocusPowerPoint()) ActivePres();//if (!IsFocusPowerPoint()) return;
SendKey("{F5}");
break;
case "4"://启动/停止投票反馈
if (isPlay)
{
if (isNomalSlide) return;
if (!frmVoteBar.tsbVoteStart.Enabled) return;
frmVoteBar.VoteBarChange(4);
}
else
{
SendKey("{LEFT}");
}
break;
case "5"://回车键 暂做下翻键 杨斌 2013-12-24
if (isPlay)
{
//杨斌 2014-08-12
if (frmVoteBar.tsbCorrectAnswer.Enabled)
frmVoteBar.tsbCorrectAnswer.Checked = !frmVoteBar.tsbCorrectAnswer.Checked;
}
else
{
SendKey("{DOWN}");
}
break;
case "6"://清除反馈数据
if (isPlay)
{
if (isNomalSlide) return;
if (!frmVoteBar.tsbVoteClear.Enabled) return;
//frmVoteBar.VoteBarChange(6);
frmVoteBar.VoteClearNoMsg();
}
else
{
SendKey("{RIGHT}");
}
break;
case "7"://显示/隐藏反馈图表
if (!isPlay) return;
if (isNomalSlide) return;
frmVoteBar.VoteBarChange(7);
break;
case "8"://下翻键
if (!isPlay)
SendKey("{DOWN}");
else//杨斌 2014-08-21
{
if (frmVoteBar.IsVoteStart)
frmVoteBar.VoteStart(false);
else
sldShowWin.View.Next();
}
break;
case "9"://按键明细查看键
if (!isPlay) return;
if (isNomalSlide) return;
if (!frmVoteBar.tsbVoteDetail.Enabled) return;
frmVoteBar.VoteBarChange(9);
break;
}
}
///
/// 50R遥控。杨斌 2016-08-08
///
void ARSRequest_ChairControl(string BaseTag, int KeyID, int ReqType, string ReqInfo)
{
ARSRequest_ChairControlSN(BaseTag, KeyID.ToString(), ReqType, ReqInfo);
}
private Timer tmrRunRemote = null;
private void InitTmrRunRemote()
{
if (tmrRunRemote == null)
{
tmrRunRemote = new Timer();
tmrRunRemote.Interval = 1;
tmrRunRemote.Tick += new EventHandler(tmrRunRemote_Tick);
}
}
void tmrRunRemote_Tick(object sender, EventArgs e)
{
tmrRunRemote.Stop();
if (IsExitApp)//杨斌 2015-11-10
return;
switch (tmrRunRemote.Tag.ToString())
{
case "10"://随机点名 杨斌 2013-12-24
//if (!isPlay) return;
if (!frmVoteBar.tsbLuckyShow.Enabled) return;
frmVoteBar.tsbLuckyShow_Click(frmVoteBar.tsbLuckyShow, null);
break;
case "12"://启动抢答 杨斌 2013-12-24
//if (!isPlay) return;
if (!frmVoteBar.tsbRushAnswer.Enabled) return;
frmVoteBar.tsbRushAnswer_Click(frmVoteBar.tsbRushAnswer, null);
break;
}
}
#region VSTO 生成的代码
///
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
///
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
///
/// 调用授权菜单
///
///
public void ShowCanVoteSet(string cboValue)
{
TagSet tagSet = new TagSet();
tagSet.Tags = Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.Tags;
switch (cboValue)
{
case "cvAll":
tagSet.SetValue(TagKey.ResponsePara_CanVote, cboValue);
break;
case "cvPerson":
FrmCanVoteVoterGroup frmCanVoteVoterGroup = new FrmCanVoteVoterGroup();
frmCanVoteVoterGroup.ShowDialog();
if (frmCanVoteVoterGroup.DialogResult == DialogResult.OK)
{
tagSet.SetValue(TagKey.ResponsePara_CanVote, cboValue);
//tagSet.SetValue(TagKey.ResponsePara_CanVote,((ComboItem)cbo.Items[index]).EnumValue
}
break;
case "cvTopic":
FrmCanVoteSlideResult frmCanVoteSlideResult = new FrmCanVoteSlideResult();
frmCanVoteSlideResult.ShowDialog();
if (frmCanVoteSlideResult.DialogResult == DialogResult.OK)
{
tagSet.SetValue(TagKey.ResponsePara_CanVote, cboValue);
}
break;
default:
break;
}
}
}
}