求屏幕锁定源代码(实现马上给分,有能力者快进来)

Qthinker 2003-11-02 11:24:09
我是一个VB新手,想学习API,
特请高手帮助我编一个屏幕锁定程序

http://www.hktk.com/soft/soft_desktool/pingmusd.html
功能差不多的软件源代码
...全文
408 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2003-11-09
  • 打赏
  • 举报
回复
一个例子:
http://www.applevb.com/sourcecode/lockcmp.zip
CCL 2003-11-08
  • 打赏
  • 举报
回复
如果只是想“锁定屏幕”,可以用LockWindowUpdate,锁定桌面内容的更新
如果是想“锁定操作”,可以用BlockInput。
sheerfish999 2003-11-08
  • 打赏
  • 举报
回复
先抓取当前图象,作为窗体的背景,窗体enable=false,模式全屏,然后:
''''''''''''''''禁止使用 Alt-Tab 或 Ctrl-Alt-Del
Private Declare Function EnableWindow Lib "user32" (ByVal hWnd As Short, ByVal aBOOL As Short) As Short
Private Declare Function IsWindowEnabled Lib "user32" (ByVal hWnd As Short) As Short
Private Declare Function GetMenu Lib "user32" (ByVal hWnd As Short) As Short
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"(ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA"(ByVal uAction As Integer, ByVal uParam As Integer, ByVal lpvParam As Any, ByVal fuWinIni As Integer) As Integer

Private TaskBarhWnd As Integer
Private IsTaskBarEnabled As Short
Private TaskBarMenuHwnd As Short


Const SPI_SCREENSAVERRUNNING As Short = 97




'禁止或允许使用 Alt-Tab
Sub FastTaskSwitching(ByRef bEnabled As Boolean)
Dim X, bDisabled As Integer
bDisabled = Not bEnabled
X = SystemParametersInfo(97, bDisabled, CStr(1), 0)
End Sub
'禁止使用Ctrl-Alt-Del
Public Sub DisableTaskBar()
Dim EWindow As Short
TaskBarhWnd = FindWindow("Shell_traywnd", "")
If TaskBarhWnd <> 0 Then
EWindow = IsWindowEnabled(TaskBarhWnd)
If EWindow = 1 Then
IsTaskBarEnabled = EnableWindow(TaskBarhWnd, 0)
End If
End If
End Sub


Public Sub EnableTaskBar()
'允许使用Ctrl -Alt - Del
If IsTaskBarEnabled = 0 Then
IsTaskBarEnabled = EnableWindow(TaskBarhWnd, 1)
End If
End Sub


用法:
'禁止c+a+d
Dim pOld As String
Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0)

Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, pOld, 0)

至于详细怎么写看你自己的了(注意:如果程序退出前仍没有解除禁用,那么程序退出后仍有作用,除非重启!)
Rangiggs 2003-11-07
  • 打赏
  • 举报
回复
UP
lvlvlvlylyly 2003-11-06
  • 打赏
  • 举报
回复
呵呵~我有一种另类的锁屏方法~
只需要一个函数~

可是我不想说~(主要是说不清楚~)
3661512 2003-11-05
  • 打赏
  • 举报
回复
用Visual Basic设计Windows门禁程序
http://www.yesky.com/20020122/214855.shtml
xiaoliou 2003-11-03
  • 打赏
  • 举报
回复
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" _
(ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, _
ByVal fuWinIni As Long) As Long

Private Sub Form_Load()
Dim myval As Long
myval = SystemParametersInfo(97, True, CStr(1), 0)
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If Text1.Text = "12345" And KeyCode = vbKeyReturn Then
Dim myval As Long
myval = SystemParametersInfo(97, False, CStr(1), 0)
End
End If
End Sub
这个程序不能屏蔽开始快捷键
Gelim 2003-11-02
  • 打赏
  • 举报
回复
看了那个程序,她只是锁定了鼠标,键盘仍然可以使用,好象还有点不完善!

而且,鼠标在用键盘新开启的程序中失去了原来的效果!

我分析她的功能可能是使用了回调函数截获了windows的鼠标消息,

然后通过getdc(0)的方法得到桌面的hDC,然后使用lineto划线。

在启动程序之初,可能使用EnumWindows枚举了所有的窗口!


EnumWindows

VB声明
Declare Function EnumWindows& Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long)
说明
枚举窗口列表中的所有父窗口(顶级和被所有窗口)
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
lpEnumFunc Long,指向为每个子窗口都调用的一个函数的指针。用AddressOf运算符获得函数在标准模式下的地址
lParam Long,在枚举期间,传递给dwcbkd32.ocx定制控件之EnumWindows事件的值。这个值的含义是由程序员规定的
注解
我的理解——在随vb5同时提供的api32.txt文件中,找不到这个函数




GetDC

VB声明
Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Long) As Long
说明
获取指定窗口的设备场景
返回值
Long,指定窗口的设备场景句柄,出错则为0
参数表
参数 类型及说明
hwnd Long,将获取其设备场景的窗口的句柄。若为0,则要获取整个屏幕的DC
注解
若窗口所属类具有CS_OWNDC, CS_CLASSDC 或 CS_PARENTDC样式,则获取的设备场景属窗口或类专有。vb的窗体和图片框控件也是这种情况,它用该函数取得的结果和控件的hdc属性相同(在autoredraw为FALSE时)。您无须考虑取回的窗体或图片框控件设备场景的默认状态,特别是绘图对象。另外,默认状态随着窗体和控件autoredraw属性的设置而不同。在设备场景释放前您必须回复其状态为初始值。对于没有CS_OWNDC, CS_CLASSDC 或 CS_PARENTDC样式的窗口的设备场景,可从通用windows缓存中获取,其状态为默认值。缓存中可用设备场景数量是有限的,因此只要可能就释放设备场景
用本函数获取的设备场景一定要用ReleaseDC函数释放,不能用DeleteDC
ReleaseDC

VB声明
Declare Function ReleaseDC Lib "user32" Alias "ReleaseDC" (ByVal hwnd As Long, ByVal hdc As Long) As Long
说明
释放由调用GetDC或GetWindowDC函数获取的指定设备场景。它对类或私有设备场景无效(但这样的调用不会造成损害)
返回值
Long,执行成功为1,否则为0
参数表
参数 类型及说明
hwnd Long,要释放的设备场景相关的窗口句柄
hdc Long,要释放的设备场景句柄
注解
对那些用CreateDC一类的DC创建函数生成的设备场景,不要用本函数




LineTo

VB声明
Declare Function LineTo Lib "gdi32" Alias "LineTo" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
说明
用当前画笔画一条线,从当前位置连到一个指定的点。这个函数调用完毕,当前位置变成x,y点
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hdc Long,设备场景的句柄
x,y Long,线段终点位置,采用逻辑坐标表示。这个点不会实际画出来;它不属于线段的一部分
注解
如重复调用这个函数和一个几何画笔,从而创建一系列线段,那么除非在一个路径的场景中调用,否则不会认为这些线段已结合到一起


busisoft 2003-11-02
  • 打赏
  • 举报
回复
这有什么用啊?
Windows就有这个功能
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧