2010-10-19 3 views
0

Possible Duplicate:
Function or interface marked as restricted, or the function uses an Automation type not supported in Visual Basic.Appeler .FindByType fait sortir l'erreur VB6, aide?

Fondamentalement, im juste searchign pour les périphériques uPnP en utilisant les classes uPNPDeviceFinder .FindByType méthode, .FindByUDN fonctionne, mais FindByType donne une erreur:

VB6 donne une erreur de compilation lorsque je tente d'appeler la méthode:

Function or interface marked as restricted, or the function 
uses an Automation type not supported in Visual Basic. 

Je n'ai aucune idée de ce que cela signifie même ou pourquoi je l'obtiens. Je référence et en utilisant le fichier upnp.dll comme trouvé dans le répertoire system32 de yoru - quand je référence et utilise ceci dans VS2010 (disons, vb.net) tout fonctionne et aucun problème n'est trouvé, mais dans VB6, j'obtiens l'erreur ci-dessus , des idées quelqu'un? Merci.

+1

Ne pas créer une nouvelle question pour entrer plus d'informations, éditer votre première question. –

+0

Ce q est spécifique à findbytype et l'autre question est générale et à propos de l'erreur vb en général et ce que cela signifie, ce sont deux questions différentes, merci. –

+0

@ ho1, ne soyez pas en train d'essayer d'obtenir mes messages supprimés, j'ai besoin de couverture en raison de l'obscurité de la question. + les raisons données dans mon dernier commentaire. –

Répondre

1

La fonction est déclarée dans le typelib comme

HRESULT FindByType(
        [in] BSTR bstrTypeURI, 
        [in] unsigned long dwFlags, 
        [out, retval] IUPnPDevices** pDevices); 

et le paramètre non signé dwFlags est inutilisable dans VB6

Function FindByType(bstrTypeURI As String, dwFlags As <Unsupported variant type>) As UPnPDevices 

Vous devez "VB-fy" ce typelib en changeant les types de param à types VB6 compatibles.

Edit:

Here est ma tentative de VB-fy cette typelib, utilisez à vos propres risques. IDL compilé avec mktyplib.

Notez que vous ne devez pas expédier vbupnp.tlb à vos utilisateurs, vous ne devez pas l'enregistrer sur leurs machines. Enregistrez-vous et utilisez-le sur votre machine de développement uniquement.

+0

Salut, comment puis-je faire cela ou que puis-je faire sur la fin vb pour que cela fonctionne car je ne peux pas éditer la DLL? Merci –

+0

Supprimer la référence à 'upnp.dll' et utiliser' vbupnp.tlb' à la place. Si vous préfixez les noms de classes avec UPNPLib, remplacez-les par VBUPNPLib. – wqw

+0

merci mon pote, vous êtes un leadgend, j'essayais de le faire fonctionner mais midl crachait des avertissements précompiler c et ne pouvait pas convertir d'idl à tlb, merci. upvoted et accepté comme réponse. –