本人现在正在编一个系统加密程序,当空闲几分钟时,就会启动,并且黑幕.不过用客户身份可登陆系统:
问题如下:
1.(50分)
在黑幕那时隐藏鼠标,而可以单击鼠进入其他程序?
2.(50分)
如何禁用Ctrl+Alt+Del来结束程序?
问题如下:
1.(50分)
在黑幕那时隐藏鼠标,而可以单击鼠进入其他程序?
2.(50分)
如何禁用Ctrl+Alt+Del来结束程序?
解决方案 »
- 菜鸟求助:获取类似文本框窗口中光标所在位置的字符串
- listview类型不匹配的版本问题
- 50分送高手:这段源码取网页源码时,为什么报错?
- 请教各路高手,怎么使用LoadImage函数取图标
- 怎样取得MSFlexGrid单元的内容,单击单元表格就可取得该单元的内容?
- 十万火急!!!!!加多少分都行!!!!!
- treeview莫名其妙的问题
- 没有人会http://www.csdn.net/expert/topic/983/983340.xml?temp=.1515924 的问题吗?那大家来讨论一下,来者有分!!把这两个贴子的100
- 怎样用VB定义窗口的位置?
- 有些人的回答总是不痛不痒,希望得到意外之分,我讨厌这样滥竽充数的人...
- VB问题,急,在线等待。
- 请高手指点数组问题!谢谢了!
http://expert.csdn.net/Expert/TopicView1.asp?id=2212553
隐藏鼠标可用API函数ShowCursor(FALSE/TRUE)来实现
单击鼠进入其他程序可通过设自己的窗口状态为最小化WindowState=1来实现
2、禁止 Ctrl+Alt+Del
Const SPI_SCREENSAVERRUNNING = 97
Private Declare Function SystemParametersInfo Lib "user32" Alias _
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, _
lpvParam As Any, ByVal fuWinIni As Long) As Long
使用:
'禁止
Dim pOld As Boolean
Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0)
'开启
Dim pOld As Boolean
Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, pOld, 0)
说明:
控制鼠标指针的可视性
声明:
Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long返回值:
Long,显示计数。windows维持着一个内部显示计数;倘若bShow为TRUE,那么每调用一次这个函数,计数就会递增1;反之,如bShow为FALSE,则计数递减1。只有在这个计数大于或等于0的情况下,指针才会显示出来
参数:
bShow ---------- Long,TRUE(非零)显示指针,FALSE隐藏至于单击鼠标后进行某种操作,你应该在子类中截获有关消息,进行处理。
//如何禁用Ctrl+Alt+Del来结束程序
这个问题如果在98下很容易解决,如果在win2k下就很麻烦了,不过也不是没有办法,以前讨论过这个问题,你可以搜索一下。
Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
Declare Function SetCursorPos Lib "user32" (ByVal x As Long, _
ByVal y As Long) As Long
ShowCursor (False)'隐藏鼠标指针
2.(50分)
将程序做成服务.
http://www.dapha.net/down/list.asp?id=2035
你需要定时执行一个程序吗?
你需要定时执行一个程序吗?或者不想让你的程序在系统开始的时候就启动,甚至你根本就不想让人知道你的程序是怎么调度的,就算别人在任务管理器中查到了你的程序,没关系,它的属性是系统服务,也就是说根本不能像结束其他进程一样结束你的程序。 在模块中放入下面内容: Option Explicit
Type AT_INFO 定时任务消息。
JobTime As Long ’设置为你要执行程序的时间。
DaysOfMonth As Long ’如果你希望你的程序再每月的某一天运行,设置它。
DaysOfWeek As Byte ’如果你希望你的程序再每个星期的某一天运行,设置它。
Flags As Byte ’定时任务标志。
Command As String
End Type
Public Const JOB_RUN_PERIODICALLY = &H1 按预定义执行。
Public Const JOB_NONINTERACTIVE = &H10 ’是否允许你的定时程序不受任何影响的执行
Public Const NERR_Success = 0 ’表示定时设置成功。 Declare Function NetScheduleJobDel Lib "netapi32.dll" (ByVal servername As String, min As Long, max As Long) As Long
Declare Function NetScheduleJobEnum Lib "netapi32.dll" (ByVal servername As String, buffer As Any, PreferredMaximumLength As Long, EntriesRead As Long, TotalEntries As Long, ResumeHandle As Long) As Long
Declare Function NetScheduleJobAdd Lib "netapi32.dll" (ByVal servername As String, buffer As Any, JobId As Long) As Long 在窗体中放入下面内容: Private Sub Command1_Click()
Dim lngWin32apiResultCode As Long
Dim strComputerName As String
Dim lngJobID As Long
Dim udtAtInfo As AT_INFO
Dim udt(20) As AT_INFO
Dim a As Long
Dim m As Long
Dim n As Long
'转变你的计算机名为Unicode-----因为这几个函数仅仅支持Unicode,即仅仅被windows2000,windowsNT 或windowsXP
strComputerName = StrConv(Text1.Text, vbUnicode)
' Setup the tasks parameters
SetStructvalue udtAtInfo
' 添加你的定时任务。
lngWin32apiResultCode = NetScheduleJobAdd(strComputerName, udtAtInfo, lngJobID)
' 检查你的定时任务是否设置成功,注意windows98返回失败。
If lngWin32apiResultCode = NERR_Success Then
MsgBox "程序" & lngJobID & " 定时设置成功。"
End If
End Sub
Private Sub SetStructvalue(udtAtInfo As AT_INFO)
Dim strTime As String
Dim strDate() As String
Dim vntWeek() As Variant
Dim intCounter As Integer
Dim intWeekCounter As Integer
’注意下面的格式,可能影响你的输入。(你可以设置你的格式)
vntWeek = Array("M", "T", "W", "TH", "F", "S", "SU")
With udtAtInfo
' 改变这个时间格式。
strTime = FORMat(Text2.Text, "hh:mm")
' 把时间都换算成统一的毫秒单位。
.JobTime = (Hour(strTime) * 3600 + Minute(strTime) * 60) * 1000
' 设置日期参数。
If Val(Text3.Text) > 0 Then
' 设置你的程序在指定的每月的某一天运行。
strDate = Split(Text3.Text, ",")
For intCounter = 0 To UBound(strDate)
.DaysOfMonth = .DaysOfMonth + 2 ^ (strDate(intCounter) - 1)
Next
Else
' 设置你的程序在指定的每星期的某一天运行。
strDate = Split(Text3.Text, ",")
For intCounter = 0 To UBound(strDate)
For intWeekCounter = 0 To UBound(vntWeek)
If UCase(strDate(intCounter)) = vntWeek(intWeekCounter) Then
.DaysOfWeek = .DaysOfWeek + 2 ^ intWeekCounter
Exit For
End If
Next
Next
End If
' 设置允许你的定时程序不受任何影响的执行。
If Check1.value = vbUnchecked Then
.Flags = .Flags Or JOB_NONINTERACTIVE
End If
'设置为按预定义执行。
If Option2.value = True Then
.Flags = .Flags Or JOB_RUN_PERIODICALLY
End If
' 你可以设置你的运行参数。
.Command = StrConv(Text4.Text, vbUnicode)
End With
End Sub
在NT/2000中交互式的登陆支持是由WinLogon调用GINA DLL实现的,GINA DLL提供了一个交互式的界面为用户登陆提供认证请求。在WinLogon初始化时,就向系统注册截获CTRL+ALT+DEL消息,所以其他程序就无法得到CTRL+ALT+DEL的消息。
WinLogon会和GINA DLL进行交互,缺省是MSGINA.DLL(在System32目录下)。微软同时也为我们提供了接口,我们可以编GINA DLL来代替MSGINA.DLL。