如何解决如何在VB6中包含SDK例程?
我正在修改一些旧的VB6代码,并且有许多调用称为SDKPress(Index as integer,PressStatus as Integer,PressX as double,PressY as double,PressDataX as double,PressDataY as double)
的子例程。
(此例程返回鼠标单击的位置,而Index返回鼠标所在窗体上的哪个图形。)
由于在项目中没有用于此的代码,因此我认为它来自某些Windows软件开发工具包。但是,在开发PC上没有任何痕迹。只是VisualBasic目录中包含winsdk_web.exe的SDK目录。
我不能从另一个项目中调用该子例程。子例程住在哪里?在哪里可以找到有关文档?如何获得可以在其他项目中使用的表单?
解决方法
了解其住处。将光标放在IDE中的一个例行调用中,右键单击它,然后选择go to definition
。看看带你去哪里。
- 这可能是您项目中代码文件中的普通例程。
- 这可能是DLL中的例程,该DLL通过
Declare
语句导入到您的项目中。 - 它可能是COM / ActiveX DLL或OCX控件甚至ActiveX EXE中的例程。在这种情况下,IDE将向您显示“对象浏览器”窗口,您应该能够确定例程所在的位置,然后从那里开始。即弄清楚如何将对它的引用添加到另一个VB项目中,以及如何在另一台PC上安装/注册相关的DLL / OCX / EXE。
OR ,我确定您已经尝试过此操作,但是以防万一,请在源代码中搜索例程名称。在VB IDE中使用Ctr-F
或菜单项Edit-Find
。
DLL文件包含API函数,vb6代码将加载DLL(Declare Function SDKPress Lib "DLLName" ....
)并调用该函数,使用DllExpView:https://www.nirsoft.net/utils/dll_export_viewer.html之类的工具并列出DLL及其函数。或者它也可能是一个内部子例程/函数。
如果运行使用SDK的原始程序,则可以使用Process Monitor和Process Explorer收集一些信息。这些可以帮助您找到许多类型的依赖项。
我将从第二个开始-运行程序时,ProcExp将向您显示所有已加载到进程中的文件,包括DLL。仅此一项就可以为您提供一些见识。
如果这还不够,请使用ProcMon主动监视程序的活动。虽然ProcExp基本上是时间的快照,但ProcMon将动态记录程序的许多动作,包括它如何搜索并最终加载DLL。
https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer
我发现这些工具在很多情况下都是无价的。它们有助于打破许多程序员在运行过程中出现的“黑匣子”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。