说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在VB中使用API函数 (之三)

HTML文档下载 WORD文档下载 PDF文档下载
在VB中使用API函数 (之三)

 
Any

有些消息的参数声明为Any.这表示该参数是一种可变的类型(你可以以整型,字符串,用户自定义或其他的类型来传递).

这有一个这样的例子:

Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, lParam as Any) as Long

lParam 声明为Any并按引用(ByRef)传递.

这里是在这个函数中如果lParam是不同类型的值时应遵循的规则:

如果该值是 传递形式

numeric ByVal(as Long,or as Any)

Null ByVal(as Long,or as Any)

String ByRef(as String,or as Any)

Type ByRef(as Any)

array of Type ByRef(as Any)

如果你的函数声明同上面的一个而且你想传递一个Long型数,你应该这样写:

Call SendMessage(Me.Hwnd,WM_XXXX,0&,ByVal LongValue)

注意尽管头三个参数也是数值,但它们前边并没有ByVal.这是因为在函数声明中它们已经被声明为按值传递(ByVal).第四个参数,由于是按引用传递(ByRef)(VB并不知道你要传递参数的类型),因此你必须加上ByVal 你可以使用别名技术来传递不同类型的参数:

Public Declare Function SendMessageLng Lib "User32" Alias "SendMessageA"(ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, ByVal lParam as Long) as Long

或:

Public Declare Function SendMessageStr Lib "User32" Alias "SendMessageA"(ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, lParam as String) as Long

注意API参数类型本身是不会改变的.例子中的第四个参数总是一个4字节的长型数.当你按值(ByVal)传递一个Long或 Null时,该4字节长的数值就直接传递给函数.如果你传递一个String或其他的什么,你是按引用(ByRef)传递,VB传递的实际上是变量的地址,也是4个字节.

参数传递

你已经知道如何传递参数了,只需把他放到调用的函数中即刻.然而,当你使用API函数时,在传递参数是有一些你应该注意的 细节. ByVal还是ByRef. 通常情况下,你不用为此担心,VB的API浏览器已经为你做好了一切,只需你输入数值它就会照所声明的方式传递.总的来说,ByVal是把实际的数值传递给函数,而ByRef是把地址传给函数.唯一的麻烦就是 Any 类型. 把字符串传递给API函数也并不难.API函数需要的是字符串首字符的地址,然后读取该地址直到遇到一个Null字符.听起来很糟糕,但只是VB处理字符串的实际方法.你唯一要记住的是一定要按引用传递(ByRef)字符串 当你想得到所需的函数返回值信息时,情况有稍微的一点不同.

这里是GetComputerName函数的声明:

Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA"(ByVal lpBuffer As String, nSize As Long) As Long

第一个参数是一个指向字符串的远程指针,第二个参数是字符串的长度.

如果你只是简单的声明一个字符串类型的变量并把它传递给函数,就会出现错误.因此,你首先需要初始化字符串.这里是如何得到计算机名字的例子: Dim Buffer As String

Buffer = Space(255)

Ret& = GetComputerName(Buffer, Len(Buffer))

if Ret& > 0 then CompName$ = Left(Buffer, Ret&)

在这里,待传递的字符串被初始化为有255个空格的字符串.我们把它传递给函数同时还有它的长度.如果出错则返回值为0.

CompName中将保存计算机名. 有些函数也需要传递数组,这里是一个例子:

Declare Function SetSysColors Lib "user32" Alias "SetSysColors" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long

最后两个参数是Long型数组.为了传递数组,你只需传递它的第一个元素.下面是示例代码:

Const COLOR_ACTIVECAPTION = 2

Const COLOR_INACTIVECAPTION = 3

Const COLOR_CAPTIONTEXT = 9

Const COLOR_INACTIVECAPTIONTEXT = 19

Dim SysColor(3) As Long

Dim ColorValues(3) As Long

Dim Ret& SysColor(0) = COLOR_ACTIVECAPTION

SysColor(1) = COLOR_INACTIVECAPTION

SysColor(2) = COLOR_CAPTIONTEXT

SysColor(3) = COLOR_INACTIVECAPTIONTEXT

ColorValues(0) = RGB(58, 158, 58) '深绿

ColorValues(1) = RGB(93, 193, 93) '浅绿

ColorValues(2) = 0 '黑色

ColorValues(3) = RGB(126, 126, 126) '灰色

Ret& = SetSysColors(4&, SysColor(0), ColorValues(0))

该程序将改变所有活动和非活动窗口的标题栏背景和文本的颜色.
15个步骤创立技术公司,并收获千万用户(三) H3Cloud:为企业提供最优化IaaS方案 VMware、红帽对决云管理平台 大数据辅助决策,构建智慧城市 所见即所得:四款免编程移动游戏开发引擎推荐 PaaS乱局:Container的新机遇 IDC再度下调2013年全球PC销量预期 平板电脑中枪 Waze联合创始人做FeeX 用众包方式增加银行服务透明度 Ripple CTO Stefan Thomas:Bitcoin与未来支付应用开发 第二届Coding For Fun编程马拉松实时快报→→ 数字化你的脸:14个智能眼镜开发平台 Unite2013开发者大会:Unity新增多项重磅革新 微软大中华区副总裁谢恩伟:微软云+端应用模型前瞻 移动周报:从硬件马拉松到Barra加盟,本周小米很火 小而美的Diffbot:将Web页面转化为数据库,获多位科技大佬注资 “叙利亚电子军”对美国多家网站发起“电子制裁” 麻省理工TR35之IT界年轻有为创新者(上) Linux用户须知的16款实用软件 新平台,新惊喜:记第二届Coding For Fun 创业建议泛滥成灾 实用的不多 腾讯云俱乐部北京站:知名手游商畅谈云时代开发运营策略 LG再战平板市场:将推出8.3英寸平板G Pad 编程语言与工具专题论坛:各类编程语言使用体会分享 淘宝、腾讯、豆瓣、支付宝、网易专家热议大数据分析与BI实战 “创新或灭亡”:Google的80/20只是转移视线的说辞罢了 自动化编排,配合SDN的iMC V7更加开放 [回顾]比尔·盖茨传奇的前半生 IT基础设施与运维论坛:IT基础设施及运维经验分享 记华为HCC2013 Day1:发力高端存储 HCC 2013虚拟化论坛:虚拟化未来发展方向 Windows 8操作系统市场份额增至7.41% Windows 7仍最受欢迎 输出是怪码,为什么 錯誤代碼:0x80040E4D,錯誤信息:使用者登入失敗.(ASP中出現此錯誤,VB中是可以的),急!! 请问怎样在SQL中组织一临时表?(立即给分) 关于asp和SQLSERVER2000问题!郁闷之中..... 使用showModalDialog遇到的问题,再线等候!!!!!!!! 我使用jbuilder做的软件系统包括servlet,jsp,applet,打成了war包,可是却始终不能运行applet。 ***内核的networking问题*** 讨论:大家都用什么工具进行数据库比较 ? 我的鼠标提示刷新的速度不是很快,谁能给在下提供一些好的建议? 发短信的web service 请教一个服务端和客户端交互的问题? 高手帮忙 请问谁又对第三方控件imgscan.ocx操作的例子,发给我bit_hj@163.com。小弟不胜感激 肯请各位帮忙! 应该是简单问题,求高手帮忙,100分相送,绝不食言,一下午都没弄出来,太灰心了..... linux下,mysql数据库密码怎么找回?(在线等) 新手求救:关于8086和80386的中断类型号上的冲突? sleep函数 网络难题,跨网段传输 恢复数据库 有谁的信誉分比我低阿!!我送给他50分阿!! 谁能提供一个切实可用的“防止刷新页面重复提交表单”的方法 Web安装项目中的managed.msm和stdole.dll是何东东,何用?? java中字符串操作函数在哪?java中分解字串的函数(如asp中的:split)在哪个类中? 为何ACCESS出现“#已删除的”的记录? 欲交Java良师益友,愿伸援助之手请进。 关于复选框的初始问题(100份在线4:00-8:00 怎样在asp中把一个文件变成临时文件?? 求解奇怪问题,非常奇怪,分不够再加! 高分求IPMI开发资料 如何用Jtree将一个xml文件显示出来? 招聘系统分析员(北京) 深圳兼职电脑维护,哪个有兴趣? 求购 产品进销存源代码 VB or c# +SQL SERVER @@@@@@ 不送分而送现金!!!!! 谁能教我配置PHP服务器啊? 帮我看一下, 紧急求救!!!jsp的出错信息! 如何合并两个Image对象为一个Image对象 还有一个问题,帮帮我嘛! 高分请教高手!简单,看了你也是高手 代码编辑器的问题。 计论:大家都用什么工具进行数据库的比较? 我高中的班主任 请大家评评理,特别是JAVA版版主! 这样的SQL语句怎么写啊 form切换!VB.net里面如何在语句里调出别的FORM 如何用ADO连接EXCEL数据? 什么是上溯造型? 如何把console.write 输出很多内容保存到文件?thread.join()如何使用? 我想实现像网络蚂蚁那样在IE上点右键,把这个IE中的信息传送给我主程序,现在遇到两个问题! 控件的布局问题? 实例化算不算继承? 谁能告诉我关于人生的周记啊.急.要写事的 英语翻译We provide debt capacity estimates that are based on target ratings and novel financial flexibility measures that account for financial constraints due to the firm's debt capacityfinancial flexibility (财务柔性) 乐什么abb形式的 《我的人生 我来负责》周记应该怎么写?麻烦各位好人快一些,这个星期日就要写完啊! 跪求牛人帮写英语作文-------题目如下1 .How many years have you been learning English?What do you think of yourself as far as English learning is concerned?Are you satisfied with the progress you have made?Why or why not?2.Do you think it 墨西哥是南美洲还是北美洲? 有关龙飞凤舞的诗句诗的大致意思是想表达企业的兴旺 ccb是哪个银行简称 正方形ABCD的两条对角线交于点O,若三角形AOB的周长为12cm,则正方形的面积为( ) 李白豪放的诗句2句足以 CCB是什么的缩写 已知|a|=1,|b|=3,则|a+b|-|a-b|的值是多少? 设r>0,两圆(x-1)^2+(y+3)^2=r^2与x^2+y^2=16的位置关系A.相离 B.相交 C.内切或内含或相交 D.外切或外离 直()()ABB的词语速度说啊 追加分数 已知A+B=3 ,A*B=1,则A/B+B/A的值是多少重要的是过程 几个单词的意思...字典完全查不到啊啊啊啊trods、bostles、lichways、halterpaths、carneys、herepaths.(PS:应该都是一些路的名称,可能是作者自创的词所以查不到,求高人指点)原文是这样的Pilgrim paths, 直( )( )这个ABB式的词语怎么填? 我相对光做光速运动,那么我周围的时间是否会变慢?而我相对地面是静止的,那么我周围的时间又会不会有变化? 意思全部,没有带字典 ABB叠词:直()() 群蚁排衙的排是什么意思 横竹下面土两寸是什么字 成都七中育才暑期数学七年级下册作业在哪买? 群蚁排衙的衙是什么意思? 以将开头的成语有什么?不是一声啊,是四声的 什么什么凉abb 群蚁排衙是什么意思啊 民族资本主义与民族资产阶级有什么区别最好用简略的语言概述一下 为什么把蚂蚁比作雪球 如果a是b的3分之1,那么a和b成正比例.(对,错)#¥@%%………………&*&&&#&@@¥#……%¥#*……&%¥#@ wickford什么意思,字典里查不到 为什么把抱成黑团的蚂蚁比作雪球 锲而不舍,群蚁排衙,迥乎不同的意思气冲斗牛,杂乱无章,义愤填膺,飘渺亢奋羁绊 武则天宫中的职位求武则天宫中的全部人的职位.有多少说多少.求求求求求求求 人教版语文小学六年级下册第二单元课文感受感是第二单元的课文感受 1.如果a:b=8:3,那么a只能是8,b只能是3()对还是错2.比的前项加上5,要使比值不变,比的后项也应加上5()对还是错 宫中最小的职位是什么 开可以加什么偏旁部首? 群蚁排衙的近义词是什么 写雪诗的哦 清朝的宫女有的称为大姑姑 是何意思 比起宫中的嬷嬷谁的职位大 abb式的词语 硬什么什么 闹什么什么 阴什么什么 轻什么什么 空什么什么 有关描写雪诗 当一个人拿着镜子以光速行驶这时这个人对着镜子里看到什么 描写扇子的句子或一段话 (我要写小说用,最好自己写!)谢了 生活周记(英语)我给范文,谁帮我翻译成英语?(一个人的生活很无奈,我到现在才后悔自己当初的选择.我为什么要选择一个人离开家,来到这个陌生的土地.开始,属于自己的寂寞生活...人生就 一个人手上拿着镜子以光速飞行,人的身体能耐住光速的前提下,这个人能不能看见自己的脸?3 美国八大河流如题,美国的八大重要河流 以骨气为话题的议论文不少与900字 征求某人的意见 英文 文学基础简述 关于作文骨气的好开头 下册,下册的地理复习提纲最好还有些重点选择题! 良(去掉上面的点)加部首组词 写骨气的作文有什么素材吗? 急 求AI大神.这个“菜”字的草字头的怎么对齐? 墨西哥是在北美洲吗我问的是墨西哥这个国家属于哪个洲, 有关于鸟的诗句及赏析 英语翻译the hypothesis that in painting the animal that resembles a chiru the cave artist painted a chiru with which she or he was familiar这句话怎么也翻译不过来了,希望牛人可以分析一下句子成分并给出中文解释.跪谢 一个正方形的对角线长是12CM,它的面积是12x12=144cm².一根圆柱形水管,内直径是20cm,水在管内流动的速度是每秒10cm,每秒流动的水是多少毫升?) 我专家赴禁化武组织受训日俄防长会谈当天俄军机飞临 日战机紧杭州警方客串亲戚劝女子脱离传销队伍汇市周评:美联储按兵不动 非美货币走四名中国记者获美国科学促进会国际科学墨西哥对垃圾食品举起征税大棒要不要开枪?民警持枪与挟持老婆的男子浙江高校浙江籍新生体测数据:胖子新生浙江试发布县级城市空气质量指数 丽水杭州整治两大火车站周边非法黄牛黑车新加坡星展第三季盈利8.62亿新元 日俄防长会谈当天俄军机飞临 日战机紧萨拉热窝两有轨电车相撞 40多人受伤埃及多地爆发大规模反对军方游行【高清环球时报专访中国赴叙利亚参加化学武器会议记录爆奥巴马医改网站开通首天仅6加拿大女子相亲网站“钓男人”吃免费餐梅德韦杰夫谈监听丑闻:美国不能这样厚俄“彼得大帝”号核动力巡洋舰进入地中韩国三四流整形医生赴中国淘金 自称顶近二成美国人称见过鬼 女性比男性更易7岁前的孩子眼睛需保护,购买玩具应谨五消息让A股无比纠结 四特点揭市场新千年佛首回归记内地访港游客连跌 悄悄体验“港囧”精70分的懒妈妈,100分的好孩子!页油”被逼“产量下降偶遇股市回升,油与iPhone7同样设计 全球首款环南阳这家胡辣汤很稀,但口味很棒,适合新科鲁兹,优惠过后,性价比真的不错!最高法今日发布《物权法》司法解释(一南非“老外”欢天喜地闹元宵金正恩观看军乐团庆祝演出 “二把手”奥地利一男子因打嗝声太大被罚70欧元2016台湾灯会璀璨启幕 精彩文艺歌02/23黄金原油布局初成,谨防震荡股市与原油携手共进 供应过剩成“拦我有一个好妈妈,时光请你别伤害她昆明居家养老大盘点 让父母舒适颐养天为什么我们的社会越来越“粗鄙”?假设鲁迅在今天做自媒体,他肯定买不起广东广式烧鸭配方 烧鸭使用烤炉有啥好
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘