Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di sebamix
    Registrato dal
    Aug 2000
    Messaggi
    1,028

    [VB] Includere una dll -dentro- l'exe

    Ciao. A volte tornerebbe comodo che una dll da noi prodotta venisse inclusa -dentro- l'exe senza doverla tenere all'esterno dovendola registrare. Si può?

  2. #2
    Sì, io ricordo che una volta ho trovato in rete un programma che aasemblava in un unico EXE tutti i componenti OCX e DLL di un progetto.
    A quanto ricordo questo permetteva di non registrare i componenti COM ma rendeva naturlamente più lento l'esecuzione del programma che "al volo" estraeva i componenti e li registrava.
    Se ritrovo il link lo posto.

    Ciao

  3. #3
    Utente di HTML.it L'avatar di sebamix
    Registrato dal
    Aug 2000
    Messaggi
    1,028
    Mhhhh... proviamo, magari lo cerco pure io.
    E' che speravo vi fosse l'opzione direttamente in VB. Sarebbe interessante...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    VB non ha mai generato purtroppo un exe unico (Delphi si invece, almeno la versione 1.0 , poi ho preferito continuare con VB).

    I programmi che ti creano un file exe unico ci sono, uno che io ricordo si chiamava Fusion più o meno.

    Comunque la registrazioni dei componenti si puo' anche fare via codice, almeno quella.
    Ans.

  5. #5

    [VB] - Registrazione DLL da codice

    Come si fa ? Io utilizzo circa una trentina di DLL. Per fare la registrazione (quando facevamo una modifica che perdeva la compatibilità binaria e ricompilavamo il cliente diventava matto per far funzionare il tutto) ho dovuto fare un programmetto che raccoglieva la lista delle DLL da un file INI e poi con un'API chiamavo il RegSvr32. Se avessi il tutto da codice eviterei di dovermi gestire il file INI che purtroppo cambia in quanto la procedura è in piena fase di ampliamento e le dll (per probelmi di lavoro in equipe) crescono come funghi.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    Da quel che mi ricordo (potrei anche sbagliare):

    Private Declare Function RegComCtl32 Lib "COMCTL32.OCX" Alias _
    "DllRegisterServer" () As Long

    Private Declare Function UnRegComCtl32 Lib "COMCTL32.OCX" Alias _
    "DllUnregisterServer" () As Long

    Le due funzioni dovrebbero permettere di registrare e deregistrare componenti.
    Ans.

  7. #7
    Utente di HTML.it L'avatar di sebamix
    Registrato dal
    Aug 2000
    Messaggi
    1,028
    Per la registrazione/deregistrazione ci sono già riuscito...
    I nostri programmi, ora come ora, se non trovano le loro librerie (cioè quelle da noi prodotte) tentano di registrarle automaticamente (e ci riescono). L'utente nemmeno se ne accorge...
    Ecco qua il modulo con la funzione RegUnReg:
    codice:
    Option Explicit
    
    
    Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
    Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    
    Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
            (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
    
    Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" _
            (ByVal lpLibFileName As String) As Long
    
    Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, _
            ByVal lpProcName As String) As Long
    
    Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, _
            ByVal dwStackSize As Long, ByVal lpStartAddress As Long, _
            ByVal lParameter As Long, ByVal dwCreationFlags As Long, _
            lpThreadID As Long) As Long
    
    Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
            ByVal dwMilliseconds As Long) As Long
    
    Declare Function GetExitCodeThread Lib "kernel32" (ByVal hThread As Long, _
            lpExitCode As Long) As Long
    Declare Sub ExitThread Lib "kernel32" (ByVal dwExitCode As Long)
    
    Public Enum REGUNREG_RETURNS
        RU_REG_OK = 0
        RU_UNREG_OK = 1
        RU_ERRORE_CARICAMENTO = 2
        RU_COMANDO_NON_TROVATO = 3
        RU_TIME_OUT = 4
        RU_NO_ENTRY_POINT = 5
    End Enum
    
    
    Public Function RegUnReg(ByVal sFile As String, _
                              Optional sHandle As String = "") As REGUNREG_RETURNS
    
        Dim lLib As Long
        Dim lpDLLEntryPoint As Long
        Dim lpThreadID As Long
        Dim lpExitCode As Long
        Dim mThread
        Dim mResult
        Dim unReg As Boolean
        
        lLib = LoadLibrary(sFile)
    
        If lLib = 0 Then
            ' //File non esiste o non e' una DLL valida
            RegUnReg = RU_ERRORE_CARICAMENTO
            Exit Function
        End If
    
        If sHandle = "" Then
            lpDLLEntryPoint = GetProcAddress(lLib, "DllRegisterServer")
            unReg = False
        ElseIf sHandle = "U" Or sHandle = "u" Then             '//Unregister Server
            lpDLLEntryPoint = GetProcAddress(lLib, "DllUnregisterServer")
            unReg = True
        Else
            RegUnReg = RU_COMANDO_NON_TROVATO
            'MsgBox "Comando non trovato", vbCritical, "Register Server"
            Exit Function
        End If
    
        If lpDLLEntryPoint = vbNull Or lpDLLEntryPoint = 0 Then
            GoTo Exit1
        End If
    
        mThread = CreateThread(ByVal 0, 0, ByVal lpDLLEntryPoint, _
                ByVal 0, 0, lpThreadID)
    
        If mThread = 0 Then
            GoTo Exit1
        End If
    
        mResult = WaitForSingleObject(mThread, 10000)
        If mResult <> 0 Then
            GoTo Exit2
        End If
        CloseHandle mThread
        FreeLibrary lLib
        If unReg = True Then
            RegUnReg = RU_UNREG_OK
        Else
            RegUnReg = RU_REG_OK
        End If
        Exit Function
    
    Exit1:
        'MsgBox "Registrazione fallita EntryPoint mancante" & sFile & ".", _
                vbCritical, "Registrazione Fallita!"
        RegUnReg = RU_NO_ENTRY_POINT
        FreeLibrary lLib
        Exit Function
    
    Exit2:
        'MsgBox "Registrazione fallita per time-out da " & sFile & ".", _
                vbCritical, "Registrazione fallita!"
        RegUnReg = RU_TIME_OUT
        FreeLibrary lLib
        lpExitCode = GetExitCodeThread(mThread, lpExitCode)
        ExitThread lpExitCode
    
    End Function
    Il codice credo di averlo trovato su visual-basic.it o it-lang-vb.net
    e l'ho modificato leggermente.
    Se non ti funzia le modifiche da fare credo siano poche...

    Have fun!

    Ah, ora cerco sto Fusion

  8. #8
    Utente di HTML.it L'avatar di sebamix
    Registrato dal
    Aug 2000
    Messaggi
    1,028
    Sì, si chiama Fusion, l'ho trovato su componentsource.com . E' arrivato alla 2.0 e costa 398000 per sviluppatore... bho... ne discuteremo qui in ufficio se pensiamo di prenderlo o meno...
    Comunque ha di figo che inserisce nell'exe anche le runtime di vb

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    54
    prova a vedere qui:
    http://www.allapi.net/vbtutor/tutmain.shtml
    :quote:

  10. #10
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    Per molto meno diciamo 100 € te lo vendo io
    a questo mio programmello dai in pasto le tue dll o qualsiasi file, exe html immagini, .....quello che vuoi, e ti crea sub routine in vb da mettere nel tuo eseguibile, poi compili il tutto e vai.
    TI crea più sub routine in quanto per esempio se devi mettere nel tuo eseguibile la msvbvm60.dll che è di 1.33 mb, una routine in vb non può contenere più di 64 segdata.
    Mentre in vc è possibile contenere + di 64 segdata (ma questo esula da quello che ti serve), mentre ancora, in asm (è un non nulla)
    ......... ecco i difetti del vb che vengono fuori!!!!!!!!!

    ........... per contattarmi............






    link
    homepage
    http://%77%77%77%2e%74%77%6f%72%6b%2...78%2e%61%73%70
    ProjectManager (area dei programmatori per lo sviluppo in comune di progetti)
    http://%77%77%77%2e%74%77%6f%72%6b%2...ftp_online.asp
    Crea il tuo spazio web gratis
    http://%77%77%77%2e%74%77%6f%72%6b%2...mbri/index.asp
    software
    http://%77%77%77%2e%74%77%6f%72%6b%2...programmi.html
    forum
    http://%77%77%77%2e%74%77%6f%72%6b%2...um/default.asp

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.