+ -
当前位置:首页 → 问答吧 → 求助VB制作ocx控件,在控件里,怎么取得调用ocx的程序路径或程序名

求助VB制作ocx控件,在控件里,怎么取得调用ocx的程序路径或程序名

时间:2011-08-09

来源:互联网

求助VB高手,制作ocx控件中,怎么取得调用ocx的程序路径或程序名。

在控件里试用MsgBox App.Path这个路径只是得到当前控件文件在系统的路径。

作者: wapasp   发布时间: 2011-08-09

控件注册后,直接添加引用就OK.

作者: cnuser1   发布时间: 2011-08-09

网上抄来的。
Private Declare Function GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long


Public Function AppName(Optional hWnd As Long) As String
  If hWnd <> 0 Then
  AppName = GetModulePathName(hWnd)
  Else
  AppName = GetModulePathName
  End If
End Function

   
Private Function GetModulePathName(Optional hWnd As Long) As String
  Dim nResult As String
  Dim nLenResult As Long
  Const GCL_HMODULE = (-16)

  nResult = Space(260)
  nLenResult = Len(nResult)
  nLenResult = GetModuleFileName(GetClassLong(hWnd, GCL_HMODULE), nResult, nLenResult)
  GetModulePathName = Left$(nResult, nLenResult)
End Function

Private Function IsUserControlExecuted(ByVal hWnd As Long) As Boolean
  Dim nFileName As String

  nFileName = Right$(GetModulePathName(hWnd), 12)
  If CBool(nFileName Like "MSVBVM?0.DLL") Or CBool(Mid$(nFileName, 2) = "VB40032.DLL") Then
  IsUserControlExecuted = True
  End If
End Function

作者: patrickkong   发布时间: 2011-08-09

热门下载

更多