APP下载

VB程序实现PPT演示文稿记时

2018-03-21张玉虎

电子技术与软件工程 2018年2期
关键词:VB程序设计

摘 要 在电脑、网络普及的今天,PPT(PowerPoint)以其制作简单,功能强大,被广泛运用在专题讲座、工作汇报、项目申报、单位年终述职、述廉等工作中。 比如在单位年终述职、述廉工作中,因为参加的人员较多,为了公平起见,给每人限定时间用PPT演示文稿对自己的工作做介绍,所以设计一款小程序对PPT演示文稿进行记时有一定的实用价值,本文以限定6分钟演示时间为例,介绍VB程序设计、实现的全过程。

【关键词】VB程序设计 PPT演示文稿 记时

1 引言

本程序为驻留程序,设计监测、显示、处理三个模块,监测模块一旦监测到PPT演示文稿运行,立即调用显示模块显示PPT文稿演示时间,如果演示时间到,处理模块将关闭PPT演示文稿,并提示:演示时间到。

程序流程图如图1所示。

2 实现过程

2.1 处理模块的实现

该模块的主要功能是关闭PPT文件,定义一个Killppt(Sppt As String)过程实现。

Private Sub KILLppt(sPPT As String)

Dim PPTSSot As Long

Dim PPTppss As Long

Dim PPTpe As PPTRY32

PPTSSot = CreateToolhelp32Snapshot(&H2;&, 0&)

If PPTSSot <> -1 Then

PPTpe.PPTSize = Len(PPTpe)

PPTppss = Process32First(PPTSSot, PPTpe)

Do While PPTppss

If LCase$(sPPT) = LCase$(Left(PPTpe.PPTexitfl, InStr(1, PPTpe.PPTexitfl, Chr(0)) - 1)) Then

Dim PPTss11 As Long

Dim PPTcode As Long

PPTss11 = OpenProcess(1, False, PPTpe.PPT32pss)

TerminateProcess PPTss11, PPTcode

CloseHandle PPTss11

End If

PPTppss = Process32Next(PPTSSot, PPTpe)

Loop

CloseHandle (PPTSSot)

End If

End Sub

2.2 监测模块的实现

该模块主要检测PPT演示文稿的运行,一旦监测到PPT演示文稿启动运行,调用显示模块开始对PPT演示文稿运行时间进行倒记时,并在屏幕最上方显示倒记时效果,一旦设定的PPT文稿演示时间到,该模块调用处理模块关闭PPT演示文稿,并提示“您的演示时间到”信息;该模块还有一个功能就是保证显示模块一直处在最上面透明显示,不因为演示者操作电脑影响显示效果,通过VB时钟控件实现,主要程序代码如下:

Private Sub Timer1_Timer()

'如何窗体不在最前面,就把窗体放到最前面并透明

If pptrtValue <> SetWindowPos(Me.hwnd, HWND_TOPMOST, Me.CurrentX, Me.CurrentY, 300, 300, SWP_SHOWWINDOW) Then

Call SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, 3) '调用窗体处理的API函数,“通用“处申明

Me.BackColor = vbRed '透明色为红色

SetWindowLong Me.hwnd, -20, GetWindowLong(Me.hwnd, -20) Or &H80000;

SetLayeredWindowAttributes Me.hwnd, vbRed, 0, 1

Label1.BackColor = Me.BackColor

End If

BorderStyle = 0

If Exitppt("POWERPNT.EXE") Then '检测进程

a = Val(a) - 1

If a = 0 Then

a = 60

b = Val(b) - 1

End If

Label1.Caption = b & "分鐘" & a & "秒" '显示模块显示PPT演示文稿倒计时

If b = 0 And a = 1 Then

a = a - 1

Call KILLppt("POWERPNT.EXE") '调用处理模块关闭演示文稿

Label1.Caption = "您的时间倒,谢谢!"

a = 60

b = 5

End If

Else

a = 60

b = 5

End If

End Sub

2.3 显示模块的实现

显示模块也就是程序的界面,程序运行后驻留内存,当监控模块监控倒PPT演示文稿运行时,程序界面在屏幕左上方出现,显示PPT演示文稿倒记时效果,程序代码如下:

Private Sub Form_Load()

Call SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, 3)

Me.BackColor = vbRed '透明色为红色

SetWindowLong Me.hwnd, -20, GetWindowLong(Me.hwnd, -20) Or &H80000;

SetLayeredWindowAttributes Me.hwnd, vbRed, 0, 1

Label1.BackColor = Me.BackColor

a = 60

b = 5

End Sub

3 几点说明

(1)为了提高编程效率,本程序使用了以下几个窗体处理和程序线程、句柄处理的API函数,可以在窗体代码的“通用部分”声明,本文略。

SetWindowPos,SetWindowLon,SetLayerpptedWindowAttrpptibute,GetWindowLong

CreateToolhelp32Snapshot,Process32First,Process32Next,OpenProcess,TerminateProcess, CloseHandle

(2)程序需要的数据结构如下,窗体代码“通用部分”声明。

Private Type PPTRY32

PPTSize As Long

PPTUge As Long

PPT32pss As Long

PPTfls As Long

PPTexitfl As String * MAX_PPT

End Type

Const PPT_PALL = (&H1; Or &H2;& Or &H4; Or &H8;)

Const MAX_PPT As Integer = 260

Dim a as integer

Dim b as integer

(3)程序在固原市氣象局多年运行稳定,程序运行后驻留内存,无任何操作界面,倒记时显示醒目,受到喜爱。

(4)在窗体代码“通用部分”申明Exitppt函数,该函数为Boolean类型,用于遍历内存中是否有PPT文件运行,供监控模块调用,函数如下:

Function Exitppt(ByVal PPTexe As String) As Boolean

Exitppt = False '先将该函数过程赋值为假

Dim PPT_Hshot As Long, PPT_pcess As PROCESSENTRY32

PPT_Hshot = CreateToolhelp32Snapshot(PPT_PALL, 0&) '给系统进程创建快照,调用成功 则返回快照的句柄

PPT_pcess.dwSize = Len(PPT_pcess)

r = Process32First(PPT_Hshot, PPT_pcess) '初始遍历进程

Do While r

If Left$(PPT_pcess.szExeFile, IIf(InStr(1, PPT_pcess.szExeFile, Chr$(0)) > 0, InStr(1, PPT_pcess.szExeFile, Chr$(0)) - 1, 0)) = PPTexe Then 'left '通过进程列表,判断是否有PPT文件运行

Exitppt = True '该函数返回真 进程存在

Exit Do '循环退出

End If

r = Process32Next(PPT_Hshot, PPT_pcess) '遍历下一个进程

Loop

End Function

4 程序运行效果

参考文献

[1]王娟,黄耀群.基于C++ Builderppt 的串口通信程序实现方法[J].煤矿电气,2014(02).

作者简介

张玉虎,宁夏固原市气象局工程师,从事气象设备保障维护工作。

作者单位

宁夏固原市气象局 宁夏回族自治区固原市 756000

猜你喜欢

VB程序设计
浅析VB程序设计教学方法的改革
感悟初中程序设计教学
VB程序设计的教学改革思考
食品专业的《VB程序设计》教学方法探究