begin process at 2008 05 17 04:49:17
1 173 911 membres
44 nouveaux aujourd'hui
13 973 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

Catégorie :Divers Classé sous : vb6, ide, clipboard, formatage, afck Niveau : Débutant Date de création : 20/01/2008 Date de mise à jour : 22/01/2008 09:39:38 Vu / téléchargé: 2 642 / 125

Note :
Aucune note

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note


Description

Depuis quelques temps, dès que j'ouvre mon IDE, mon presse-papier se vide.
un hook du presse-papier => pas moins de 26 accès images, toutes étant des images des boutons de l'IDE
pas le courage de tout réinstaller etc.... mais apparemment (forum), mon PC est loin d'être le seul touché

voici donc un petit exe à placer dans le répertoire de votre VB6.EXE
changez ensuite le chemin de vos raccourcis VB6 pour les faire pointer vers VB6_Loader.exe


fonctionnement :
très simple : le loader se charge, récupère le contenu TEXT du presse-papier, lance votre IDE normalement, ré-attribue

votre presse-papier puis se ferme.

j'ai tenté un peu plus compliqué (un prog tournant en permanence pour observer et agir en conséquence) mais le problème

est que techniquement, le presse-papier est altéré avant que l'IDE ne soit chargé dans les process....


votre IDE fonctionne parfaitement?
eh bien félicitations ^^
cependant cet outils peut néanmoins vous être très pratique.
en effet au lieu "simplement" de servir de buffer au presse-papier, on le modifie aussi un peu....

ainsi, si il contient un code que vous avez copié, il sera formaté!
à savoir que sous FF, on obtient souvent du

# ligne code 1
# ligne code 2
# ligne code 3

ou

    * ligne code 1
    * ligne code 2
    * ligne code 3

ou

1. ligne code 1
2. ligne code 2
3. ligne code 3


une fois l'IDE lancé, le presse-papier sera sans ces préfixes....




tenez-moi au courant ;)

Conclusion

mode d'emploi :
compiler 'VB6_Loader.vpb'
placer 'VB6_Loader.EXE' dans le répertoire de 'VB6.EXE'
modifier manuellement les raccourcis pointant 'VB6.EXE' vers 'VB6_Loader.EXE'
lire le 'Association Extensions\README-FIRST.htm'
compiler 'Association Extensions\VB6Loader_Association.vbp'
executer 'VB6Loader_Association.exe'
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

20 janvier 2008 23:20:42 :
zip
22 janvier 2008 09:39:39 :
* 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 , * aide pour sauve registre
  • signaler à un administrateur
    Commentaire de vicosta le 20/01/2008 23:41:46

    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

  • signaler à un administrateur
    Commentaire de PCPT le 20/01/2008 23:55:19 administrateur CS

    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
    ++

  • signaler à un administrateur
    Commentaire de jack le 21/01/2008 02:16:31 administrateur CS

    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)

  • signaler à un administrateur
    Commentaire de Renfield le 21/01/2008 07:15:09 administrateur CS

    "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 ?

  • signaler à un administrateur
    Commentaire de bouv le 21/01/2008 11:20:35

    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
    ++

  • signaler à un administrateur
    Commentaire de EBArtSoft le 21/01/2008 13:57:21 administrateur CS

    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

  • signaler à un administrateur
    Commentaire de EBArtSoft le 21/01/2008 13:59:55 administrateur CS

    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

  • signaler à un administrateur
    Commentaire de Renfield le 21/01/2008 14:00:00 administrateur CS

    bien d'accord, le clipboard texte seul n'est pas suffisant...

    c'est un bon début

  • signaler à un administrateur
    Commentaire de PCPT le 21/01/2008 15:46:30 administrateur CS

    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 ;)

  • signaler à un administrateur
    Commentaire de EBArtSoft le 21/01/2008 21:36:41 administrateur CS

    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.

    @+

  • signaler à un administrateur
    Commentaire de EBArtSoft le 21/01/2008 22:22:29 administrateur CS

    Pour info : http://www.mvps.org/vbvision/Save_Clipboard.htm

  • signaler à un administrateur
    Commentaire de PCPT le 21/01/2008 22:34:20 administrateur CS

    ok on va tenter sur cette nouvelle voie, merci EB ;)

  • signaler à un administrateur
    Commentaire de PCPT le 22/01/2008 09:48:52 administrateur CS

    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 ;)

  • signaler à un administrateur
    Commentaire de Renfield le 22/01/2008 09:52:52 administrateur CS

    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 ^^

  • signaler à un administrateur
    Commentaire de EBArtSoft le 22/01/2008 10:12:34 administrateur CS

    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

  • signaler à un administrateur
    Commentaire de Renfield le 22/01/2008 10:17:10 administrateur CS

    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...

  • signaler à un administrateur
    Commentaire de PCPT le 31/01/2008 03:08:49 administrateur CS

    tu testes ton presse-papier EB ?

  • signaler à un administrateur
    Commentaire de EBArtSoft le 31/01/2008 19:41:07 administrateur CS

    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

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS