Saltar al contenido

Historial del chat

ChatGPT

Sora

Explorar GPT

Proyectos

Nuevo proyecto

Hoy

VLC DLL Registro VB6

7 días anteriores

Remover2 fondo video IA

30 días anteriores

Códigos GitHub Lip Sync

Documento para Consejería Fomento

IA para mejorar videos

Generar imagen desde foto

Ver planesAcceso ilimitado, características de Team y más

Abrir barra lateral

ChatGPT 4o

ChatGPT 4o

Compartir

PLUS

Dijiste:

Hola Chat, mira, tengo un vbp de vb6, que carga una dll de videolan vlc, el codigo es este:

//////////////////////////
Type=Exe
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\system32\stdole2.tlb#OLE Automation
Object={DF2BBE39-40A8-433B-A279-073F48DA94B6}#1.0#0; axvlc.dll
Reference=*\G{71A2702D-C7D8-11D2-BEF8-525400DFB47A}#1.1#0#C:\Windows\system32\SSubTmr6.dll#vbAccelerator VB6 Subclassing and Timer Assistant (with configurable message response, multi-control support + timer bug fix)
Reference=*\G{662901FC-6951-4854-9EB2-D9A2570F2B2E}#5.1#0#C:\Windows\system32\winhttpcom.dll#Microsoft WinHTTP Services, version 5.1
Reference=*\G{50A7E9B0-70EF-11D1-B75A-00A0C90564FE}#1.0#0#C:\Windows\System32\shell32.dll#Microsoft Shell Controls And Automation
Object={8C5CD221-FD07-11D6-954C-000347A7F2E1}#1.0#0; NewButton.ocx
Object={A9785966-3DE1-4161-B458-C3ACF675B675}#9.0#0; ZodiacScrollbar.ocx
Object={7CC006AC-0EF1-4AD7-9614-BFEE133E29C0}#142.0#0; ZodiacVideosItem_2024.ocx
Object={5025865D-07B8-11D4-AC0B-00E07D76E465}#1.0#0; TransPicture.ocx
Object={5DCB9600-75FE-11CF-BBF3-CF5428CCD61F}#1.0#0; Slider.ocx
Form=testlistitemplaylist_49_2024.frm
Form=projectVLC Form49_2024.frm
Module=ModuleUrlEncodeDecode; ModuleUrlEncodeDecode49_2024.bas
Module=Module4; hWndOfAllTopLevelWindows49_2024.bas
Module=Module3; Module_Basico_ShellExecute_ShellExe_CentrateWindow49_2024.bas
Module=Module1; Module1VLC49_2024.bas
Module=Module2GetVLCHwnd; Module2GetVLCHwnd49_2024.bas
Module=ModuleCaptureScreen; ModuleCaptureScreen49.bas
Module=ModuleGetAllFiles; ModuleGetAllFiles49_2024.bas
Module=ModuleSysInfo; ModuleSysInfo49_2024.bas
Form=Form Picture Gradient Angle49_2024b.frm
Object={719B098E-A370-452F-8F92-819598EA9F03}#1.0#0; ZodiacGIFAnimatorV3.ocx
Form=Form Picture Gradient Angle49_2024.frm
Object={B972A9B9-503F-420F-9080-CF84B36E82DD}#1.0#0; ZodiacAnimGif.ocx
Startup="Sub Main"
HelpFile=""
Title="ZodiacVideos2023"
ExeName32="vbalSTst6.exe"
Path32="VbAccelerator\VB6_ASM_SSubTimer_Full_Source"
Command32="http://www.astrology7.com/cerebroporquetenecesito.mp4"
Name="ZodiacVideos2023"
HelpContextID="0"
Description="ZodiacVideos2023"
CompatibleMode="0"
MajorVer=1
MinorVer=7
RevisionVer=21
AutoIncrementVer=0
ServerSupportFiles=0
VersionComments="Zodiac Videos 2023"
VersionCompanyName="CopyRight © 2023 by AstrixSoftware S.L."
VersionFileDescription="Zodiac Videos 2023"
VersionLegalCopyright="CopyRight © 2023 by AstrixSoftware S.L."
VersionLegalTrademarks="CopyRight © 2023 by AstrixSoftware S.L."
VersionProductName="Zodiac Videos 2023"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1
DebugStartupOption=0

[MS Transaction Server]
AutoRefresh=1
//////////////////////////

El problema es que dice que no puede cargar esto:

Object={DF2BBE39-40A8-433B-A279-073F48DA94B6}#1.0#0; axvlc.dll

Probablemente porque diferentes versiones de la dll de VLC tiene diferente codigo, como podria cargar siempre la axvlc que tenga el pc? O tendria que en el instalador instalar la que uso?

Me he fijado y si registro con regsvr32 el axvlc.dll en su directorio C:\Program Files\VideoLAN\VLC\axvlc.dll, se registra, pero si lo copio a SYSWOW64 o a System32 e intento registrarlo, no em lo permite en esos directorios...

ChatGPT dijo:

Gracias por el detalle completo, está todo muy claro 👌. Efectivamente, el problema se debe a que axvlc.dll depende de otras DLLs de VLC y no funciona bien si la sacás de su carpeta nativa (C:\Program Files\VideoLAN\VLC). Además, cada versión de VLC puede registrar la ActiveX con distinto GUID o CLSID, lo cual hace que VB6 no la encuentre si no es exactamente la misma.

Vamos punto por punto y te doy varias soluciones posibles según tus necesidades:

🧠 ¿Por qué falla si muevo axvlc.dll a System32 o SysWOW64?

Porque axvlc.dll depende de muchas otras DLLs (como libvlc.dll, libvlccore.dll, y plugins del directorio plugins) que deben estar en la carpeta original de VLC. No es una DLL autónoma. Al moverla, no encuentra sus dependencias internas y por eso no puede registrarse correctamente.

🧩 OPCIONES para resolver el problema

✅ OPCIÓN 1 - Instalador que registre siempre la misma versión

La más segura:

Empaquetás tu proyecto con una versión específica de VLC, por ejemplo la 2.2.8.

En el instalador, copiás toda la carpeta VLC (con todos sus DLLs y axvlc.dll) a una ruta fija como:

makefile

CopiarEditar

C:\Program Files\MyApp\VLC\

Y la registrás así (desde tu instalador o .bat):

bat

CopiarEditar

regsvr32 "C:\Program Files\MyApp\VLC\axvlc.dll"

🔐 Ventaja: todo bajo control, sin depender de lo que haya instalado el usuario.

🤖 OPCIÓN 2 - Detectar y usar la que esté instalada en el sistema

Esto es más complejo pero posible. En vez de incluir axvlc.dll como "Object" en el VBP (que requiere que esté exactamente igual registrada), podés:

Eliminar esta línea del .vbp:

vb

CopiarEditar

Object={DF2BBE39-40A8-433B-A279-073F48DA94B6}#1.0#0; axvlc.dll

Agregar el control en tiempo de ejecución, usando CreateObject:

vb

CopiarEditar

Dim VLC As Object
Set VLC = CreateObject("VideoLAN.VLCPlugin.2")
VLC.playlist.add "http://video.mp4"
VLC.playlist.play

O si usás Controls.Add para un control embebido:

vb

CopiarEditar

Dim WithEvents myVLC As Object

Private Sub Form_Load()
Set myVLC = Me.Controls.Add("VideoLAN.VLCPlugin.2", "myVLC")
myVLC.Visible = True
myVLC.Width = 800
myVLC.Height = 600
myVLC.playlist.add "http://video.mp4"
myVLC.playlist.play
End Sub

📦 Requiere que VLC esté instalado en el sistema del usuario (con su registro correcto), pero no importa si tiene otra versión mientras el control sea compatible.

⚠️ NOTA sobre los GUID y VB6

Cuando usás Object={GUID}... en tu VBP, VB6 espera exactamente esa versión con ese GUID. Si cambiás de versión de VLC o reinstalás, el registro COM cambia y por eso da el error de carga. Por eso, si querés evitar errores de "no puede cargar axvlc.dll", mejor usar CreateObject dinámico, como en la opción 2.

🧪 ¿Cómo saber si axvlc.dll está registrada?

Desde VB6 o desde tu app, podés hacer una prueba como esta:

vb

CopiarEditar

Dim VLCPluginAvailable As Boolean

On Error Resume Next
Dim test As Object
Set test = CreateObject("VideoLAN.VLCPlugin.2")
If Not test Is Nothing Then
VLCPluginAvailable = True
Else
VLCPluginAvailable = False
End If
On Error GoTo 0

If VLCPluginAvailable Then
MsgBox "VLC está disponible"
Else
MsgBox "VLC no está registrado correctamente"
End If

💡 Conclusión: ¿qué te conviene?

Si querés control total: incluir tu propia VLC + registrar axvlc.dll (Opción 1).

Si querés evitar errores por versiones distintas: usar CreateObject dinámico y no depender del GUID (Opción 2).

¿Querés que te ayude a convertir el uso del VLC Plugin en tu VB6 a un método dinámico con CreateObject, para que no dependa de versiones registradas?

4o

Dijiste:

Luego lo hacemos, ahora ando con ganas de una buena siesta... Y si, lo ideal es instalar la verion que usa el programa en el directorio del programa mio, pues pueden cambiar propiedades, y eventos y metodos, etc, y dejar de funcionar...

ChatGPT dijo:

Totalmente de acuerdo, ¡una buena siesta siempre tiene prioridad! 😴

Y sí, lo mejor en estos casos es empaquetar exactamente la versión de axvlc.dll que usás junto a todas sus dependencias de VLC, registrarla desde tu instalador y asegurarte de que no cambie nunca. Así te evitás líos con GUIDs cambiantes, métodos faltantes o errores raros por versiones nuevas incompatibles.

Cuando vuelvas con energías, seguimos con la versión dinámica si querés, o armamos el instalador con registro automático de la DLL.

¡Que descanses! 🛏️💤

4o

Dijiste:

Muchas Gracias Chat!!! La programacion contigo es un lujo!!!

ChatGPT dijo:

¡Gracias a vos! 🧠✨ Es un lujo para mí programar con alguien tan detallista y organizado como vos. ¡Da gusto ayudarte en tus proyectos!

Cuando vuelvas de la siesta (o de conquistar el mundo 😄), acá estaré para seguir con lo que quieras: VB6, Python, IA, efectos visuales o lo que pinte.

¡Disfrutá ese descanso! 😌🛌

4o

Buscar

Investigar a fondo

ChatGPT puede cometer errores. Comprueba la información importante.

?