利用IE自带的Shlwapi.dll实现文本框的自动完成

python 调用opencv dll_【问题已解决】python 3.6下安装opencv-python解决cv2 DLL load failed: 找不到指定的模块问题... 1、首先下载安装对应Python版本的opencv-python:https://pypi.org/project/opencv-python/#files我这里下载的是:opencv_python-3.4.3.18-cp36-cp36m-win_amd64.whl2、安装,将下载的放到目录**\Lib\site-packages中,在该目录下,shift+右键,打开命令行:pip install... 阅读详情

实现文本框的自动完成功能有很多方法,这里介绍的是用IE自带的Shlwapi.dll实现的方法。

一、介绍Shlwapi.dll
Shlwapi.dll和Comctl32.dll,Shell32.dll一样是随着IE而分发的,所以如果你想得到最新的
版本必须下载最新版的IE。其中,Shell32.dll和Comctl32.dll的最初版本是4.0版,她是随着
Windows95和Windows NT分发的;而Shlwapi.dll的最初版本是4.71,它是随着IE4分发的。
为了得到具体的版本号,你必须使用DllGetVersion函数(它在Shell32.dll中定义)。

二、函数声明
1. Declare Function DllGetVersion Lib "Shell32.dll" & _
 (ByRef dvi As DLLVERSIONINFO) As Long
   该函数是为了得到DLL文件的版本号
2. Declare Function SHAutoComplete Lib "Shlwapi.dll" & _
 (ByVal hwndEdit As Long,ByVal dwFlags As Long) As Long
   该函数实现了文本框的自动完成功能

三、常量声明
1. DllGetVersion函数用到的常量如下所示:
(1)Const DLLVER_PLATFORM_WINDOWS = &H1
   函数适合于任何Windows平台
(2)Const DLLVER_PLATFORM_NT = &H2
   函数适合于Windows NT平台

2. SHAutoComplete函数用到的常量如下所示
(1)Const SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
   忽略注册表的设置并且打开autosuggest特性。它必须和SHACF_FILESYSXXX或者SHACF_URLXXX
   联合使用
(2)Const SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
   忽略注册表的设置并且关闭autosuggest特性。它必须和SHACF_FILESYSXXX或者SHACF_URLXXX
   联合使用
(3)Const SHACF_AUTOAPPEND_FORCE_ON = &H40000000
   忽略注册表的设置并且打开autoappend特性,它必须和SHACF_FILESYSXXX或者SHACF_URLXXX
   联合使用
(4)Const SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
   忽略注册表的设置并且关闭autoappend特性,它必须和SHACF_FILESYSXXX或者SHACF_URLXXX
   联合使用
(5)Const SHACF_DEFAULT = &H0
   缺省设置。它和SHACF_FILESYSTE|SHACF_URLALL等价。不能和任何标志值联合使用
(6)Const SHACF_FILESYSTE = &H1
   包含文件系统和虚拟文件夹(比如桌面或是控制面板)
(7)Const SHACF_URLHISTORY = &H2
   包含历史记录的URL列表
(8)Const SHACF_URLMRU = &H4
   包含最近使用过的URL列表
(9)Const SHACF_URLALL = (SHACF_URLHISTORY | SHACF_URLMRU)
   (这个不用多解释了吧)

3. 返回值
(1)调用DllGetVersion成功则返回NOERROR,它被定义为0:
   Const NOERROR = 0
(2)调用SHAutoComplete成功则返回S_OK,它被定义为&H0:
   Const S_OK = &H0

四、类型
函数DllGetVersion要用到类型DLLVERSIONINFO,其定义如下:
Type DLLVERSIONINFO
 cbSize As Long
 dwMajorVersion As Long
 dwMinorVersion As Long
 dwBuildVersion As Long
 dwPlatformID As Long
End Type
(1)cbSize:类型的长度,在调用DllGetVersion前必须先设置其值
(2)dwMajorVersion:主版本号
(3)dwMinorVersion:次版本号
(4)dwBuildVersion:修正号
(5)dwPlatformID:DLL所使用的平台。其值为DLLVER_PLATFORM)WINDOWS或者DLLVER_PLATFORM_NT

五、代码示例
在函数的声明段有如下代码:
Option Explicit

Private Declare Function SHAutoComplete Lib "Shlwapi.dll" & _
 (ByVal hwndEdit As Long,ByVal dwFlags As Long) As Long
Private Declare Function DllGetVersion Lib "Shell32.dll" & _
 (ByRef dvi As DLLVERSIONINFO) As Long
Private Type DLLVERSIONINFO
 cbSize As Long
 dwMajorVersion As Long
 dwMinorVersion As Long
 dwBuildVersion As Long
 dwPlatformID As Long
End Type
Private Const SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
Private Const SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
Private Const SHACF_AUTOAPPEND_FORCE_ON = &H40000000
Private Const SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
Private Const SHACF_DEFAULT = &H0
Private Const SHACF_FILESYSTEM = &H1
Private Const SHACF_URLHISTORY = &H2
Private Const SHACF_URLMRU = &H4
Private Const SHACF_URLALL = (SHACF_URLHISTORY | SHACF_URLMRU)
Private Const DLLVER_PLATFORM_WINDOWS = &H1
Private Const DLLVER_PLATFORM_NT = &H2
Private Const S_OK = &H0
Private Const NOERROR = 0

Private Sub Form_Load()
 Dim dvi As DLLVERSIONINFO

 dvi.cbSize = Len(dvi)
 If DllGetVersion(dvi) <> NOERROR Then
  MsgBox "无法检测Shlwapi.dll的版本号",vbExclamation
  Exit Sub
 End If

 Label1.Caption = "你所用的是Shlwapi.dll" & dvi.dwMajorVersion & "." & _
  dvi.dwMinorVersion & "." & dvi.dwBuildVersion
 
 If dvi.dwMajorVersion >= 5 Then
  Command1.Enabled = True
  Command1.Caption = "开启自动完成功能"
 Else
  MsgBox "你必须使用IE5才能使用该例程",vbExclamation
 End If
End Sub

Private Sub Command1_Click()
 Dim dvi As DLLVERSIONINFO

 dvi.cbSize = Len(dvi)
 If DllGetVersion(dvi) <> NOERROR Then
  MsgBox "无法检测Shlwapi.dll的版本号",vbExclamation
  Exit Sub
 End If

 If dvi.dwMajorVersion >= 5 Then
  If AutoComplete(Text1.hwnd,SHACF_DEFAULT) <> S_OK Then
   MsgBox "无法开启自动完成功能",vbExclamation
   Exit Sub
  Ebd If

  Text1.SetFocus
  Text1.SelStart = Len(Text1.Text)

  Command1.Enabled = False
  Command1.Caption = "自动完成功能已开启"
 End If
End Sub

六、未决问题
在这里我有一个问题,希望哪位高手指点一二。
因为你想使用DllGetVersion函数,那么就必须要用4.71版本的Shell32.dll,但是只有在Windows2000
或者是带有IE4以上版本的Windows NT或者是Windows98才有该版本的Shell32.dll(在MSDN中有说明),
所以我首先就必须知道Shell32.dll的版本,这样的话,我又如何才能获得Shell32.dll的版本号呢??

Vue3 - Element Plus 下拉选择器 el-select 覆盖修改 placeholder样式,解决覆盖不生效问题(支持修改文字颜色、文字大小、选择器边框、hover效果、宽高等任意样式 vue3,element-plus,el-select,下拉选择器,下拉选择框,Select选择器,deep覆盖无效怎么办,怎么修改placeholder文字颜色,选择器select修改边框样式,修改文字大小,elementPlus选择器如何覆盖hover效果,使用deep改不了样式,修改边框颜色,select去掉边框,vue3+elementPlus中select选择器如何修改placeholder文字样式,修改el-select样式,select选择器样式覆盖不了咋办,el-select如何覆盖原样式, 阅读详情

相关推荐

华为昇腾NPU环境搭建:torch-npu安装避坑指南(附常见错误解决方案)

本文详细解析了在华为昇腾NPU环境中安装torch-npu适配包的全流程与核心要点。从基础环境准备、严格的版本匹配策略,到针对‘RuntimeError: NPU error’、‘ImportError: libxxx.so’等高频错误的深度解析与解决方案,提供了一份实用的避坑指南,旨在帮助开发者高效搭建稳定的PyTorch开发环境。

weixin_29094979的博客 410

响应AutoComplete下拉列表的选择事件

 关键字:SHAutoComplete 1、SHAutoComplete简介Shlwapi.dll是微软提供的一个轻量级外壳工具函数库(Shell Lightweight Utility Functions),它提供了一些比较常用的函数,用以处理调色板、路径(如《Secrets in ShlWapi.Dll》中提到的PathCompactPath函数)、注册表、字符串等。从5.0版

eagleboost's blog 1万+

数字孪生驱动的城市地下管网智能运维与应急处置决策支持系统

上海市城市数字化中心的数据实践显示,通过关联分析管网材质与故障率的关系,将铸铁管更换周期从15年优化至8年(李敏,2021)。环境效益方面,上海市通过优化管网运行参数,年减少碳排放1.8万吨,相当于种植36万棵乔木。数字孪生与物理设备的双向交互采用OPC UA协议实现,某次天津管网渗漏事件中,系统通过实时数据反馈,指导现场人员调整注浆方案,将修复时间从48小时压缩至16小时。虚拟指挥沙盘支持多视角协同,深圳水务系统的实践表明,通过AR可视化技术,跨部门会议效率提升60%,方案决策时间缩短40%。

2501_92431686的博客 1424

SHAutoComplete自动完成的实现

// 向系统注册我们需要的消息 const UINT m_nAcItemActivateMsg = RegisterWindowMessage(_T("AC_ItemActivate"));   BOOL CMainFrame::InitAddress() {  HWN

Im17benteng的专栏 1219

如何使用 Ansys OptiSlang 同时运行多个参数化设计研究

了解如何通过使用 OptiSLang 同时运行多个参数化设计研究来提高工作效率。

jkh920184196的博客 2380

瑞芯微RK3588/RK3576平台采集BT1120(fpga)驱动调试记录

本文介绍了在RK3576/RK3588平台上采集FPGA传输的BT1120数据的方法。主要内容包括:1)硬件连接需确认管脚复用和图像格式(通常为uyvy_2x8);2)设备树配置要点,如I2C总线设置、BT1120模式指定等;3)驱动适配注意事项,包括时钟极性、分辨率格式等关键参数;4)测试方法,通过media-ctl和v4l2-ctl工具验证数据采集。文中特别指出RK3576和RK3588配置的通用性,并提供了常见问题的排查思路。

bingdund的博客 913

启动应用程序出现shlwapi.dll找不到问题解决

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个shlwapi.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现shlwapi.dll丢失要怎么解决?

wbcmbfy的博客 587

大唐杯5G考前冲刺篇(回顾全文重点必看)

大唐杯习题复习指南

nimo观察者 1万+

使 Edit Controls 具有自动完成功能。

链接:Enable Auto-complete on Your Edit Controls in VC++            Auto-complete edit and combo, without Platform SDK        一. 静态链接 - (注:需要 IE5 以上)。Heres an example: #include #include #pragma com

ChengZi的专栏 1751

【车载以太网】Eth Stack Bringup

摘要:本文基于AUTOSAR架构,详细介绍了在TC3xx硬件平台上实现EthStack Bringup的全过程。作者通过配置MCAL和Davinci工具,完成了EthTrcv、Eth、EthIf、EthSM和TcpIp等模块的集成,并解决了16字节内存对齐和以太网速率不匹配等问题。最终实现了PC端与开发板的Ping通,并通过WireShark验证了数据包收发。文章总结了调试中的关键问题与解决方案,强调了实践的重要性,为后续EthStack的深入分析奠定了基础。

qq_36056498的博客 180

基于ESM3微调的抗菌肽生成器:技术方案与实现

基于ESM3微调的抗菌肽生成器:技术方案与实现 摘要 本文提出了一种基于ESM3蛋白质语言模型的抗菌肽生成框架,采用两阶段训练策略:先在151万肽序列上预训练,再在1.3万抗菌肽数据上微调。模型能够生成具有合理长度分布、低重复率且高新颖性的抗菌肽序列。文章详细介绍了数据预处理流程、模型架构设计、训练策略及评估方法,为抗菌肽的理性设计提供了有效的计算工具。实验结果表明,该方法生成的抗菌肽序列在保持生物活性的同时具有较高的结构多样性。 关键词:抗菌肽设计;蛋白质语言模型;ESM3;深度学习;序列生成

huanghm88的专栏 175

ShlwApi.h定义了大量用来对数值进行格式化的操作

1.  StrFormatKBSize function 0(共 1)对本文的评价是有帮助 - 评价此主题 Converts a numeric value into a string that represents the number expressed as a size value in kilobytes. Syntax C++

coredoor的专栏 1744

华为OD机试真题 新系统 2026-04-26 Python&JS 实现【项目模块依赖构建顺序规划】

某公司正在开发一个大型软件系统,系统包含 N 个模块,每个模块之间存在构建依赖关系。例如,模块 A 可能依赖于模块 B,这意味着必须先构建模块 B,才能构建模块 A。 请根据依赖关系,输出所有可能的模块构建顺序(按照构建顺序排列模块名称),要求:

MISAYAONE的博客 404

在masm32中获取IE版本的方法2

;; Filename: getIEver1.asm; Function: get & display version of IE;   Author: purple endurer;  Develop: win 2K pro + masm32; log;---------------------------------------------------------;2005.10.23 Cre

Purpleendurer@优快云 2387

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

非ie获取当前登录计算机用户,易语言——全API取操作系统信息、IE信息、计算机名称、用户名...

.版本 2.DLL命令 取版本号, , "kernel32","GetVersionExA", , 取出当前计算机操作系统版本及相关信息.参数取win信息, 操作系统.DLL命令 取计算机名, 整数型, "kernel32.dll","GetComputerNameA", ,取出当前完整的计算机名称,TRUE(非零)表示成功,否则返回零。.参数字串缓冲区, 文本型, ,lpBuffer,随同计算机...

weixin_28784019的博客 742

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

explorer和ie的正常模块表

explorer和ie经常受到流氓软件的dll注入,可是又不知道是那个dll文件这里有一分正常的模块列表,如果出现不正常的dll文件就可以进行对照并排除 ie C:\Program Files\Internet Explorer\IEXPLORE.EXEC:\WINDOWS\syst...

weixin_33875564的博客 154

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

安装tensorflow-gpu:ImportError: DLL load failed:找不到指定的模块 原因&解决方案

在按照教程安装tensorflow-gpu的过程中,出现ImportError: DLL load failed:找不到指定的模块: (tensorflow) C:\Users\Administrator&amp;amp;amp;amp;amp;gt;python Python 3.6.3 |Anaconda, Inc.| (default, Mar 4 2019, 15:10:56) [MSC v.1900 64 bit (AMD6...

l_mingo的博客 2万+

也谈隐藏盘符等windows 的管理员的策略实现

网上的文章都知道在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer 目录下有控制隐藏驱动器隐藏控制面板的键值,通过修改这些键值来控制是否可以改变windows的配置或者权限,或者掩藏或者显示什么。(必须要重新启动)那么谁来控制这个开关呢?

justin_bkdrong的专栏 1482

安装tensorflow2.2后import出现:ImportError: DLL load failed:找不到指定的模块

在使用pip install tenorflow安装完tensorflow2.2后,执行 import tensorflow as tf 出现如下错误信息: ImportError: DLL load failed: 找不到指定的模块。 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", lin

博饼的专栏 3249

python:import cv2 : DLL load failed

 --------------------- 本文来自 cskywit 的优快云 博客 ,全文地址请点击:https://blog.csdn.net/cskywit/article/details/81513066?utm_source=copy 前提是已经pip install opencv-python 成功之后: 方法:使用depends软件查看究竟缺失什么DLL(成功)       ...

qq_40242410的博客 423

IE关闭后报“"0x7e5659c4"指令引用的"0x02aaa558"内存。该内存不能为"read"。”

这几周,IE关闭后,总是报“iexplore.exe - 应用程序错误"0x7e5659c4"指令引用的"0x02aaa558"内存。该内存不能为"read"。要终止程序,请单机“确定”。”考虑可能是安装了什么软件,把IE的dll给冲旧了。download了IE6.0安装程序。把注册表中IE的版本好6.0.2900.xxxx给成5.0。运行IE6.0安装程序。重启后报“某程序的入口

kaoziji的专栏 2257

利用InjectedBundle定制自己的Webkit(二)

由于时间仓促,之前贴的代码中有些许错误,请大家见谅,现已更正,并附上运行结果! ----------------我是开始分割线----------------- 在上一篇利用InjectedBundle定制自己的Webkit(一)中,我们完成了一个自己的InjectedBundle,接下来我们就要在Webkit中加载我们自己的InjectedBundle。 为了测试方便先给出...

weixin_30828379的博客 242

python安装opencv模块踩过的坑

采用 pip 安装opencv-python Pip install --upgrade opencv-python 然后 在python 中 import cv2 提示模块加载错误 the specified module could not be found 未加载的模块,用depends 查看是缺少了api-ms-win-downlevel-shlwapi-l1-1-0.dll...

fripy的专栏 7843

Shell Path API

这些都是对路径,文件名等字符串的分析提取函数 This section describes the Microsoft Windows Shell path handling functions. The programming elements explained in this documentation are exported by Shlwapi.dll and defined in ...

weixin_34242509的博客 109
cssin
博客等级 码龄26年 0粉丝 1原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值