Bonjour,
Je vous propose un nouvel élément à utiliser : MsgBoxPlus
Diviser le texte à afficher sur plusieurs boites de message
Qu'en pensez-vous ?
Version imprimable
Bonjour,
Je vous propose un nouvel élément à utiliser : MsgBoxPlus
Diviser le texte à afficher sur plusieurs boites de message
Qu'en pensez-vous ?
Salut
:bravo: :ccool:
34 boites de dialogue à la suite :aie: c'est un vrai roman ton fichier WUpdate.log, heureusement que tu fournis StopWScript.vbs :mouarf2:
:merci: pour le partage l_autodidacte :king: :plusser:
Voici un code pour arrêter sélectivement un vbscript qui tourne :king:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 Option Explicit Dim Titre,Copyright,fso,ws,NomFichierLog,temp,PathNomFichierLog,OutPut,Count,strComputer If AppPrevInstance() Then MsgBox "Il y a une instance déjà en cours" & VbCrLF & CommandLineLike(WScript.ScriptName),VbExclamation,"Il y a une instance déjà en cours" WScript.Quit Else Copyright = "[© Hackoo © 2015 ]" Set fso = CreateObject("Scripting.FileSystemObject") Set ws = CreateObject( "Wscript.Shell" ) NomFichierLog="Killed Process.txt" temp = ws.ExpandEnvironmentStrings("%temp%") PathNomFichierLog = temp & "\" & NomFichierLog Set OutPut = fso.CreateTextFile(temp & "\" & NomFichierLog,1) strComputer = "." Call Find("wscript.exe") Call Explorer(PathNomFichierLog) End If '*************************************************************************************************** Function Explorer(File) Dim ws Set ws = CreateObject("wscript.shell") ws.run "Explorer "& File & "\",1,True end Function '*************************************************************************************************** Sub Find(MyProcess) Dim colItems,objItem,Processus,Question Titre = " Processus "& DblQuote(MyProcess) &" en cours d'exécution " Set colItems = GetObject("winmgmts:").ExecQuery("Select * from Win32_Process " _ & "Where Name like '%"& MyProcess &"%' AND NOT commandline like " & CommandLineLike(WScript.ScriptFullName) & "",,48) Count = 0 For Each objItem in colItems Count= Count + 1 'Processus = Mid(objItem.CommandLine,InStr(objItem.CommandLine,""" """) + 2) 'Extraction du chemin du script en ligne de commande Processus = objItem.CommandLine 'Replace(Processus,chr(34),"") Question = MsgBox ("Voulez-vous arrêter ce script : " & DblQuote(Processus) & " ?" ,VBYesNO+VbQuestion,Titre+Copyright) If Question = VbYes then objItem.Terminate(0)'Tuer ce processus OutPut.WriteLine Processus else Count= Count - 1 'décrementer le compteur de -1 End if Next OutPut.WriteLine String(100,"*") OutPut.WriteLine count & Titre & "ont été arrêtés" OutPut.WriteLine String(100,"*") & VbCrLF End Sub '************************************************************************** Function DblQuote(Str) DblQuote = Chr(34) & Str & Chr(34) End Function '************************************************************************** Function AppPrevInstance() With GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") With .ExecQuery("SELECT * FROM Win32_Process WHERE CommandLine LIKE " & CommandLineLike(WScript.ScriptFullName) & _ " AND CommandLine LIKE '%WScript%' OR CommandLine LIKE '%cscript%'") AppPrevInstance = (.Count > 1) End With End With End Function '************************************************************************** Sub Pause(Minutes) Wscript.Sleep(Minutes*1000*60) End Sub '************************************************************************** Function StripProcPath(ProcessPath) Dim arrStr : arrStr = Split(ProcessPath, "\") StripProcPath = arrStr(UBound(arrStr)) End Function '************************************************************************** Function CommandLineLike(ProcessPath) ProcessPath = Replace(ProcessPath, "\", "\\") CommandLineLike = "'%" & ProcessPath & "%'" End Function '**************************************************************************
Salut
:oops: Je ne parvient pas à comprendre Set F = fso.OpenTextFile(".\WUpdate.log", 1, False), Le point pour indiquer le chemin/dossier ne fonctionne pas ni sur mon ordinateur chez moi, ni au travail.
Hier je pensais que c'était spécifique à ma configuration window, mais bien que différent au boulot, même réaction.
Donc j'ai remplacé par Set F = fso.OpenTextFile(fso.GetParentFolderName(wscript.ScriptFullName) & "\WUpdate.log", 1, False).
Si quelqu’un peut éclairer ma lanterne :pastaper:
Je pense intégrer la fonction à un programme de visualisation de commandes (jamais plus d'une dizaine), pour cela j'ai ajouté une variable Dim ReponsE ' Pour analyse de la réponse à la boite de dialogue, modifié l'appel à la boite de dialogue et enfin, en retour de boite de dialogue, une condition If .... Then qui permet de sortir de l'affichage à tout moment.
Avec cette petite modification dans la fonction, je l'appel maintenant de cette façon MsgBoxPlus text, vbOKCancel, "Test de boite de message",1300Code:
1
2
3 ReponsE = MsgBox(RetMsg(Compt),btnType , sTitle _ & " (" & CStr(Compt+1) & "/" & CStr(nbMessages-tmp+1) & " taille = " &Len(RetMsg(Compt)) & ")") If btnType = vbOKCancel And ReponsE = vbCancel Then Exit Function
bonjour,
juste pour signaler que la fonction Popup de l'objet WScript ne connait pas cette limitation de 1024 caractères
évidemment, il faut être dans un contexte wsh :aie:
@ProgElect
peut-être un problème de droits sur le répertoire cible ? :koi:Citation:
Si quelqu’un peut éclairer ma lanterne
Normalement, si les deux fichiers(script et fichier de test) sont dans le même répertoire, on n'a pas besoin du (.) indiquant le dossier courant.
Il faut donc voir du côté des droits sur le dossier comme indiqué par omen999(salut).
Quelqu'un de bénévole pourrait-il faire le test sur sa machine et donner le résultat ? avec mes remerciements.
Justement, l'intérêt du code vient du fait que Popup ou Echo affiche tout mais en sortant de l'écran(haut et bas) et on ne voit ni la barre de titres ni le bouton OK et pas mal d'autres lignes si le texte est très long.Citation:
juste pour signaler que la fonction Popup de l'objet WScript ne connait pas cette limitation de 1024 caractères
Une mise à jour du fichier source est disponible à la même adresse : MsgBoxPlus.
Les commentaires expliquent ce qui a été modifié.
Maintenant, plus besoin de cette modification avec la mise à jour que j'ai ajoutée : btnType = vbOkCancel par défaut avec la gestion de la réponse si vbCancel tout en supprimant le fichier StopWscript.vbs qui n'a plus de rôle.Citation:
ReponsE = MsgBox(RetMsg(Compt),btnType , sTitle _
& " (" & CStr(Compt+1) & "/" & CStr(nbMessages-tmp+1) & " taille = " &Len(RetMsg(Compt)) & ")")
If btnType = vbOKCancel And ReponsE = vbCancel Then Exit Function