PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 31 janv. 2008 à 03:08
tu testes ton presse-papier EB ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 22 janv. 2008 à 10:17
c'est a peu près ce que j'avais saisi de la solution que tu proposais.
je prendrai la proposition 1, perso...
un hook est plus galère a mettre en place
bloquer l'accès est un peu radical... la technique et maladroite, mais vu que les addins passent par le clipboard, on va les laisser faire...
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 22 janv. 2008 à 10:12
Certe...
Voila ce que je propose (J'ai regardé vite fait hier soir, ça peut le faire) :
1 - Faire une sauvegarde de VB6.EXE en VB6_OLD.EXE (ok c'etait evidant)
2 - Remplacer la chaine "advapi32.dll" par "myadvapi.dll" dans VB6.EXE
3 - Créer myadvapi.dll en C ou ASM. Cette dll doit :
- exporter les fonctions de advapi32 importé/requise par VB6.EXE
- Instancier un objet publique d'une dll activex VB6
- (pour avoir du code vb sinon c'est pas drole et on passe chez
cppfrance ou asmfr et puis si on est pas d'accord ben c'est pareil :p !)
4 - Créer une dll activex en VB qui va :
1 - Soit recuperer les donnée du clipboard pour les rapatrier une
fois l'ide chargé
2 - Soit hooker les fonctions du clipboard pour empecher l'effacement
des données ou/et faire un tampon des bitmaps.
3 - Bloquer l'acces au clipboard pendant le chargement de l'IDE par ce
les addin font chier !
4 - "D la reponse D"
Sinon on peut toujours s'arreter au stade 3 en creant une dll de remplacement pour user32.dll qui remplace directement les fonction du clipboard mais la faudrait gerer les 230 ou 250 import bon ok c'est faisable en construisant le fichier .def et .asm par le code mais bon... deja peut etre commencer petit pour voir comment VB interagit avec le clipboard.
Bon aller je retourne a mes robinets haha
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 22 janv. 2008 à 09:52
je pense que EB parle de modifier physiquement le fichier VB6.exe
pour qu'il passe par la case MonLoader.exe
enfin, il t'en causerait mieux que moi, surtout si je me gourres ^^
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 22 janv. 2008 à 09:48
MAJ faite selon les précédents points indiqués : fonctionne maintenant avec les projets existants, y compris les commandes et associations... (2e projet séparé, voir le fichier htm)
je verrai pour le format vbcffiles un peu plus tard...
EB -> pour l'IAT il y a tout de même quelquechose qui m'échappe....
tu entends alors un prog qui tourne en permanence?
j'ai jeté un oeil à 2 de tes sources, une en chargement indirect et l'autre en AddIn.
le AddIn étant exclus (raison évoquée, ordre de chargement), reste le chargement en permanence...
mais dans ce cas comment hooker 'VB6.EXE' alors que, comme plusieurs d'entre vous l'aviez suggéré, çà pourrait très bien être un autre exe, et le vrai serait 'vb6a.exe' par exemple...
nb : l'exe du lien indiqué ne fonctionne pas (il n'empêche pas l'ouverture mais le presse-papier reste endommagé)
@ vous lire ;)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 janv. 2008 à 22:34
ok on va tenter sur cette nouvelle voie, merci EB ;)
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 21 janv. 2008 à 22:22
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 21 janv. 2008 à 21:36
PCPT> Non VB6 (le process) est lancé quand le clipboard est ecrasé seulement l'ide n'est pas visible ! Hors si tu operes un hook sur l'IAT (la table d'importation de dll) de vb6.exe tu pourras executer du code bien bien avant quoi que ce soit d'autre ! Et c'est la, je penses, que tu obtiendras les meilleurs resultat. Biensur c'est un peux plus complexe.
@+
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 janv. 2008 à 15:46
pour ce qui est du hook clipboard, j'étais parti sur cette piste.
c'est d'ailleurs comme çà (en visualisant les images du presse-papier) que je me suis aperçu qu'il y avait d'abord un écrasement du texte si j'en avais un, puis des (26) images venant des boutons.
seulement VB6 n'est pas encore actif (process) alors que le presse-papier est déjà altéré. on ne peut pas tout bloquer juste en supposant que peut-être VB6 sera dans les process dans quelques secondes...
et en addin, s'il n'est pas chargé en premier çà sera le même problème!
pour renommer VB6, je ne voulais pas. si on cherche le getmodulefilename et qu'on tombe sur VB6_old.exe, pour certains de mes codes en tout cas, çà m'embête...
cependant j'ai volontairement mis "vb6.exe" en propriété de la classe process.
ainsi on peut facilement changer comme on le souhaite...
dans l'idéal le clipboard text n'est pas suffisant oui, mais çà correspondait vraiment à ce que je voulais, à savoir conserver (et formater) le texte, plutôt que de tout perdre comme c'était le cas.
modifs à venir (si possible cette semaine) :
* association registre (en conservant les mêmes icônes)
* gestion des paramètres directement sur VB6_Loader, y compris les /make /run
* gestion du clipboard image et rtf
merci pour vos encouragements et vos idées ;)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 21 janv. 2008 à 14:00
bien d'accord, le clipboard texte seul n'est pas suffisant...
c'est un bon début
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 21 janv. 2008 à 13:59
Tiens... une idée serais de ce pencher sur la fonction Clipboard.Clear de VB. A partir de la on hook l'API ou la fonction de l'objet VB depuis l'ide (en y collant une injection de la table d'import, ce qui impliquerait une modification physique "reversible" de l'exe VB6.EXE)
Bon je verais on a plus que l'embara du choix
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 21 janv. 2008 à 13:57
Le probleme vient des addin qui pour utiliser la barre d'outil copie/colle les boutons. C'est effectivement tres genant et tu as eu une tres bonne idée. Toutefois il faudrait envisager une solution qui marche egalement pour tout les autres formats de donnée. Je vais peut etre me lancer aussi mais avec tout ce que je veux faire et ne fait pas j'y crois pas trop.
Merci pour l'idée, bonne pr@g
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 21 janv. 2008 à 11:20
Meme problème rencontré depuis longtemps.
Comme le dis Renfield, il serait plus simple de renommer VB6.exe (par exemple en VB.exe) et de prendre sa place.
Utile pour lancer les projets existants.
Il faut cependant gérer la transmission des parametres.
Sinon très bonne idée et bonne initiative.
Bonne prog
++
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 21 janv. 2008 à 07:15
"LANCER L'IDE VB6 EN CONSERVANT LE CONTENU DU PRESSE-PAPIER"
plus simple de renommer l'ancien VB6.exe et de "prendre sa place"
non ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 21 janv. 2008 à 02:16
Pas bête !
Faudra penser aussi à modifier les associations avec les extensions VBG, VBP, FRM, BAS, CLS (...) dans les options de l'explorateur de fichier Windows (Outils, Option des dossiers, onglet Types de fichiers)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 20 janv. 2008 à 23:55
salut,
le problème est bien là, quand on y arrive c'est par hasard....
là le problème se pose moins (toujours quand on ouvre un projet enregistré...)
vicosta
Messages postés178Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention30 novembre 2011 20 janv. 2008 à 23:41
Salut
J'avais aussi le même prob, j'ai supprimé quelques références clsid dans la configuration vb dans le registre, et maintenaint le clipboard reste intacte.
mais, avec mes tests, je ne me rappel plus quelle est la bonne référence à supprimer,
En attendant, ce code reste une alternative intéréssante
31 janv. 2008 à 19:41
Puis d'abord c'est pas moi c'est windows haha !
http://www.vbfrance.com/tutoriaux/MAINTENIR-CLIPBOARD-INTACTE-DEMARRAGE-VISUAL-BASIC_810.aspx
31 janv. 2008 à 03:08
22 janv. 2008 à 10:17
je prendrai la proposition 1, perso...
un hook est plus galère a mettre en place
bloquer l'accès est un peu radical... la technique et maladroite, mais vu que les addins passent par le clipboard, on va les laisser faire...
22 janv. 2008 à 10:12
Voila ce que je propose (J'ai regardé vite fait hier soir, ça peut le faire) :
1 - Faire une sauvegarde de VB6.EXE en VB6_OLD.EXE (ok c'etait evidant)
2 - Remplacer la chaine "advapi32.dll" par "myadvapi.dll" dans VB6.EXE
3 - Créer myadvapi.dll en C ou ASM. Cette dll doit :
- exporter les fonctions de advapi32 importé/requise par VB6.EXE
- Instancier un objet publique d'une dll activex VB6
- (pour avoir du code vb sinon c'est pas drole et on passe chez
cppfrance ou asmfr et puis si on est pas d'accord ben c'est pareil :p !)
4 - Créer une dll activex en VB qui va :
1 - Soit recuperer les donnée du clipboard pour les rapatrier une
fois l'ide chargé
2 - Soit hooker les fonctions du clipboard pour empecher l'effacement
des données ou/et faire un tampon des bitmaps.
3 - Bloquer l'acces au clipboard pendant le chargement de l'IDE par ce
les addin font chier !
4 - "D la reponse D"
Sinon on peut toujours s'arreter au stade 3 en creant une dll de remplacement pour user32.dll qui remplace directement les fonction du clipboard mais la faudrait gerer les 230 ou 250 import bon ok c'est faisable en construisant le fichier .def et .asm par le code mais bon... deja peut etre commencer petit pour voir comment VB interagit avec le clipboard.
Bon aller je retourne a mes robinets haha
22 janv. 2008 à 09:52
pour qu'il passe par la case MonLoader.exe
enfin, il t'en causerait mieux que moi, surtout si je me gourres ^^
22 janv. 2008 à 09:48
je verrai pour le format vbcffiles un peu plus tard...
EB -> pour l'IAT il y a tout de même quelquechose qui m'échappe....
tu entends alors un prog qui tourne en permanence?
j'ai jeté un oeil à 2 de tes sources, une en chargement indirect et l'autre en AddIn.
le AddIn étant exclus (raison évoquée, ordre de chargement), reste le chargement en permanence...
mais dans ce cas comment hooker 'VB6.EXE' alors que, comme plusieurs d'entre vous l'aviez suggéré, çà pourrait très bien être un autre exe, et le vrai serait 'vb6a.exe' par exemple...
nb : l'exe du lien indiqué ne fonctionne pas (il n'empêche pas l'ouverture mais le presse-papier reste endommagé)
@ vous lire ;)
21 janv. 2008 à 22:34
21 janv. 2008 à 22:22
21 janv. 2008 à 21:36
@+
21 janv. 2008 à 15:46
c'est d'ailleurs comme çà (en visualisant les images du presse-papier) que je me suis aperçu qu'il y avait d'abord un écrasement du texte si j'en avais un, puis des (26) images venant des boutons.
seulement VB6 n'est pas encore actif (process) alors que le presse-papier est déjà altéré. on ne peut pas tout bloquer juste en supposant que peut-être VB6 sera dans les process dans quelques secondes...
et en addin, s'il n'est pas chargé en premier çà sera le même problème!
pour renommer VB6, je ne voulais pas. si on cherche le getmodulefilename et qu'on tombe sur VB6_old.exe, pour certains de mes codes en tout cas, çà m'embête...
cependant j'ai volontairement mis "vb6.exe" en propriété de la classe process.
ainsi on peut facilement changer comme on le souhaite...
dans l'idéal le clipboard text n'est pas suffisant oui, mais çà correspondait vraiment à ce que je voulais, à savoir conserver (et formater) le texte, plutôt que de tout perdre comme c'était le cas.
modifs à venir (si possible cette semaine) :
* association registre (en conservant les mêmes icônes)
* gestion des paramètres directement sur VB6_Loader, y compris les /make /run
* gestion du clipboard image et rtf
merci pour vos encouragements et vos idées ;)
21 janv. 2008 à 14:00
c'est un bon début
21 janv. 2008 à 13:59
Bon je verais on a plus que l'embara du choix
21 janv. 2008 à 13:57
Merci pour l'idée, bonne pr@g
21 janv. 2008 à 11:20
Comme le dis Renfield, il serait plus simple de renommer VB6.exe (par exemple en VB.exe) et de prendre sa place.
Utile pour lancer les projets existants.
Il faut cependant gérer la transmission des parametres.
Sinon très bonne idée et bonne initiative.
Bonne prog
++
21 janv. 2008 à 07:15
plus simple de renommer l'ancien VB6.exe et de "prendre sa place"
non ?
21 janv. 2008 à 02:16
Faudra penser aussi à modifier les associations avec les extensions VBG, VBP, FRM, BAS, CLS (...) dans les options de l'explorateur de fichier Windows (Outils, Option des dossiers, onglet Types de fichiers)
20 janv. 2008 à 23:55
le problème est bien là, quand on y arrive c'est par hasard....
là le problème se pose moins (toujours quand on ouvre un projet enregistré...)
j'en profite pour indiquer le lien de ton topic d'ailleurs :
http://www.vbfrance.com/infomsg_DEMARRAGE-VISUAL-BASIC-CLIPBOARD-VIDE-GENEANT_1060187.aspx
je mettrai à jour selon vos remarques
++
20 janv. 2008 à 23:41
J'avais aussi le même prob, j'ai supprimé quelques références clsid dans la configuration vb dans le registre, et maintenaint le clipboard reste intacte.
mais, avec mes tests, je ne me rappel plus quelle est la bonne référence à supprimer,
En attendant, ce code reste une alternative intéréssante