用vb查找dll控件的guid值

TsungLee 2006-10-25 11:25:56
请问怎么样查找一个dll控件在注册表里的guid值?
...全文
285 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
TsungLee 2006-10-25
  • 打赏
  • 举报
回复
编译时报错:“变量使用了 Visual Basic 不支持的自动化类型”
TsungLee 2006-10-25
  • 打赏
  • 举报
回复
怎么用??
迈克揉索芙特 2006-10-25
  • 打赏
  • 举报
回复
Option Explicit
Private Type UUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type

Private Declare Function CLSIDFromProgID Lib "ole32.dll" (ByVal lpszProgID As Long, pClsid As GUID) As Long
Private Declare Sub ProgIDFromCLSID Lib "ole32.dll" (CLSID As GUID, lplpszProgID As Long)
Private Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpszProgID As Long, pClsid As GUID) As Long
Private Declare Function StringFromCLSID Lib "ole32.dll" (pClsid As UUID, lpszProgID As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

Public Function CLSIDToProgID(ByVal CLSID As String) As String
Dim UUID As UUID
Dim ProgID As Long
Dim StrOut As String * 255

CLSIDFromString StrPtr(CLSID), UUID
ProgIDFromCLSID UUID, ProgID
If ProgID <> 0 Then
StrFromPtrW ProgID, StrOut
CLSIDToProgID = Left(StrOut, InStr(StrOut, vbNullChar) - 1)
End If
End Function

Public Function ProgIDToCLSID(ByVal ProgID As String) As String
Dim UUID As UUID
Dim CLSID As Long
Dim StrOut As String * 255

CLSIDFromProgID StrPtr(ProgID), UUID
StringFromCLSID UUID, CLSID
If CLSID <> 0 Then
StrFromPtrW CLSID, StrOut
ProgIDToCLSID = Left(StrOut, InStr(StrOut, vbNullChar) - 1)
End If
End Function

Private Sub StrFromPtrW(pOLESTR As Long, StrOut As String)
Dim ByteArray(255) As Byte, i As Integer
Dim intTemp As Integer, intCount As Integer

intTemp = 1
While intTemp <> 0
MoveMemory intTemp, ByVal pOLESTR + i, 2
ByteArray(intCount) = intTemp
intCount = intCount + 1
i = i + 2
Wend
MoveMemory ByVal StrOut, ByteArray(0), intCount
End Sub
TsungLee 2006-10-25
  • 打赏
  • 举报
回复
果然是强
迈克揉索芙特 2006-10-25
  • 打赏
  • 举报
回复
把上面的API声明替换为:
Private Declare Function CLSIDFromProgID Lib "ole32.dll" (ByVal lpszProgID As Long, pClsid As UUID) As Long
Private Declare Sub ProgIDFromCLSID Lib "ole32.dll" (CLSID As UUID, lplpszProgID As Long)
Private Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpszProgID As Long, pClsid As UUID) As Long
Private Declare Function StringFromCLSID Lib "ole32.dll" (pClsid As UUID, lpszProgID As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

然后:
Private Sub Command1_Click()
MsgBox ProgIDToCLSID(控件的ProgID)
End Sub
内容概要:本文围绕“基于雅可比伪逆迭代的双臂协同轨迹规划与跟踪误差收敛性研究”展开,系统探讨了利用雅可比矩阵伪逆法实现双机械臂协同运动的轨迹规划方法,并通过Matlab代码实现了对系统跟踪误差收敛性的仿真验证。研究内容涵盖双臂协同的动力学建模、雅可比伪逆算法的迭代求解机制、轨迹跟踪控制器的设计,以及跟踪误差收敛性的数学证明与数值仿真分析,旨在提升多机械臂系统在复杂协作任务中的运动协调性、轨迹跟踪精度与控制稳定性。; 适合人群:具备机器人学、自动控制理论及数值计算基础,熟悉Matlab/Simulink仿真环境,从事多机械臂协同控制、轨迹规划算法开发及相关方向的研究生、科研人员或工程技术人员。; 使用场景及目标:①研究双机械臂系统在协同作业中的运动规划与控制策略;②掌握雅可比伪逆法在冗余自由度机器人运动学求解中的应用原理;③实现并验证轨迹规划算法的仿真性能与误差收敛特性;④为工业装配、协作搬运、精密操作等多臂机器人应用场景提供算法支持与技术参考。; 阅读建议:建议读者结合Matlab代码逐模块分析算法实现细节,重点关注雅可比矩阵的构建方法、伪逆求解过程及其在迭代控制中的应用机制,同时通过仿真结果对比分析不同参数对系统收敛性与跟踪精度的影响,宜在实际调试中调整增益参数与初始条件以深化对控制性能的理解。

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧