le contrôle conteneur n'est pas un conteneur valide

Résolu
ALBrustis - 18 janv. 2013 à 10:56
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 - 24 janv. 2013 à 07:51
Bonjour a tous
je bute sur le probléme suivant
Sur un projet en VB6
aprés l'avoir installé sur une autre machine
j'ai l'erreur suivante
au lancement du projet:
Impossible de charger le contrôle Fichier_; le contrôle conteneur n'est pas un conteneur valide
"le contrôle Fichier_" est en définitive le menu de la feuille
et surprenant j'ai une sauvegarde qui peut se charger
j'ai contourné le probléme en sauvegardant le code et les modif dans un fichier txt
que je copie et remplace après avoir chargé la sauvegarde

merci pour votre aide

78 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2013 à 08:54
Essaye de récupérer la version officielle (c'est à dire sur le site des CCRP s'il existe encore) et installe-le à la place du tien

je ne prendrais personnellement pas ce risque (serais-je trop méfiant ?).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2013 à 08:57
Pour mémoire (à l'intention de Calade) :
c'est surtout qu'il est en réalité, sous un autre nom, le contrôle ccrpprg.ocx, lequel se prête admirablement à des "transformations insidieuses" qui en font alors un ocx malveillant



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
22 janv. 2013 à 09:08
@ucFoutu

Je n'avais pour ma part jamais entendu parler de HackPrg.ocx.

Par contre comme je l'ai dit, j'utilise régulièrement le ccrpprg, récupéré il y a moult années sur le site mvpb.org alors qu'il était encore actif et je n'ai jamais eu de problèmes.
Ce qui ne veut pas dire évidemment qu'il n'y en a pas des versions malveillantes.


Calade
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2013 à 10:21
Ce qui ne veut pas dire évidemment qu'il n'y en a pas des versions malveillantes

Tu m'as insuffisamment lu. Le vrai problème est que cet ocx, même si sain au départ, peut ensuite être une cible relativement facile et devenir alors malveillant.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
22 janv. 2013 à 10:32
devenir alors malveillant.


Je te crois sur parole, mais je me demande comment un simple OCX, destiné au départ à afficher une barre de progression dans une appli desktop (car je ne pense pas que les mêmes OCX soient utilisés sur des pages Web - mais je n'ai jamais essayé) puisse devenir malveillant sans traficotage de son code source.

Mais ce n'est qu'une question, là-dessus je ne suis sur de rien.


Calade
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2013 à 10:42
Je n'en sais rien, Calade ! Je ne me suis personnellement jamais intéressé à ce genre de "manoeuvre". Le fait est tout simplement que cette vulnérabilité existe et que de nombreux articles sur le web en parlent. J'ai mis plus haut le lien vers l'un d'entre eux, que j'ai choisi au hasard dans le tas.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
22 janv. 2013 à 10:52
Je pense personnellement qu'il est difficile (voire impossible) de trafiquer un OCX (mais c'est la même chose pour une DLL ou un EXE) résidant sur ton disque dur (à moins de prendre la main dessus, mais c'est une autre histoire). Surtout qu'à priori l'appli de notre ami est une appli desktop et non une appli web.

Mais bon, comme toi, je ne me suis jamais intéressé au comment de la chose et je peux me tromper.


Calade
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2013 à 11:14
Comme tu veuyx, calade (c'est de ta machine et non de la mienne, qu'il s'agit).
Je ne vis pas dresser ici la liste complète des bobos possibles (elle est longue).
Je vais me contenter du plus sérieux :
ccrpprg.ocx infected by malware
.....
.....
Secretely disable firewall and system security setting through reweite their crucial files.

Voilà voilà ...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
22 janv. 2013 à 11:34
Ton dernier mail (et surtout sa citation) m'a quand même interpellé. En fait on ne parle pas du même ccrpprg.ocx.

Toi tu parles d'un ocx qui est lié au système et situé dans c:\Windows\System32

Moi je parle d'un contrôle ActiveX faisant partie, à l'instar de ces petits copains, développés principalement, mais pas que, par Clark J. Peterson et appelé CCRP(pour Common Control Replacement Project) et là pour remplacer certains natifs de VB qui sont un peu basiques. Perso', j'en utilise plusieurs (ils sont libres de droit) sans aucun problème ni virus depuis une bonne dizaine d'années.

Reste à savoir lequel notre ami utilise ?

Calade
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2013 à 12:29
Aïe !
1) On le sait ce qu'il utilise
2) et il le fait sous un des nombreux noms possibles donnés au même ocx (le tien)
Relis tout ce que j'en ai dit très attentivement.
Moi, j'abandonne tout net ces aspect ...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 janv. 2013 à 12:32
@ ALBrustis
Je parlais de "Option Explicit" car c'est la première ligne de code qui devrait exister dans n'importe laquelle de tes pages de codes = déclaration explicite des variables.
Si tu n'as pas activer cette option, je te conseille fortement de le faire (surtout avec de gros projets). Par contre, comme tu le feras après avoir créé des formes/module..., il te faudra aller manuellement en tête de chaque page de code ajouter manuellement ce "Option Explicit".

Cette "borne" devant faciliter le repérage du début de code : ma question ne s'intéressait qu'à ce qui se trouvait entre le début du fichier FRM et le début du code (mais sans le code)
En ouvrant les derniers fichiers que tu as publié, j'ai eu ce que je voulais, c'est le principal.

J'en reviens à ta manip qui consiste à copier-coller un code de secours : Tu fais ce "coller" dans quoi ?
-1- Dans le code de la forme ouverte par VB6
-2- Dans le fichier FRM qui tu as ouvert dans NotePad (ou similaire) ?
Si c'est le cas -2-, méfie toi d'une chose : L'autre fichier FRX, qui va avec, est un fichier binaire. Il stocke les éléments graphiques de ta forme.
Dans le fichier FRM, tu vois des syntaxes du genre
Picture = "Sun_fm_new.frx":48B7
le 48B7 est une adresse de translation.
Si tu colles dans le fichier FRM du code qui se réfère à un FRX qui n'a pas été généré en même temps, tu as de forts risques de 'taper' à côté, de pointer sur une/des adresses qui ne sont pas correctes, et cela peut expliquer le genre d'erreur dont tu parles.
Hélas, dans ce cas, il n'y aucune façon de s'en sortir, si ce n'est d'être sûr d'avoir un FRM en phase avec le FRX.

Tu dis avoir une version de secours ouvrable sous VB6; celle dont tu tentes de te servir pour remédier au problème.
As-tu modifié le contenu du fichier FRM en dehors de l'éditeur VB6 ?

Règle d'or du programmeur : Sauvegarder son travail
Perso, je sauvegarde tous les soirs l'ensemble de mes codes sur un disque dur matériellement différent de celui de développement.
Un emplacement de sauvegarde pour chaque jour de la semaine (5); ceci permet de revenir en arrière sur 5 jours, ce qui n'est pas forcement inutile.
Une fois par semaine, je sauvegarde la dernière version sur une autre machine et je garde autant de versions hebdo que mon disque le permet.
Cette tâche est automatisée par UltraBackup
0
@jack
je reviens sur la manip que je fais pour ne pas perdre mes mises a jour

1° j'ouvre mon projet avec ma sauvegarde
(ma sauvegarde c'est 1 fich. frm + 1 fich.frx que je conserve en lieu sur hi hi
que je copie dans le dossier du projet ..j’écrase les anciens..

[b]a ce stade si je j'enregistre le projet
..je ne peut plus le recharger/bpourtant j'ai rien modifié
précision:
quand je parle de ne plus pouvoir charger le projet il faut comprendre la frm qui cause probléme les autres frm c'est ok

2° j'ouvre ma mise a jour que j'ai pris le temps d'enregistrer dans un txt

je copie tout le code
je le colle dans la forme ouverte par VB6
(je remplace le code de la sauvegarde)

maintenant tout est ok je peux
creer l'exécutable et mème une installation
qui fonctionne comme tu as pu le voir

mais ta demande de précision ouvre une réflexion
c'est que:
quand j'ai remplacé le code de la sauvegarde
a ce moment le frx n'est plus correct avec le frm et pourtant je peut continuer de modifier le code est créer l'exécutable et mème etc....

demande de précision :Est ce que le frx stocke que les éléments graphiques

les éléments graphiques de ta forme n'ont pas changer entre la sauvegarde et la mise a jour

dur dur ...

On ma toujours dis qu' en informatique il y avait toujours une solution..
le doute s'installe...

Hélas, dans ce cas, il n'y aucune façon de s'en sortir, si ce n'est d'être sûr d'avoir un FRM en phase avec le FRX.

Tu dis avoir une version de secours ouvrable sous VB6; celle dont tu tentes de te servir pour remédier au problème.

si je ne me sert pas de cette sauvegarde je ne peut plus charger cette feuille

As-tu modifié le contenu du fichier FRM en dehors de l'éditeur VB6 ?

non


merci pour votre aide
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 janv. 2013 à 15:03
"quand j'ai remplacé le code de la sauvegarde"
Le code reste du code.
Ce qui peut poser un problème serait de modifier la partie du fichier FRM situé entre le début du fichier et le début du code, celui décrivant les composants (nom, attributs) et faisant référence aux objets graphiques situés dans le fichier FRX.
Donc si tu ne remplaces que le code, pas de soucis.

Quant à "Option Explicit" :
Ajouter ce texte en haut de chaque page de code de toutes tes formes, modules, classes etc n'est pas long à faire.
Va s'en suivre une phase de corrections qui dépend de la manière dont tu as programmé :
Cette option t'oblige à dimensionner chaque variable utilisée.
Ce doit être (devenir) un geste automatique afin de mieux gérer les étendues des variables ainsi que les conversions de type qui s'avèrent parfois utiles (et ne pas laisser faire le compilateur afin d'éviter les mauvaises surprises d'interprétation).
Pour opérer, c'est simple : après avoir ajouté ces "Option Explicit", lance ton programme avec Ctrl-F5 et corrige au fur et à mesure des indications d'erreur/manque.
Si le programme se lance sans broncher, fuego!, c'est fini.

Ce serait déjà une étape utile.
0
@jack salut
Option Explicit OK

je m'en sort pas trop mal
trouvé une dizaine de variable..sur 346 K

le programme se lance sans broncher, fuego!, c'est fini. (avec la sauvegarde)

@jack
je me suis résolu a refaire une copie de la form qui fait défaut..

pour cela j'ai créer une form supplémentaire
dans la qu'elle je copie la sauvegarde et
a chaque modif j'enregistre ..ferme et recharge la feuille

en copiant les composants (qui auront le même nom ca me permet de ne pas retoucher le code.. que je copierait par la suite

pour l'instant ca marche chargement sans problème .je n'ai pas encore fini tous les composants...

ça va être fastidieux , mais je suis pas obligé de réécrire tout

merci encore a tous je vous tient informé quand ou si je rencontre le bug
0
@@
dans la qu'elle je copie la sauvegarde et
a chaque modif j'enregistre ..ferme et recharge la feuille

Voir
dans la qu'elle je copie les composants de la sauvegarde et
a chaque modif j'enregistre ..ferme et recharge la feuille
0
Bonjour tout le monde
me revoilà
Aujourd'hui UNE GROSSE SURPRISE !
j'ai terminé de replacer tous les objets sur ma form tout ce passait bien jusqu'a ce que je place le dernier.et le dernier c'est :
"Flash10b.ocx"
(c'est le seul que j'ai pas enlevé auparavant dans mes test
puisque d'apres mes "propriété de projet"
j'ai validé la case
Mettre a niveau les contrôles active x

et donc j'ai eu une erreur systeme a l'enregistrement de la form
sur la lancée
j'ai supprimé la form de mon projet
j'ai copié ma mise a jour (txt)
que je colle dans la forme ouverte par VB6
j'enleve donc l'objet Flash
je désactive sur le projet tout ce qui a en rapport.. enregistre ..ferme ..recharge le projet tout est OK.

je voulais vous remercier tous pour votre patience..et votre aide
par déduction et échange de point de vue le résultat a été a la hauteur du problème

merci encore
@jack
@ucfoutu ton idée au fil de la discution portait sur le soucis avec les ocx ...on voit bien là l'experience (mais c'était pas celui que l'on pensait)hi hi..
@banana32
@Calade également
@Calade est ce que avec ccrpprg.ocx
la propriété tooltiptext fonctionne
avec Hackprog.ocx c'est pas le cas

merci encore pour tout

ps: quelqu'un aurait t'il de bonnes notions en programmation audio en VB6
ex: détecter carte en son en séléctionner une si il y en a plusieurs..ouvrir fermer micro..
puis envisager au final module streaiming pour finir.
je suis sur ce programme depuis pas mal de temps (année) pour le plaisir et pense que le faire évoluer a plusieurs serait peut etre une idée
a bientot peut etre
0
@ucfoutu
@jack
je l'ai supprimé et il est pas près de me revoir !
merci a tous les 2 +
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
24 janv. 2013 à 07:51
@ALBrustis

Content que tu aies résolu ton problème. Il est vrai que se tenir à jour pour toutes les mises à jour peut être fastidieux,mais c'est indispensable.

En ce qui concerne ta question, je viens de vérifier et apparemment non, la propriété ToolTipText ne fonctionne pas. Mais comme je fais un Refresh après chaque mise à jour, je pense que le timer n'a pas le temps de s'initialiser.


Calade
0
Rejoignez-nous