VB中利用API函数实现屏幕颜色数设定

合集下载

在VB中使用API函数(之一)VB-电脑资料

在VB中使用API函数(之一)VB-电脑资料

在VB中使用API函数(之一)VB-电脑资料在VB 中使用API函数(之一) 什么是API? API(Advanced Programmers Interface,高级程序员接口)(注:API实际是指Application Programming Interface,应用程序编程接口;此处疑为原文错误,不过在VB中也可以这么说吧!)是一套用来控制 Windows 的各个部件(从桌面在VB中使用API函数 (之一)什么是API?API(Advanced Programmers Interface,高级程序员接口)(注:API 实际是指Application Programming Interface,应用程序编程接口;此处疑为原文错误,不过在VB中也可以这么说吧!)是一套用来控制Windows的各个部件(从桌面的外观到位一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以Windows告诉发生了什么.这在某种程度上很象Windows的天然代码.其他的语言只是提供一种能自动而且更容易的访问API的方法.VB在这方面作了很多工作.它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法.这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows.例如,Form1.Print...VB 将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数.同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Button_Click).API函数包含在Windows系统目录下的动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll...).API 声明正如在"什么是API"中所说,API函数包含在位于系统目录下的DLL 文件中.你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用API Text Viewer.要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32api.txt(或.MDB如果你已经把它转换成了数据库的话,这样可以加快速度.注:微软的这个文件有很多的不足,你可以试一下本站提供下载的api32.txt),选择"声明",找到所需函数,点击"添加(Add)"并"复制(Copy)",然后粘贴(Paste)到你的工程里.使用预定义的常量和类型也是同样的方法.你将会遇到一些问题:假设你想在你的窗体模块中声明一个函数.粘贴然后运行,VB会告诉你:编译错误...Declare 语句不允许作为类或对象模块中的Public 成员...看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(如Private Declare Function...).--不要忘了,可是这将使该函数只在该窗体模块可用.在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数.常量或其他的什么东西共用了一个名称.由于绝大多数的函数(也可能是全部,我没有验证过)都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行.你可以通过查看VB的Declare语句帮助主题来获取有关Alias的详细说明.消息(Messages)好了,现在你已经知道什么是API函数了,但你也一定听说过消息(如果你还没有,你很快就会)并且想知道它是什么.消息是Windows告诉你的程序发生了哪些事件或要求执行特定操作的基本方法.例如,当用户点击一个按钮,移动鼠标,或是向文本框中键入文字时,一条消息就会被发送给你的窗体.所有发送的消息都有四个参数--一个窗口句柄(hwnd),一个消息编号(msg)还有两个32位长度(Long)的参数.hwnd即要接受消息的一个窗口的句柄,msg即消息的标识符(编号).该标识符是指引发消息的动作类型(如移动鼠标),另外两个参数是该消息的附加参数(例如当鼠标移动时光标的当前位置)但是,当消息发送给你时你为什么看不到呢--就象有人在偷你的信一样?请先别恼火,让我告诉你.小偷其实是Visual Basic.但它并没有偷走你的信,而是在阅读了之后挑出重要的以一种好的方式告诉你.这种方式就是你代码中的事件(Event).这样,当用户在你的窗体上移动鼠标时,Windows会发送一条WM_MOUSEMOVE消息给你的窗口,VB得到这条消息以及它的参数并运行你在事件MouseMove中的代码,同时VB会把这条消息的第二个32位数(它包含了x,y坐标,单位为像素(Pixel),每个位16位)转换为两个单精度数,单位为缇(Twip).现在,如果你需要光标坐标的像素表示,然而VB已经把它转换成了缇,因此你需要重新把它转换为以像素为单位.在这里,Windows给了你所需要的,但VB"好意地"进行了转换而使你不得不重新转换.你可能会问--我难道不能自己接收消息吗?答案是肯定的,你可以使用一种叫做子类处理(Subclass)的方法.但你除非必须否则最好不要使用,因为这与VB 的安全程序设计有一点点的违背.(注:子类处理确实有很大的风险,但如果使用得当,是很有用处的.不过有一点一定要注意,即千万不要使用VB 的断点调试功能,这可能会导致VB崩溃!)需要补充说明的是:你可以发送消息给你自己的窗口或其他的窗口,只需调用SendMessage或PostMessage(SendMessage会使接受到消息的窗口立刻处理消息,而PostMessage是把消息发送到一个称为消息队列的队列中去,等候处理(它将会在该消息处理完后返回,例如有些延迟)).你必须制定接受消息的窗口的句柄,欲发送消息的编号(所有的消息的编号均为常量,你可以通过API Text Viewer查得)以及两个32位的参数.。

vba 颜色值范围

vba 颜色值范围

vba 颜色值范围
(实用版)
目录
1.VBA 简介
2.VBA 颜色值范围的定义
3.如何使用 VBA 设置颜色值范围
4.应用实例
正文
【1.VBA 简介】
VBA,全称 Visual Basic for Applications,是一种事件驱动编程语言,主要用于开发 Microsoft Office 应用程序的自定义功能和操作。

通过 VBA,用户可以编写自定义的宏和函数,实现对 Office 软件的个性化定制。

【2.VBA 颜色值范围的定义】
在 VBA 中,颜色值范围通常表示为一个 16 位的整数,其中每个字节代表一个颜色通道(红、绿、蓝)的强度值。

例如,红色通道的强度值为 0-255,绿色通道的强度值为 0-255,蓝色通道的强度值同样为 0-255。

因此,VBA 颜色值范围为 0-65535。

【3.如何使用 VBA 设置颜色值范围】
要使用 VBA 设置颜色值范围,需要使用 VBA 的 Color 函数。

Color 函数的语法如下:
```vba
Color = RGB(red, green, blue)
```
其中,red、green 和 blue 分别表示红色、绿色和蓝色通道的强度值,它们的取值范围均为 0-255。

例如,要将某单元格的背景颜色设置为红色,可以使用以下代码:```vba
Range("A1").Interior.Color = RGB(255, 0, 0)
```
【4.应用实例】
假设我们要为一个名为“成绩表”的工作表设置不同的颜色背景,以区分不同的分数段。

VB中的颜色函数

VB中的颜色函数

VB中的颜色函数Visual Basic提供了两个选择颜色函数QBColor和RGB,其中QBColor函数能够选择16种颜色,RGB函数能够选择更多的颜色。

1、RGB函数(其中R代表红色、G代表绿色、B代表蓝色)一般格式:RGB(数值表达式1,数值表达式2,数值表达式3)其中,数值表达式1的值是[0,255]之间的整数,表示颜色中红色的部分;数值表达式2的值是[0,255]之间的整数,表示颜色中绿色的部分;数值表达式3的值是[0,255]之间的整数,表示颜色中蓝色的部分。

功能:由红、绿、蓝这三种颜色的不同比例值调和生成其他的颜色。

下表列出了一些常见的RGB函数颜色效果。

RGB函数RGB(0,0,0)RGB(255,0,0)RGB(0,255,0)RGB(0,0,255)RGB(0,255,255)RGB(255,0,255)RGB(255,255,0)RGB (255,255,255)2、QBColor函数颜色也可以用QBColor函数来表示。

VB中用QBColor(i)代表一种颜色,如下表:i值颜色黑色蓝色绿色青色红色粉红色黄色白色i值131415颜色灰色亮蓝色亮绿色亮青色亮红色亮粉红色亮黄色亮白色常数VbBlackVbRedVbGreenVbBlueVbCyanVbMagentaVbYellowVbWhite返回值&H0&HFF0&HFF00&HFF00&HFF00&HFF00FF&HFF&HFFF颜色黑色红色绿色蓝色青色紫红色黄色白色QBColor函数返回一个Long,用来表示所对应颜色值的RGB 颜色码。

语法QBColor(color)必要的color参数是一个界于0到15的整型。

设置值color参数有以下这些设置:值颜色0黑色8灰色1兰色9亮兰色2绿色10亮绿色3青色11亮青色4红色12亮红色5洋红色13亮洋红色6黄色14亮黄色7白色15亮白色说明color参数代表使用于早期版本的Basic(诸如MicrosoftVisualBasicforMS-DOS以及BasicCompiler)的颜色值。

VB API函数大全

VB API函数大全
列举安装在计算机里的所有ocx控件
Returning an ExitCode parameter from an out of process application
从外部应用程序返回参数
Check if a loggin password and user name are correct
检查当前登录的密码和用户名是不是正确的。
Creating new threads to perform asynchronous tasks
创建一个新的线程执行异步任务
Get and set volume information for a drive
得到和设定驱动器的卷信息
Using the ShellExecute API to send mails and print documents
Show the "File Open" Common Dialog
显示“文件打开”对话框
Converting Class IDs to a Prog IDs and back
转变class ID到一个prog ID
Obtaining the current user name
获得当前用户名
Return the path of the temporary directory
给窗体加上定制的系统菜单
Register Components without using Regsvr32.exe
不使用Regsvr32.exe注册组件
Uncover internal DLL functions with Dependency Walker
公布内部调用的dll函数
Launch a PCs default browser with ShellExecute API

vba 颜色值范围 -回复

vba 颜色值范围 -回复

vba 颜色值范围-回复VBA颜色值范围在VBA程序设计中,颜色是一个非常重要的概念,它可以用来设置或改变对象的外观,使用户界面更加吸引人和易于使用。

在本篇文章中,我们将一步一步地回答关于VBA颜色值范围的相关问题,帮助读者更好地理解和应用颜色。

第一步:认识颜色值在VBA编程中,颜色值是以RGB(红绿蓝)来表示的。

RGB值是一个由三个颜色分量组成的代码,分别表示红色、绿色和蓝色的强度。

每个颜色分量的值范围是0到255之间,其中0表示没有该颜色成分,255表示最大强度。

通过调整这三个分量的值,我们可以得到任何我们想要的颜色。

第二步:RGB函数的使用在VBA中,我们可以使用RGB函数来创建特定颜色的RGB值。

RGB函数的语法如下:RGB(red, green, blue)其中,红色、绿色和蓝色的值可以是0到255之间的整数。

例如,RGB(255, 0, 0)表示纯红色,RGB(0, 255, 0)表示纯绿色,RGB(0, 0, 255)表示纯蓝色。

第三步:颜色常量的使用除了使用RGB函数外,VBA还提供了一些预定义的颜色常量,以便于我们使用。

在VBA中,我们可以直接使用这些颜色常量而不必计算RGB值。

以下是一些常用的颜色常量:- vbBlack:黑色- vbWhite:白色- vbRed:红色- vbGreen:绿色- vbBlue:蓝色- vbYellow:黄色- vbCyan:青色- vbMagenta:洋红色- vbGray:灰色除了上述常用颜色常量外,VBA还提供了其他颜色常量,可以根据自己的需要选择合适的颜色。

第四步:颜色索引的使用在VBA中,我们还可以使用颜色索引来引用预定义的颜色。

VBA提供了一个名为ColorIndex的属性,它可以用来设置对象的颜色。

颜色索引是一个从1开始的整数,对应于VBA的内置颜色。

每个索引值对应于一个颜色,因此我们可以使用ColorIndex属性来设置对象的颜色。

vba 颜色值范围

vba 颜色值范围

vba 颜色值范围VBA(Visual Basic for Applications)是一种宏编程语言,可以让用户通过编写代码来自动化执行Microsoft Office应用程序中的任务。

在VBA中,我们可以使用颜色值来设置单元格、图形、形状等的背景、边框、字体等颜色。

颜色值可以通过RGB颜色模型或颜色索引来表示。

在VBA中,RGB颜色模型使用红、绿、蓝三原色的比例值来表达颜色。

在RGB颜色模型中,每一种原色可以取0至255之间的整数值,通过组合不同比例的原色可以得到不同的颜色。

例如,纯红色可以表示为RGB(255, 0, 0),纯绿色可以表示为RGB(0, 255, 0),纯蓝色可以表示为RGB(0, 0, 255)。

在VBA中,我们可以使用Range对象的Interior属性来设置单元格的背景颜色。

以下是VBA代码示例:```vbaSub SetCellBackgroundColor()Range("A1").Interior.Color = RGB(255, 0, 0) '设置A1单元格的背景颜色为红色End Sub```上述代码将A1单元格的背景颜色设置为红色。

其中,RGB函数接受三个参数,分别是红、绿、蓝三原色的比例值。

红色为最大值255,绿色和蓝色为0,则得到纯红色。

除了使用RGB颜色模型,VBA还支持使用颜色索引来表示颜色。

颜色索引是一组预定义的颜色值,可以通过常量或函数来引用。

以下是一些常用的颜色索引及其对应的常量:- vbBlack: 0 '黑色- vbWhite: 16777215 '白色- vbRed: 255 '红色- vbGreen: 65280 '绿色- vbBlue: 16711680 '蓝色- vbYellow: 65535 '黄色- vbMagenta: 16711935 '洋红色在VBA中,我们可以使用这些常量来设置颜色。

API在VB中应用之技巧集锦

'确定所在列
k=SendMessage(TextHwnd,&HBB&,-1,0)
ColNo=j-k+1
End sub
3、如何以某种颜色填充某区域?
*API函数声明
Private Declare Sub FloodFill Lib "gdi32" _ (ByVal hDC As Long, ByVal X As Long, ByVal Y As _ Long, ByVal crColor As Long
以上两个函数都可精确到毫秒级。
13、在程序中如何打开和关闭光驱门?
*API函数声明如下:
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
要交换鼠标按键,将bSwap参数设置为True。要恢复正常设置,将bSwap设置为False。 然后调用函数就可以交换和恢复鼠标按键了。
10、如何让窗体的标题条闪烁以引起用户注意?
在窗体中放一个Timer控件Timer1,设置其Inteval=200
*API函数声明
调用:
GetCursorPos z
print z.x
print z.y
12、怎样获得和改变双击鼠标的时间间隔?
获得鼠标双击间隔时间:

VB中使用API函数操作屏幕分辨率和色彩度

VB中使用API函数操作屏幕分辨率和色彩度
陆晓君
【期刊名称】《安徽水利水电职业技术学院学报》
【年(卷),期】2003(003)004
【摘要】介绍在VB6.0中如何使用API函数和自定义函数实现屏幕分辨率和色彩度的获取和更改.
【总页数】4页(P56-59)
【作者】陆晓君
【作者单位】安徽交通职业技术学院,安徽,合肥,230051
【正文语种】中文
【中图分类】TP30
【相关文献】
1.优化材料真实操作深度思考——例谈“空间与图形”学习中操作材料的设计和使用 [J], 杨弼华
2.在VB中中调用API函数操作指针变量 [J], 李晓杰
3.在VB5.0中使用和操作MATLAB [J], 肖志权
4.使用API函数提高VB环境下绘制曲线速度 [J], 文远熔
5.在VB中调用Windows API函数Bitblt()实现图象位操作 [J], 王道守
因版权原因,仅展示原文概要,查看原文内容请购买。

教你学VB的API函数

EnumPrintProcessorDatatypes 枚举打印机所支持的数据类型 否 是 是
EnumForms 枚举所支持的打印机窗体 否 是 是
EnumPrinterDrivers 枚举已安装的打印机驱动程序 否 是 是
EnumPorts 枚举可用打印机端口 否 是 是
SetPrinterData 设置打印机配置 否 是 是
SetJob 设置打印作业信息 否 是 是
AddJob 启动一个打印作业 否 是 是
AdvancedDocumentProperties 进行打印机高级设置 否 是 是
ResetPrinter 设置打印数据类型和设备模式值 否 是 是
DeletePrinterConnection 删除与打印机的连接 否 是 是
EndDocPrinter 结束打印作业 否 是 是
StartPage 准备打印机接收数据 是是 是
WaitForPrinterChange 监测打印机或打印机服务器变化 否 是 是
GetPrintProcessorDirectory 获取打印机驱动处理器路径 否 是 是
AddPrinterConnection 为当前用户建立与打印机的联系 否 是 是
StartPagePrinter 开始打印机 否 是 是
PrintDlg 建立打印文本对话框 否 是 是
EnumPrintProcessors 枚举已安装的打印机处理器 否 是 是
DeletePrintProcessor 删除打印机处理器 否 是 是
DeletePrinterDriver 删除打印机驱动程序 否 是 是
AddPort 加入一个打印机端口 否 是 是

在VB中使用API函数

☆★☆★技术文档★☆★☆☆★☆★技术文档★☆★☆☆★☆★技术文档★☆★☆☆★☆★技术文档★☆★☆VB 与 Windows API 讲座(一) /王国荣进入 Windows API 的热身运动「VB 没有提供这样的功能,必须呼叫 Windows API」,有时候笔者会这样回答读者的问题,虽然这麽回答有点偷懒,或者说不负责任,但这的确是事实,VB 所提供的叙述、函数、物件…虽然也不在少数,但是都十分标准,或者说规矩,想变点花样,通常是行不通的,这是笔者决定开始撰写本文的主要原因。

Windows API 是大家的感觉上 VB 程式要呼叫 Windows API 是一件比较困难的事情,或者说比较麻烦的事情,但别忘了 Windows API 是大家的,凡是在 Windows 工作环境底下执行的应用程式,都有权利呼叫 Windows API。

Windows 这个多工作业系统除了协调应用程式的执行、分配记忆体、管理系统资源…之外,她同时也是一个很大的服务中心,呼叫这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备…等目的,由於这些函数服务的对象是应用程式(Application),所以便称之为 Application Programming Interface,简称 API 函数。

但 Windows API 与 C 语言最亲近虽然说呼叫 Windows API(以下简称 API 或 API 函数) 是每一个应用程式的权利,但不可否认的 API 却与 C 语言最亲近,因为 API 函数在参数的传递上就是以 C 语言为标准。

但这并不表示 VB 程式不能呼叫含有参数的 API 函数,如果传递的参数是单纯的资料型别,例如「整数」,则 VB 与 C 语言还是相通的,如果是特殊的资料型别(包含「字串」),则必须遵循一定的规范,否则不是无法得到正确的结果,就是因为违反规定而被踢出系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ByVal dwReserved As Long) As Long
Const EWX_REBOOT = 2 ’重开机
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
Const DM_BITSPERPEL = &H40000
Const DISP_CHANGE_SUCCESSFUL = 0
Const DISP_CHANGE_RESTART = 1
Const CDS_UPDATEREGISTRY = 1
Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
"EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _
ByVal iModeNum As Long, lpDevMode As Any) As Long
Private Declare Function ChangeDisplaySettings Lib "user32" Alias _
DevM.dmBitsPerPel = 8 ’设定成256色
DevM.dmFields = DM_BITSPERPEL
b = ChangeDisplaySettings(DevM, 0)
If b = DISP_CHANGE_RESTART Then
ans = MsgBox("要重开机设定才能完成,重开?", vbOKCancel)
dmCollate As Integer
dmFormName As String * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
"ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmDisplayFrequency As Long
End Type
Private DevM As DEVMODE
Private Sub Command1_Click()
Dim a As Boolean
Dim i As Long
Dim b As Long
Dim ans As Long
a = EnumDisplaySettings(0, 0, DevM) ’Initial Setting
End If
End If
End Sub
注:
DevM.dmBitsPerPel便是设定颜色数,其实应说每个Pixel要多少Bits来显示
4 --> 16色
8 --> 256色
16 --> 65536色以此类推
Option Explicit
Private Declare Function EnumDisplaySettings Lib "user32" Alias _
VB中利用API函数实现屏幕颜色数设定
原则上,只改这一次,下一次开机会还原,但如果需重开机,才会Update Registry中的设定,并重开机。
如果要永久设定其设定值,请将
b = ChangeDisplaySettings(DevM, 0)
改成
b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
If ans = 1 Tgs(DevM, CDS_UPDATEREGISTRY)
Call ExitWindowsEx(EWX_REBOOT, 0)
End If
Else
If b <> DISP_CHANGE_SUCCESSFUL Then
Call MsgBox("设定有误", vbCritical)
相关文档
最新文档