VB与Windows API讲座(二) 萤幕抓取与萤幕保护程式
文章来源:vb大世界 作者:王国荣
「VB 没有提供这样的功能, 必须呼叫 Windows API」, 当笔者这样回答读者之後,有些读者会要求笔者介绍 Windows API 方面的书籍, 尤其是中文书, 但实际上,目前市面上只看到一本原文书(ZD Press 出版的 Visual Basic 5.0 Programming Guide to Win32 API), 中文书则未见过, 为什麽没有 Windows API 方面的中文书呢?道理很简单, Windows API 对 VB 的学习者而言, 犹如山峰之颠, 能够一路爬上来的人原本就十分有限,而越往山顶, 人烟越稀少, 因此这样的书写出来, 销售成绩必然惨不忍睹, 也许有些读者会觉得本土的作者实在很混,只愿意写简单的书, 但撰写深入的书籍, 费时费力费神而销售成绩又不好, 最终结果是这种不混的作者混不下去,当过读者而现在又是作者的笔者, 对於此一现象有时也颇感无奈。
不管怎样, 笔者现在已经开始介绍 Windows API 了, 也许真的不想混了,但混与不混不是笔者开启本系列讲座最担心的事情, 笔者所担心的是这样的主题对读者来说会不会太枯燥?会不会太艰涩?会不会像笔者当初研读 Windows API 时, 越研读心中的疑问越多, 就好像进入无底黑洞一样?
为了避免以上的结果, 在内容的介绍上, 笔者会倾向於即学即用的 API, 短期内尽量避免深入 Windows 无底黑洞地带, 而会先到那些有花有草地方。
本期笔者想引领您去的地方是:萤幕抓取程式与萤幕保护程式。
萤幕抓取程式简介
如果不写程式, 抓取萤幕图像的方法是:按下 Print Screen 键, 然後开启 Windows 的小画家, 接着选取小画家功能表的「编辑/贴上」, 即可将萤幕图像复制到小画家的绘图区域中。
如果写程式呢?稍後笔者就会介绍, 介绍以前, 建议您先进入笔者的网站下载笔者所撰写的萤幕抓取程式(CopyScr.vbp),一来可了解程式的基本运作模式, 二来不必自己输入程式, 此一程式执行後,选取功能表的「我抓我抓我抓抓」, 即可将萤幕的图像复制进来。
萤幕保护程式简介
保护萤幕最简单的方法就是不用时关掉它, 但有这种好习惯的人实在不多,所以有人写程式侦测滑鼠与键盘的输入, 如果有一段时间没有滑鼠或键盘的输入,便将电脑视为没有人在使用, 而把萤幕显示成黑色, 用以保护萤幕, 後来又有人觉得黑色太难看了,就加了一点动画, 慢慢地动画越来越多也越有趣, 结果反倒成为萤幕保护程式不可或缺的功能,而不再以保护萤幕为主了。
如何撰写萤幕保护程式当然也是本期的重点, 同样的, 介绍以
相关文档:
文章来源: http://www.zoesan.com By Error 302777528转载请注明出处
以上vb用到指针技术查找字符串与c#一般的.indexof()查找相比较,明显看出谁快谁慢。
VB:
Option Explicit
'指针方法操作字符串
'Copy一个字符串到缓存中
Public Declare Function GetTickCount Lib "kernel32" () As Long
Public ......
Introduction
This article is about passing data between VB.NET/C# WinForms and JavaScript.
Before reading further, let me warn you that this article is not about ASP.NET. Concepts covered in the article are applied to Desktop applications.
Background
I was working on a project which required dat ......
Option Explicit
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const scuseragent = "vb wininet"
Private Const INTERNET_FLAG_PASSIVE = &H8000000
'调用设置环境
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long ......
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Private Const EWX_LOGOFF = 0
Private Const EWX_SHUTDOWN = 1
Private Const EWX_REBOOT = 2
Private Const EWX_FORCE = 4
Private closeTime As String
Sub AdjustTokenPrivilegesForNT()
......