Avatar billede tdaugaard Nybegynder
20. januar 2001 - 13:37 Der er 9 kommentarer og
1 løsning

Hvordan kan jeg finde navnet/stien på en DLL ud fra et refernce navn ?

Hvis jeg har f.eks. \"JMail.SMTPMail\" hvordan kan jeg så, f.eks. via registry\'en, finde ud af at den reference hører til i DLL\'en C:\\Programmer\\Dimac\\JMail\\JMail.dll ??
Avatar billede dna Nybegynder
20. januar 2001 - 13:51 #1
hvad f.... tdaugaard! Troede du vidste alt selv!  :)

dna
Avatar billede tdaugaard Nybegynder
20. januar 2001 - 14:10 #2
dna:> hæ hæ .. dog ikke ;o) (that\'s our little secret, okay ? *S*)
Avatar billede swjensen Nybegynder
20. januar 2001 - 16:15 #3
Hvis du implementerer
CLSIDFromPRogID kan du få classID, som du kan bruge til et registryOpslag, hvor du så spørger på InprocServer32 eller localServer32..

Artiklen her
http://support.microsoft.com/support/kb/articles/q183/5/44.asp?FR=0
har declares til api-kaldene
Avatar billede tdaugaard Nybegynder
20. januar 2001 - 18:08 #4
swjense:> \"CLSIDFromPRogID kan du få classID, som du kan bruge til et registryOpslag, hvor du så spørger på InprocServer32 eller localServer32..\"

and how do i do that ?
Avatar billede swjensen Nybegynder
21. januar 2001 - 09:29 #5
Option Explicit
      Private Type GUID
          Data1 As Long
          Data2 As Integer
          Data3 As Integer
          Data4(7) As Byte
      End Type

      \'API Declarations:
      \'=================

      Private Declare Function CLSIDFromProgID _
        Lib \"ole32.dll\" (ByVal lpszProgID As Long, _
        pCLSID As GUID) As Long

      Private Declare Function ProgIDFromCLSID _
        Lib \"ole32.dll\" (pCLSID As GUID, lpszProgID As Long) As Long

      Private Declare Function StringFromCLSID _
        Lib \"ole32.dll\" (pCLSID As GUID, lpszProgID As Long) As Long

      Private Declare Function CLSIDFromString _
        Lib \"ole32.dll\" (ByVal lpszProgID As Long, _
        pCLSID As GUID) As Long

      Private Declare Sub CopyMemory Lib \"kernel32\" Alias _
        \"RtlMoveMemory\" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
      Private Sub StringFromPointer(pOLESTR As Long, strOut As String)
        Dim ByteArray(255) As Byte
        Dim intTemp As Integer
        Dim intCount As Integer
        Dim i As Integer

        intTemp = 1

        \'Walk the string and retrieve the first byte of each WORD.
        While intTemp <> 0
            CopyMemory intTemp, ByVal pOLESTR + i, 2
            ByteArray(intCount) = intTemp
            intCount = intCount + 1
            i = i + 2
        Wend

        \'Copy the byte array to our string.
        CopyMemory ByVal strOut, ByteArray(0), intCount
      End Sub


Private Sub Command1_Click()
Dim CLSID As GUID
Dim strTmpCLSID As String * 255
Dim strCLSID As String
Dim strProgID As String
Dim pCLSID As Long
Dim lngRet As Long
Dim strInprocServer32 As String
Dim strLocaleServer32 As String
   
Dim whsShell As IWshShell_Class

\'    strProgID = \"MSInfo.Dokument\"
    strProgID = \"ADODB.Connection\"

    lngRet = CLSIDFromProgID(StrPtr(strProgID), CLSID)
    If lngRet <> 0 Then Exit Sub
    lngRet = StringFromCLSID(CLSID, pCLSID)
    If lngRet <> 0 Then Exit Sub
    StringFromPointer pCLSID, strTmpCLSID
    strCLSID = Left(strTmpCLSID, InStr(1, strTmpCLSID, Chr(0), vbBinaryCompare) - 1)
   
    Set whsShell = New IWshShell_Class
   
    On Error Resume Next
    strInprocServer32 = whsShell.RegRead(\"HKCR\\CLSID\\\" & strCLSID & \"\\InprocServer32\\\")
    strLocaleServer32 = whsShell.RegRead(\"HKCR\\CLSID\\\" & strCLSID & \"\\LocalServer32\\\")
    On Error GoTo 0

    If strInprocServer32 <> \"\" Then
        MsgBox strInprocServer32
    End If

    If strLocaleServer32 <> \"\" Then
        MsgBox strLocaleServer32
    End If


End Sub
Avatar billede swjensen Nybegynder
21. januar 2001 - 11:43 #6
PS
Early Binding til wshShell kræver en reference til Windows Script Host Object Model
Avatar billede tdaugaard Nybegynder
21. januar 2001 - 15:36 #7
swjensen:> Jeg bukker og takker! Det er helt fint det her, mange tak!
Avatar billede swjensen Nybegynder
21. januar 2001 - 17:08 #8
Velbekomme:-)
Hvad er det i øvrigt, for et projekt, du er i gang med?
Avatar billede tdaugaard Nybegynder
22. januar 2001 - 16:08 #9
swjensen:> sorry .. havde slet ikke set din kommentar :-(
Et screenshot på http://www.tdaugaard.dk/x/noteext.gif burde sige det hele.
Det jeg skulle bruge denne del til er at kunne tilbyde IntelliSense reference hjælp på objekter i mit program.

NoteExt hedder programmet.
Avatar billede tdaugaard Nybegynder
22. januar 2001 - 16:10 #10
Forresten vil jeg lige sige at knapper/layout på mit program er langtfra færdigt..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester