LANCER L'IDE VB6 EN SAUVEGARDANT/MODIFIANT LE CONTENU DU PRESSE-PAPIER

vicosta Messages postés 178 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 30 novembre 2011 - 20 janv. 2008 à 23:41
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 31 janv. 2008 à 19:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45479-lancer-l-ide-vb6-en-sauvegardant-modifiant-le-contenu-du-presse-papier

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
31 janv. 2008 à 19:41
Oh hey dit donc on a le droit de ce tromper ! :p
Puis d'abord c'est pas moi c'est windows haha !

http://www.vbfrance.com/tutoriaux/MAINTENIR-CLIPBOARD-INTACTE-DEMARRAGE-VISUAL-BASIC_810.aspx
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 janv. 2008 à 03:08
tu testes ton presse-papier EB ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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és 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 janv. 2008 à 22:34
ok on va tenter sur cette nouvelle voie, merci EB ;)
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
21 janv. 2008 à 22:22
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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és 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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é...)

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
++
vicosta Messages postés 178 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 30 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
Rejoignez-nous