Au secours

Résolu
cs_Angus59 Messages postés 12 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 8 avril 2005 - 22 mars 2005 à 22:00
cs_Angus59 Messages postés 12 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 8 avril 2005 - 23 mars 2005 à 11:08
Bonjour à tous et à Loupgris qui m'a bien depanné la derniere fois ( merci encore LoupGris et à tous pour ce fabuleux forum ca fait plaisir !)

Voila bon ben je commence de suite mon explication :

Je precise que je dois absolument utiliser xcopy.exe car par la suite je vais rajouter les parametres d'exclusion .

Donc : voici une partie du code
-----------------------------------------------------------------------------------------
Private Sub Copie_Click()
..
....
Call Shell("cmd /c xcopy.exe " & Chemin & " " & Chemin2 & " /e /h", vbNormalFocus)



Text6.Text = "En cours"

....
..
----------------------------------------------------------------------------------------

A cote de mon bouton j'ai rajouter une zone de texte "Text6.Text " ce que je cherche à faire c'est que pendant que la copie se passe je voudrais que "En cours" apparaisse (ca c'est ok) et que lorsque la copie est terminée ( la fenetre DOS se ferme automatiquement) je voudrais que "Réalisé" apparaisse.

J'ai essayé de faire qq essais mais c'etait pas comme je voulais.
Pour moi je pensais faire :
- Apres que la copie soit terminée , un fichier pourrait etre créé et avec une fonction de if exist "lefichier" etc etc ou qq chose comme ca , bah ma zone de texte serait renseignée automatiquement par " Réalisé"

MAIS le probleme c'est que je ne peux mettre de timer car la copie depend de la taille du rep (donc aleatoire) et aussi la copie se realise par un call shell("cmd /c xcopy.exe......")

Est ce que vous voyez ce que je veux dire ?

Voyez vous une resolution à mon probleme, parce que moi je cale ?

Merci d'avance

Angus

3 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
22 mars 2005 à 23:05
Tiens je te donne ce code brut de décoffrage, je m'en sert dans les
softs pour afficher le manuel PDF et bloquer le soft tant que le manuel
est ouvert.



en déclaration

Public Const SYNCHRONIZE = &H100000

Public Const INFINITE = &HFFFFFFFF ' Infinite timeout

Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _

ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _

ByVal dwMilliseconds As Long) As Long



sur le click

Dim pid As Long

Dim phnd As Long



pid = Shell( TaLigneDeCommande, vbMaximizedFocus)



If pid <> 0 Then

phnd = OpenProcess(SYNCHRONIZE, 0, pid)

If phnd <> 0 Then

Call WaitForSingleObject(phnd, INFINITE)

Call CloseHandle(phnd)

End If

End If



le programme reste bloquer (le thread est suspendu) sur
WaitForSingleObject tant que l'autre ne s'est pas terminer. Si tu as
des choses à faire avant (comme Text6.Text = "En cours") il faut le faire avant le shell ou au pire entre le shell et le if.




Pour ce que tu as à fiare au retour, tu le fais simplement après ce code.



Voila, en espérant que ça t'aide, sinon je serais là demain pour plus
d'explication (si le chef me laisse le temps de faire un tour par ici).











<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
3
radcur Messages postés 282 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 15 août 2012 2
23 mars 2005 à 00:57
je te suggère ShellWait que tu trouveras sur ce site.
Tant qu'un process roule, il le détecte donc tu pourras par la suite
lui faire afficher Complété dès qu'il est terminer.
3
cs_Angus59 Messages postés 12 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 8 avril 2005
23 mars 2005 à 11:08
Merci à vous 2 Casy et Radcur ,

C'est ok c'est ca que je voulais et ca fonctionne.

Je suis debutant donc je connais pas encore tout.
Sinon au fur et a mesure que je "developpe" j'ai l'impression qu'avec VB on peux tout faire, hallucinant !

Allez bonne journée ensoleillée.

A bientot pour d'autres questions.
0
Rejoignez-nous