




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
National Instruments LabVIEW 虚拟仪器 1 LabVIEWLabVIEW 调用调用 WindowsWindows APIAPI 实现实现 VI VI 窗口置顶窗口置顶 前些天同事用 LabVIEW 开发了个常用的小工具软件 碍于电脑屏幕太小 想让这小工 具一直保持在所有窗口的最顶端 置顶 几个人讨论研究发现通过 LabVIEW 的属性节点 只能实现 VI 程序在 LabVIEW 软件中保持最前 而在其他窗口没能置顶 未能达到想要的效 果 通过上网查找资料 软件置顶是与操作平台的控制相关 需要调用 Windows API 去实 现这功能 研究了一下 调用 Windows API 能很好的实现了 VI 置顶 百度上用 LabVIEW 调 用 Windows API 的教程 LabVIEW 版本比较旧 为方便大家更好的学习 现将自己研究的方 法分享出来 一一 什么是什么是 Windows API Windows 这个多作业系统除了协调应用程序的执行 分配内存 管理资源 之外 它同时也是一个很大的服务中心 调用这个服务中心的各种服务 每一种服务就是一个函 数 可以帮应用程序达到开启视窗 描绘图形 使用周边设备等目的 由于这些函数服务 的对象是应用程序 Application 所以便称之为 Application Programming Interface 简称 API 函数 WIN32 API 也就是 Microsoft Windows 32 位平台的应用程序编程接口 Windows API 包括几千个可调用的函数 它们大致可分为以下几类 基本服务 组件 服务 用户界面服务 图形多媒体服务 消息和协作 网络 Web 服务 二 二 Windows API 的发展现状的发展现状 当 WINDOWS 操作系统开始占据主导地位的时候 开发 WINDOWS 平台下的应用程序 成为人们的需要 而在 WINDOWS 程序设计领域处于发展的初期 WINDOWS 程序员所能 使用的编程工具唯有 API 函数 这些函数是 WINDOWS 提供给应用程序与操作系统的接口 他们犹如 积木块 一样 可以搭建出各种界面丰富 功能灵活的应用程序 所以可以认 为 API 函数是构筑整个 WINDOWS 框架的基石 在它的下面是 WINDOWS 的操作系统核心 而它的上面则是所有的华丽的 WINDOWS 应用程序 程序员想编写具有 Windows 风格的软件 必须借助 API API 也因此被赋予至高无上的 地位 但是 如若没有合适的 Windows 编程平台 那么 Windows 开发是一项很复杂的工 作 在可视化编程 IDE 出来之前 那时的 WINDOWS 程序开发还是比较复杂的工作 程序 员必须熟记一大堆常用的 API 函数 而且还得对 WINDOWS 操作系统有深入的了解 然而 随着软件技术的不断发展 在 WINDOWS 平台上出现了很多优秀的可视化编程环境 程序 员可以采用 所见即所得 的编程方式来开发具有精美用户界面和功能强大的应用程序 这些优秀可视化编程环境操作简单 界面友好 诸如 VB VC DELPHI 等 在这些 工具中提供了大量的类库和各种控件 它们替代了 API 的神秘功能 事实上这些类库和控 件都是构架在 WIN32 API 函数基础之上的 是封装了的 API 函数的集合 它们把常用的 API 函数的组合在一起成为一个控件或类库 并赋予其方便的使用方法 所以极大的加速了 WINDOWS 应用程序开发的过程 有了这些控件和类库 程序员便可以把主要精力放在程 序整体功能的设计上 而不必过于关注技术细节 实际上如果我们要开发出更灵活 更实用 更具效率的应用程序 必然要涉及到直接 使用 API 函数 虽然类库和控件使应用程序的开发简单的多 但它们只提供 WINDOWS 的 一般功能 对于比较复杂和特殊的功能来说 使用类库和控件是非常难以实现的 这时就 需要采用 API 函数来实现 LabVIEW 调用 WindowsAPI 实现 VI 窗口置顶 这也是 API 函数使用的场合 所以我们对待 API 函数不必刻意去研究每一个函数的用 法 那也是不现实的 能用得到的 API 函数有几千个呢 正如某位大虾所说 API 不要去 学 在需要的时候去查 API 帮助就足够了 三 三 LabVIEW 怎么去调用怎么去调用 Windows API 上面介绍已经讲了 API 是一个操作系统与应用程序的接口函数 LabVIEW 作为一个程 序开发平台 环境 同样可以调用 Windows API 函数去实现应用程序的多功能化 应用程序窗口置顶属于窗口效果控制 需要先获取当前窗口句柄 然后再去设置其他 API 函数的参数 获取当前窗口句柄的 Windows API 函数是 FindWindowA 我们就先拿这个 函数进行讲解如何实现 LabVIEW 调用 API 调用前 需要对此函数进行一个详细的了解 可以利用 WindowsAPI 查询器查得此函 数的介绍 也可以通过百度百科获得 对比发现百度百科比较全面 这里选百度百科的介 绍 表表 1 函数函数 FindWindowA 函数名FindWindowA 函数原型int32 t FindWindowA int32 t lpClassName CStr lpWindowName 功能描述检索处理顶级窗口的类名和窗口名称匹配指定的字符串 输入参数 1lpClassName String 指向一个以 null 结尾的 用来指定类名的字符串 注 使用时将此参数设置为 Long 型 直接赋常量 0 输入参数 2lpWindowName String 指向一个以 null 结尾的 用来指定窗口名 即窗 口标题 的字符串 如果此参数为 NULL 则匹配所有窗口名 输出参数无 返回值Long 如果函数执行成功 则返回值是拥有指定窗口类名或窗口名的窗口 的句柄 如果函数执行失败 则返回值为 NULL FindWindowA 这个函数在 user32 dll 这个动态库里面 dll 是动态链接库 Dynamic Link Library DLL 是一个包含可由多个程序 同时使用的代码和数据的库 使用 DLL 更容易地 将更新应用于各个模块 而不会影响该程序的其他部分 user32 dll 这个动态库的路径一般 在 C Windows System32 user32 dl 有了以上信息就可以开始用 LabVIEW 调用 FindWindowA 这个 API 函数了 新建一个 VI 后面板点开函数面板 在 互连接口 库与可执行程序 调用库函数节点 如图 1 图 1 调用库函数节点面板路径图 点击后在后面板出现 利用即时帮 助可查看此节点的简单介绍 如右图 2 National Instruments LabVIEW 虚拟仪器 3 图 2 调用库函数节点简介 双击此函数节点 出现调用库函数窗口 按标号依次选择和设置 1 选择 dll 库路径 C Windows System32 user32 dl 2 选择调用的函数名 FindWindowA 3 在 调用规范中选 stdcall WINAPI 如图 3 所示 图 3 调用库函数路径和函数选择 设置完函数面板 1 点击参数 2 将类型设为数值 如图 4 LabVIEW 调用 WindowsAPI 实现 VI 窗口置顶 图 4 返回类型值设置 同一个面板 1 按添加参数按钮 2 在输入参数名称 IpClassName 3 选择参数类型为 字符串 如图 5 所示 图 5 添加参数并设置名称和类型 同一个面板 1 按添加参数按钮 2 在输入参数名称 IpWindowName 3 选择参数类型 为 字符串 如图 6 所示 图 6 添加参数 2 设置名称和类型 到此 API 函数 FindWindowA 的调用设置结束 按确认后得到 通过创建输入输出控件可知其结构 具体如下图 7 所示 National Instruments LabVIEW 虚拟仪器 5 图 7 各引线参数名 四 调用四 调用 API 函数实现函数实现 VI 窗口置顶窗口置顶 实现窗口置顶需要调用 FindWindowA GetWindowLongA SetWindowLongA SetWindowPos 共四个 API 函数 整 个调用流程由右图所示 四个 API 函数都在 user32 dll 动态库里面可以找到 详细的设置这 里不再赘述 下面是除 FindWindowA 函数其它三个函数的参数介绍 表表 2 函数函数 GetWindowLongA 函数名GetWindowLongA 函数原型int32 t GetWindowLongA int32 t hWnd int32 t nIndex 功能描述该函数获得有关指定窗口的信息 函数也获 得在额外窗口内存中指定偏移位地址的 32 位度整型值 输入参数 1hWnd Long 窗口句柄及间接给出的窗口 所属的窗口类 输入参数 2nlndex Long 指定要获得值的大于等于 0 的值的偏移量 有效值的范围从 0 到额外窗 口内存空间的字节数减 4 其值可以是下面几种 GWL EXSTYLE 20 获得扩展窗口风格 GWL HINSTANCE 6 获得应用实例的句 柄 GWL HWNDPARENT 8 如果父窗口存 在 获取父窗口句柄 GWL ID 16 获得窗口标识 GWL STYLE 16 获得窗口风格 GWL USERDATA 21 获得与窗口有关的 开始 调用 FindWindowA函数 获取当前窗口句柄 调用 GetWindowLongA函数 获取当前窗口信息 调用 SetWindowLongA函数 设置窗口属性 调用 SetWindowPos函数 使当前窗口至于顶层 结束 LabVIEW 调用 WindowsAPI 实现 VI 窗口置顶 32 位值 每一个窗口均有一个由创建该窗 口的应用程序使用的 32 位值 GWL WNDPROC 4 获得窗口过程的地址 或代表窗口过程的地址的句柄 输出参数无 返回值Long 如果函数执行成功 则返回值是拥有 指定窗口类名或窗口名的窗口的句柄 如果 函数执行失败 则返回值为 NULL 表表 3 函数函数 SetWindowLongA 函数名SetWindowLongA 函数原型int32 t SetWindowLongA int32 t hWnd int32 t nIndex int32 t dwNewLong 功能描述该函数用来改变指定窗口的属性 函数也将指定的一个 32 位值设置在窗 口的额外存储空间的指定偏移位置 输入参数 1hWnd Long 窗口句柄及间接给出的窗口所属的类 输入参数 2nlndex Long 指定将设定的大于等于 0 的偏移值 有效值的范围从 0 到 额外类的存储空间的字节数减 4 其值可以是以下几种 GWL EXSTYLE 20 设定一个新的扩展风格 GWL HINSTANCE 6 设置一个新的应用程序实例句柄 GWL ID 12 设置一个新的窗口标识符 GWL STYLE 16 设定一个新的窗口风格 GWL USERDATA 21 设置与窗口有关的 32 位值 每个窗口均有一个 由创建该窗口的应用程序使用的 32 位值 GWL WNDPROC 4 为窗口过程设定一个新的地址 GWL HWNDPARENT 8 改变子窗口的父窗口 应使用 SetParent 函数 输入参数 3dwNewLong Long 由 nIndex 指定的窗口信息的新值 其值可以是一下几种 LVS ICON 大图标显示 LVS SMALLICON 小图标显示 LVS LIST 列表显示 LVS REPORT 详细报表显示 输出参数无 返回值Long 如果函数执行成功 则返回值是拥有指定窗口类名或窗口名的窗口 的句柄 如果函数执行失败 则返回值为 NULL 表表 4 函数函数 SetWindowPos 函数名SetWindowPos 函数原型int32 t SetWindowPos int32 t hWnd int32 t hWndInsertAfter int32 t x int32 t y int32 t cx int32 t cy int32 t wFlags 功能描述为窗口指定一个新位置和状态 它也可改变窗口在内部窗口列表中的位置 输入参数 1hWnd Long 窗口句柄及间接给出的窗口所属的窗口类 输入参数 2hWndlnsertAfter Long 在 z 序中的位于被置位的窗口前的窗口句柄 该 参数必须为一个窗口句柄 其值可以是一下几种 HWND BOTTOM 将窗口置于窗口列表底部 HWND TOP 0 将窗口置于 Z 序列的顶部 Z 序列代表在分级结构中 National Instruments LabVIEW 虚拟仪器 7 窗口针对一个给定级别的窗口显示的顺序 HWND TOPMOST 1 将窗口置于列表顶部 并位于任何最顶部窗口的 前面 HWND NOTOPMOST 2 将窗口置于列表顶部 并位于任何最顶部窗 口的后面 输入参数 3x Long 窗口新的 x 坐标 输入参数 4y Long 窗口新的 y 坐标 输入参数 5cx Long
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年广东轻工职业技术学院高职单招语文2019-2024历年真题考点试卷含答案解析
- 2025年安徽医学高等专科学校高职单招职业适应性测试历年(2019-2024年)真题考点试卷含答案解析
- 2025年天津城市职业学院高职单招语文2019-2024历年真题考点试卷含答案解析
- 脑血管的护理查房
- 幼儿园游戏课程
- Excel基础知识课件下载
- 服装简笔画课件
- 贵州省毕节市梁才学校2025届下学期高三生物试题第三次调研考试试卷含解析
- 江西农业工程职业学院《数据分析》2023-2024学年第一学期期末试卷
- 江西服装学院《弹性力学与有限元分析》2023-2024学年第二学期期末试卷
- 建设工程工程量清单及清单计价2013
- 经颅多普勒超声在脑血管疾病中的应用及临床价值研究
- 变压器比率差动保护的校验方法(图文)
- 高盛Marquee平台深度研究报告
- CPR1000核电系统简介
- 05价值观探索-职业生涯规划
- 中国石油化工集团有限公司诚信合规管理手册
- TSEESA 010-2022 零碳园区创建与评价技术规范
- HY/T 075-2005海洋信息分类与代码
- 全封闭声屏障施工专项方案正文范本
- 颊癌病人的护理查房
评论
0/150
提交评论