begin process at 2012 02 17 11:19:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Exécution

 > PATCHER LE COMPILATEUR VB6 POUR QU'IL COMPILE DES EXES AUTONOMES(SANS VB6FR.DLL)

PATCHER LE COMPILATEUR VB6 POUR QU'IL COMPILE DES EXES AUTONOMES(SANS VB6FR.DLL)


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Exécution Classé sous :Patch Compilateur, EXE autonome, Automatique, Reversible, sans VB6FR Niveau :Initié Date de création :26/02/2009 Date de mise à jour :01/03/2009 02:49:20 Vu / téléchargé :4 397 / 792

Auteur : deleplace

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
LinkMsvbvm60  2009 Deleplace
Modifie le compilateur VB6
pour supprimer la dépendance à VB6FR.DLL
il la remplace par la dépendance à MSVBVM60.DLL dont il déja dépendant
comme MSVBVM60.DLL est présents
sur tous les PC depuis XP(98 non 2000 sais pas)
vos EXEs deviennent autonomes
LinkMsvbvm60.exe est en même temps
un programme d'installation
un patch pour LINK.EXE
un programme de désinstallation
l'installation renomme ce fichier en _LINK.EXE
et le remplace par une copie de LinkMsdmo.exe (sous le nom LINK.EXE)
Si Vous désirez rendre autonomes des EXEs déja compilés
utilisez UnVb6fr.exe (dans le Zip)
Principe de fonctionnement
LinkMsdmo.exe (renommé LINK.EXE)
recoit les infos de compilations, les transmet à _LINK.EXE (le LINK original)
puis patche l'EXE fabriqué par _LINK.EXE
c'est à dire remplace la référence à VB6FR.DLL par MSVBVM60.DLL

Source

  • Option Explicit
  • Private Declare Function GetModuleFileNameA& Lib "kernel32.dll" (ByVal hModule&, ByVal lpFileName$, ByVal nSize&)
  • Private Declare Function GetLongPathNameA& Lib "kernel32" (ByVal lpszShortPath$, ByVal lpszLongPath$, ByVal cchBuffer&)
  • Private Type STARTUPINFO
  • cb As Long
  • lpReserved As Long
  • lpDesktop As Long
  • lpTitle As Long
  • dwX As Long
  • dwY As Long
  • dwXSize As Long
  • dwYSize As Long
  • dwXCountChars As Long
  • dwYCountChars As Long
  • dwFillAttribute As Long
  • dwFlags As Long
  • wShowWindow As Integer
  • cbReserved2 As Integer
  • lpReserved2 As Long
  • hStdInput As Long
  • hStdOutput As Long
  • hStdError As Long
  • End Type
  • Private Type PROCESS_INFORMATION
  • hProcess As Long
  • hThread As Long
  • dwProcessID As Long
  • dwThreadID As Long
  • End Type
  • Const STARTF_USESHOWWINDOW As Long = &H1
  • Const SW_HIDE As Long = 0
  • Private Const NORMAL_PRIORITY_CLASS As Long = &H20&
  • Private Const INFINITE As Long = -1&
  • Private Const STATUS_WAIT_0 As Long = &H0
  • Private Const WAIT_OBJECT_0 As Long = STATUS_WAIT_0
  • Private Declare Function CloseHandle& Lib "kernel32" (ByVal hObject As Long)
  • Private Declare Function WaitForSingleObject& Lib "kernel32" (ByVal hProcess&, ByVal dwMilliseconds&)
  • Private Declare Function InputIdle& Lib "user32" Alias "WaitForInputIdle" (ByVal hProcess&, ByVal dwMilliseconds&)
  • Private Declare Function CreateProcessA& Lib "kernel32" (ByVal lpApplicationName&, _
  • ByVal lpCommandLine$, ByVal lpProcessAttributes&, ByVal lpThreadAttributes&, _
  • ByVal bInheritHandles&, ByVal dwCreationFlags&, ByVal lpEnvironment&, _
  • ByVal lpCurrentDirectory$, lpStartupInfo As STARTUPINFO, _
  • lpProcessInformation As PROCESS_INFORMATION)
  • Dim MyEXEName$, OrgLINK$, HelpFile$
  • Private Sub Form_Load()
  • Dim Cmd$, EXEFile$, EndOfExe&, StartOfExe&, StringEXE$, VB5&, VB6FR&, I&
  • Cmd = Command
  • MyEXEName = Space(300)
  • MyEXEName = Left(MyEXEName, GetModuleFileNameA(0, MyEXEName, 300))
  • MyEXEName = LongPathName(MyEXEName)
  • If UCase(Right(MyEXEName, 8)) = "\VB6.EXE" Then 'Exécution non compilié (Sous VB6)
  • MyEXEName = App.Path & "\" & App.EXEName & ".exe"
  • End If
  • I = InStrRev(MyEXEName, "\")
  • 'Si le programme se nomme LINK.EXE c'est le patch compilateur
  • 'Sinon c'est l'installateur désinstallateur
  • If UCase(Mid(MyEXEName, I)) <> "\LINK.EXE" Then PreVerif: Install_Uninstall: Exit Sub
  • OrgLINK = Left(MyEXEName, I) & "_LINK.EXE"
  • ShellWait """" & OrgLINK & """ " & Cmd, , True
  • EndOfExe = InStr(UCase(Cmd), ".EXE""")
  • If EndOfExe = 0 Then End
  • StartOfExe = InStrRev(Cmd, """", EndOfExe) + 1
  • EXEFile = Mid(Cmd, StartOfExe, EndOfExe + 4 - StartOfExe)
  • If Dir(EXEFile) = "" Then End
  • Open EXEFile For Binary As 1
  • StringEXE = Space(LOF(1))
  • Get 1, , StringEXE
  • Boucle:
  • VB5 = InStr(VB5 + 1, StringEXE, "VB5!")
  • If VB5 Then
  • VB6FR = VB5 + 6
  • If Mid(StringEXE, VB6FR, 10) = "VB6FR.DLL" & Chr(0) Then
  • Put 1, VB6FR, "MSVBVM60.DLL" 'Patch remplace VB6FR.DLL par MSVBVM60.DLL
  • End
  • Else
  • GoTo Boucle
  • End If
  • Else
  • End
  • End If
  • End Sub
  • Private Sub PreVerif() ' destinée aux utilisateurs de Vista
  • If Dir(LinkFile) = "" Then
  • LinkFile = "D" & Mid(LinkFile, 2)
  • If Dir(LinkFile) = "" Then LinkFile = "C:" & Mid(LinkFile, 17)
  • End If
  • End Sub
  • Private Function Verif() As Boolean
  • If UCase(Right(LinkFile, 9)) = "\LINK.EXE" Then
  • OrgLINK = Left(LinkFile, Len(LinkFile) - 8) & "_LINK.EXE"
  • Verif = True
  • Else
  • MsgBox "Doit se terminer par ""\LINK.EXE"""
  • End If
  • End Function
  • Private Sub Install_Uninstall()
  • HelpFile = Left(MyEXEName, Len(MyEXEName) - 3) & "hlp"
  • If Dir(HelpFile) = "" Then Help.Caption = App.EXEName & ".hlp non trouvé": Help.Enabled = False
  • If Not Verif Then Exit Sub
  • If Len(Dir(LinkFile)) Then
  • Label1.Visible = False
  • Install.Enabled = (Dir(OrgLINK) = "")
  • UnInstall.Enabled = Not Install.Enabled
  • Else
  • Label1.Visible = True
  • Install.Enabled = False
  • UnInstall.Enabled = False
  • End If
  • End Sub
  • 'Comme SHELL mais attend la fin de l'execution
  • Private Function ShellWait&(CommandLine$, Optional Path$ = vbNullString, Optional Hide As Boolean = False)
  • Dim proc As PROCESS_INFORMATION
  • Dim Start As STARTUPINFO
  • With Start
  • .cb = Len(Start)
  • If Hide Then
  • .dwFlags = STARTF_USESHOWWINDOW
  • .wShowWindow = SW_HIDE
  • End If
  • End With
  • CreateProcessA 0&, CommandLine, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, Path, Start, proc
  • ShellWait = WaitForSingleObject(proc.hProcess, INFINITE)
  • CloseHandle proc.hProcess
  • End Function
  • Private Function LongPathName$(ByVal ShortPath$)
  • LongPathName$ = Space(1024)
  • LongPathName$ = Left(LongPathName$, GetLongPathNameA(ShortPath, LongPathName$, 1024))
  • End Function
  • Private Sub Help_Click()
  • Shell "Notepad """ & HelpFile & """", vbNormalFocus
  • End Sub
  • Private Sub LinkFile_Keypress(K%)
  • If K = 13 Then Install_Uninstall ' si <Enter>
  • End Sub
  • Private Sub ChLINK_Click()
  • Install_Uninstall
  • End Sub
  • Private Sub Install_Click()
  • If Not Verif Then Exit Sub
  • If Dir(MyEXEName) = "" Then MsgBox "Il faut compiler " & App.EXEName: Exit Sub
  • On Error Resume Next
  • FileCopy LinkFile, OrgLINK
  • If Err = 0 Then FileCopy MyEXEName, LinkFile
  • If Err Then MsgBox "l'Installation a échoué" Else MsgBox "Installé avec scccés"
  • Install_Uninstall
  • End Sub
  • Private Sub UnInstall_Click()
  • If Not Verif Then Exit Sub
  • On Error Resume Next
  • FileCopy OrgLINK, LinkFile
  • If Err Then
  • MsgBox "La désinstallation a échouée !"
  • Else
  • Kill OrgLINK: Install_Uninstall
  • End If
  • End Sub
Option Explicit
Private Declare Function GetModuleFileNameA& Lib "kernel32.dll" (ByVal hModule&, ByVal lpFileName$, ByVal nSize&)
Private Declare Function GetLongPathNameA& Lib "kernel32" (ByVal lpszShortPath$, ByVal lpszLongPath$, ByVal cchBuffer&)
Private Type STARTUPINFO
cb As Long
lpReserved As Long
lpDesktop As Long
lpTitle As Long
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type

Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type

Const STARTF_USESHOWWINDOW As Long = &H1
Const SW_HIDE As Long = 0

Private Const NORMAL_PRIORITY_CLASS As Long = &H20&
Private Const INFINITE As Long = -1&
Private Const STATUS_WAIT_0 As Long = &H0
Private Const WAIT_OBJECT_0 As Long = STATUS_WAIT_0
Private Declare Function CloseHandle& Lib "kernel32" (ByVal hObject As Long)
Private Declare Function WaitForSingleObject& Lib "kernel32" (ByVal hProcess&, ByVal dwMilliseconds&)
Private Declare Function InputIdle& Lib "user32" Alias "WaitForInputIdle" (ByVal hProcess&, ByVal dwMilliseconds&)
Private Declare Function CreateProcessA& Lib "kernel32" (ByVal lpApplicationName&, _
 ByVal lpCommandLine$, ByVal lpProcessAttributes&, ByVal lpThreadAttributes&, _
 ByVal bInheritHandles&, ByVal dwCreationFlags&, ByVal lpEnvironment&, _
 ByVal lpCurrentDirectory$, lpStartupInfo As STARTUPINFO, _
 lpProcessInformation As PROCESS_INFORMATION)

Dim MyEXEName$, OrgLINK$, HelpFile$

Private Sub Form_Load()
Dim Cmd$, EXEFile$, EndOfExe&, StartOfExe&, StringEXE$, VB5&, VB6FR&, I&
Cmd = Command
MyEXEName = Space(300)
MyEXEName = Left(MyEXEName, GetModuleFileNameA(0, MyEXEName, 300))
MyEXEName = LongPathName(MyEXEName)
If UCase(Right(MyEXEName, 8)) = "\VB6.EXE" Then 'Exécution non compilié (Sous VB6)
 MyEXEName = App.Path & "\" & App.EXEName & ".exe"
End If
I = InStrRev(MyEXEName, "\")
'Si le programme se nomme LINK.EXE c'est le patch compilateur
'Sinon c'est l'installateur désinstallateur
If UCase(Mid(MyEXEName, I)) <> "\LINK.EXE" Then PreVerif: Install_Uninstall: Exit Sub
OrgLINK = Left(MyEXEName, I) & "_LINK.EXE"
ShellWait """" & OrgLINK & """ " & Cmd, , True
EndOfExe = InStr(UCase(Cmd), ".EXE""")
If EndOfExe = 0 Then End
StartOfExe = InStrRev(Cmd, """", EndOfExe) + 1
EXEFile = Mid(Cmd, StartOfExe, EndOfExe + 4 - StartOfExe)
If Dir(EXEFile) = "" Then End
Open EXEFile For Binary As 1
StringEXE = Space(LOF(1))
Get 1, , StringEXE
Boucle:
 VB5 = InStr(VB5 + 1, StringEXE, "VB5!")
 If VB5 Then
  VB6FR = VB5 + 6
  If Mid(StringEXE, VB6FR, 10) = "VB6FR.DLL" & Chr(0) Then
   Put 1, VB6FR, "MSVBVM60.DLL" 'Patch remplace VB6FR.DLL par MSVBVM60.DLL
   End
  Else
   GoTo Boucle
  End If
 Else
  End
 End If
End Sub

Private Sub PreVerif() ' destinée aux utilisateurs de Vista
If Dir(LinkFile) = "" Then
 LinkFile = "D" & Mid(LinkFile, 2)
 If Dir(LinkFile) = "" Then LinkFile = "C:" & Mid(LinkFile, 17)
End If
End Sub

Private Function Verif() As Boolean
If UCase(Right(LinkFile, 9)) = "\LINK.EXE" Then
 OrgLINK = Left(LinkFile, Len(LinkFile) - 8) & "_LINK.EXE"
 Verif = True
Else
 MsgBox "Doit se terminer par ""\LINK.EXE"""
End If
End Function

Private Sub Install_Uninstall()
HelpFile = Left(MyEXEName, Len(MyEXEName) - 3) & "hlp"
If Dir(HelpFile) = "" Then Help.Caption = App.EXEName & ".hlp non trouvé": Help.Enabled = False
If Not Verif Then Exit Sub
If Len(Dir(LinkFile)) Then
 Label1.Visible = False
 Install.Enabled = (Dir(OrgLINK) = "")
 UnInstall.Enabled = Not Install.Enabled
Else
 Label1.Visible = True
 Install.Enabled = False
 UnInstall.Enabled = False
End If
End Sub

'Comme SHELL mais attend la fin de l'execution
Private Function ShellWait&(CommandLine$, Optional Path$ = vbNullString, Optional Hide As Boolean = False)
Dim proc As PROCESS_INFORMATION
Dim Start As STARTUPINFO
With Start
 .cb = Len(Start)
 If Hide Then
  .dwFlags = STARTF_USESHOWWINDOW
  .wShowWindow = SW_HIDE
 End If
End With
CreateProcessA 0&, CommandLine, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, Path, Start, proc
ShellWait = WaitForSingleObject(proc.hProcess, INFINITE)
CloseHandle proc.hProcess
End Function

Private Function LongPathName$(ByVal ShortPath$)
LongPathName$ = Space(1024)
LongPathName$ = Left(LongPathName$, GetLongPathNameA(ShortPath, LongPathName$, 1024))
End Function

Private Sub Help_Click()
Shell "Notepad """ & HelpFile & """", vbNormalFocus
End Sub

Private Sub LinkFile_Keypress(K%)
If K = 13 Then Install_Uninstall ' si <Enter>
End Sub

Private Sub ChLINK_Click()
Install_Uninstall
End Sub

Private Sub Install_Click()
If Not Verif Then Exit Sub
If Dir(MyEXEName) = "" Then MsgBox "Il faut compiler " & App.EXEName: Exit Sub
On Error Resume Next
FileCopy LinkFile, OrgLINK
If Err = 0 Then FileCopy MyEXEName, LinkFile
If Err Then MsgBox "l'Installation a échoué" Else MsgBox "Installé avec scccés"
Install_Uninstall
End Sub

Private Sub UnInstall_Click()
If Not Verif Then Exit Sub
On Error Resume Next
FileCopy OrgLINK, LinkFile
If Err Then
 MsgBox "La désinstallation a échouée !"
Else
 Kill OrgLINK: Install_Uninstall
End If
End Sub

 Conclusion

Avec le projet précedent(UnVb6fr inclus)
Je pense avoir fait le tour du sujet
je retire les Avertissements que j'avais fait suite à une modif

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   hexiwin-046
    • src
  • ExecutablesAutonomes.zipTélécharger ce fichier [Réservé aux membres club]18 154 octets
  • LinkMsvbvm60.frmTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 976 octets
  • LinkMsvbvm60.frxTélécharger ce fichier [Réservé aux membres club]778 octets
  • LinkMsVbvm60.hlpTélécharger ce fichier [Réservé aux membres club]1 241 octets
  • UnVb6fr.frmTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 964 octets
  • UnVb6fr.frxTélécharger ce fichier [Réservé aux membres club]1 577 octets
  • UnVb6fr.vbpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier658 octets

Télécharger le zip


 Historique

27 février 2009 01:10:04 :
Petite amélioration pour les utilisateurs de Vista
27 février 2009 18:00:29 :
Avertissement
01 mars 2009 02:49:20 :
au lieu de remplacer la dépendance à VB6FR.DLL par une dépendance à MSVBVM60.DLL (dont l'EXE est déja dépendant) ce qui a supprimé des inconvenient que j'avais mentionné

 Sources du même auteur

Source avec Zip Source avec une capture CACHER DES DONNÉES COMPRIMÉES LES EXE ET LES FRX(VB6)
Source avec Zip Source avec une capture EXTRACTEUR D' ICÔNES ET D'IMAGES DES EXES ET FRX VB6
Source avec Zip Source avec une capture DUMP EDITEUR BINAIRE
Source avec Zip Source avec une capture DUAL LANGUAGE VB6 DEVELOPPEZ EN FRANÇAIS COMPILEZ EN ANGLAIS...
Source avec Zip Source avec une capture SUPPRESSEUR DE LA DÉPENDACE À VB6FR.DLL REND LES EXES VB6 AU...

 Sources de la même categorie

Source avec Zip CALCULATRICE par TPB
Source avec Zip Source .NET (Dotnet) PIERRE PAPIER CISEAUX par Ultrabytes
Source avec Zip Source avec une capture UN PATCH EN VB (V3) par PhoenixBytes
Source avec Zip Source .NET (Dotnet) [VB.NET 2008] EXECUTION MULTITHREAD DE PLUSIEURS FONCTION À ... par ShadowTzu
Source avec Zip Source avec une capture MULTITHREADING ACTIVEX par Philippe734

 Sources en rapport avec celle ci

Source avec Zip [VBA POWERPOINT] PAGINATION AVEC TOTAL DE DIAPO par Philippe734
Source avec Zip [VBA POWERPOINT] CRÉER UN SOMMAIRE AUTOMATIQUE par Philippe734
SAUVEGARDE AUTOMATIQUE DES PIÈCES JOINTES DES MAILS REÇUS VB... par houtas
FERMETURE AUTOMATIQUE D'EXCEL INACTIF par CerberusPau
Source avec Zip Source avec une capture SUPPRESSEUR DE LA DÉPENDACE À VB6FR.DLL REND LES EXES VB6 AU... par deleplace

Commentaires et avis

Commentaire de Renfield le 26/02/2009 19:21:24 administrateur CS 10/10

Bien plus pratique sous cette forme

Commentaire de EBArtSoft le 27/02/2009 08:36:25 administrateur CS

Sinon suffit de telecharger la version original (English) de Visual Studio pour palier ce probleme et bien d'autre. Ce évite les bidouilles et puis Kit à faire du VB6 autant aller à la source. Iso dispo sur MSDN.

@+

Commentaire de Renfield le 27/02/2009 08:38:34 administrateur CS

j'ai mais reperes avec VB6 en FR

a moins que juste repiquer le Link.exe de la version english...

Commentaire de EBArtSoft le 27/02/2009 09:40:39 administrateur CS

On a tous nos reperes, après suffit de savoir si on veux passer son temps a coder ou bidouiller pour que ça marche !

Hein mon petit Ren on en connais un rayon la dedans ;p

Commentaire de agapoff le 02/03/2009 09:00:08

@EbarSoft :
J'ai fouillé pas mal chez MSDN mais je n'ai pas du mettre les bons mots clefs.
Est ce que tu peux être un peu plus précis pour me permettre de trouver cette image ISO chez eux, STP ?
Mon appli est en VB6 et est sur le point d'être diffusée de façon internationale (pour l'instant en FR et US/EN, mais je m'attends à avoir des demandes en DE, IT, ES)
Ma question subsidiare est : si je livre en l'état avec dépendance VB6FR.DLL, je suppose que mes boîtes de dialogue vont être en français, c'est ça ?
Le but du jeu étant que chaque client puisse s'y retrouver dans sa langue préférée, quelle est la méthode que vous préconisez, en plus de mettre chaque message de l'appli dans un INI de la langue cible ?
Merci !

Commentaire de Renfield le 02/03/2009 09:03:01 administrateur CS

Faut être abonné MSDN...

Les messages d'erreur VB, oui... (mais l'idéal est de ne pas en voir)
le reste, c'est a toi de traduire ^^

Commentaire de agapoff le 02/03/2009 09:44:24

Ah Okay, ça ne change que les messages d'erreur ?

J'ai bien l'intention de livrer un fichier de messages applicatifs pour chaque langue supportée (avec la limitation de l'ANSI, malheureusement), bien sûr, mais en ce qui concerne les boîtes de dialogue ouvrir/enregistrer, seront elles locales même si je fournis et depend de VB6FR ?

Merci pour ton soutien, c'est sympa !

Commentaire de Renfield le 02/03/2009 09:49:57 administrateur CS

ça, ca viens de la version du runtime installé...  VB6SP6FR
et de la dll comdlg32

Commentaire de agapoff le 02/03/2009 10:19:14

Merci Renfield,
Mais je dois être bouché ce matin.
Je ne suis pas sur de bien comprendre pas ta réponse.
VB6SP6FR -> Messages d'erreur en français
COMDLG32 déjà présente sur le PC du client -> Boîtes de dialogue (MsgBox, FileOpen, etc.) dans sa langue
C'est ça ?
Parce que sinon, il faut construire ses propres boîtes de dialogue en y paramétrant les messages dans la langue cible ?
Parce que refaire une BdDlg FileOpen, y'a du taf...
Et désolé de polluer les commentaires de cette source.

Commentaire de Renfield le 02/03/2009 10:23:27 administrateur CS

VB6FR.dll => messages d'erreurs.

après, reste a voir la version des dll installées avec le runtime.

Les boites sont localisées directement, me semble-il (a tester )
les chaines &Ok, &Annuler, etc. sont extraites de User32.dll
(a confirmer)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Forcer une connexion automatique [ par Jonef ] Bonjour,voilà je cherche le moyen pour mettre la connexion internet de quelqu'un en "Connexion automatique" c'est à dire que lorsque j'apelle la conne Mail automatique [ par gty ] Comment peut-on envoyer le résultat d'une page asp en mail à plusieurs destinataires et cela sans devoir cliquer sur un bouton ou un lien. fermeture automatique [ par damien ] je viens de créer ma toute première application visual basicc'est un simple formulaire avec du codeje voudrais qu'il se ferme automatiquement après l' apres installation du prg execution automatique [ par cfourdin ] comment lors de l'installation faire pour que l'exe installé se met en route automatiquement. Comment faire un défilement automatique jusqu'a la derniere ligne ? [ par VBPOUSOPPPA ] Je fait un Chat Internet (qui marche)Les message arrivants s'affichent les uns à la suite des autres en passant à la ligne dans un control "Richtextbo URGENT lancement automatique [ par marci ] salut a tous,j'ai realise une appli et j'aimerais l'integrer a Microsoft Outlook, mais pas comme une macro. En fait j'aimerais qu'elle fonctionne comm Dimentionnement automatique d'un champs RTF [ par Marc COTTÉ ] Pourriez vous me dire comment faire pour dimentionner dynamiquement un champs RTF dont le contenu provient de la sélection d'une partie d'un autre cha


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,794 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales