|
Débuté par THIERRY, 03 fév. 2004 11:06 - 6 réponses |
| |
| | | |
|
| |
Posté le 03 février 2004 - 11:06 |
Bonjour Dans une applic, Je regarde si un programme est déjà lancé ou non via une procédure.Sous windows 95 et 98 cela fonctionne mais sous XP cela ne marche pas !! Voici le code :
DDELance("c:\otobatch.exe rlqfmm.wbt",ddeactif,vrai)
boucle SI DEJALA("otobatch.exe") ALORS multitache(300) libelle1="RECUPERATION DES RELIQUATS de l'AS400 !!!! attendre" sinon sortir fin fin
// Procédure dejala fonction DEJALA(sNomExe) hContexte est un entier long stProcess est compose de dwSize est un entier long cntUsage est un entier long th32ProcID est un entier long th32DfHpID est un entier long th32ModID est un entier long cntThreads est un entier long th32PPID est un entier long pcPClBase est un entier long dwFlags est un entier long szExeFile est un chaine asciiz sur 260 fin
si versionwindows()="32" alors hContexte=appeldll32("kernel32","CreateToolhelp32Snapshot",2,0) stProcess.dwSize=taille(""+stProcess) si appeldll32("kernel32","Process32First",hContexte,&stProcess) alors boucle si position(majuscule(stProcess.szExeFile),"\"+majuscule(sNomExe))>0 alors renvoyer vrai fin si pas appeldll32("kernel32","Process32Next",hContexte,&stProcess) alors sortir fin fin renvoyer faux sinon renvoyer AppelDLL("KERNEL","GetModuleHandle",sNomExe)>0 fin
Merci de vos réponses A+ |
| |
| |
| | | |
|
| | |
| |
Posté le 03 février 2004 - 13:17 |
Sous WD 7.5, la fonction ExeLancé fait cela directement. Non ?
"THIERRY" <tb@jojafrance.com> a écrit dans le message de news:401f7350@news.pcsoft.fr...
Bonjour Dans une applic, Je regarde si un programme est déjà lancé ou non via une procédure.Sous windows 95 et 98 cela fonctionne mais sous XP cela ne
marche
pas !! Voici le code :
DDELance("c:\otobatch.exe rlqfmm.wbt",ddeactif,vrai)
boucle
SI DEJALA("otobatch.exe") ALORS multitache(300) libelle1="RECUPERATION DES RELIQUATS de l'AS400 !!!! attendre" sinon sortir fin fin
// Procédure dejala fonction DEJALA(sNomExe) hContexte est un entier long stProcess est compose de dwSize est un entier long cntUsage est un entier long th32ProcID est un entier long th32DfHpID est un entier long th32ModID est un entier long cntThreads est un entier long th32PPID est un entier long pcPClBase est un entier long dwFlags est un entier long szExeFile est un chaine asciiz sur 260 fin
si versionwindows()="32" alors hContexte=appeldll32("kernel32","CreateToolhelp32Snapshot",2,0) stProcess.dwSize=taille(""+stProcess) si appeldll32("kernel32","Process32First",hContexte,&stProcess) alors boucle si position(majuscule(stProcess.szExeFile),"\"+majuscule(sNomExe))>0 alors renvoyer vrai fin si pas appeldll32("kernel32","Process32Next",hContexte,&stProcess) alors sortir fin fin renvoyer faux sinon renvoyer AppelDLL("KERNEL","GetModuleHandle",sNomExe)>0 fin
Merci de vos réponses A+
|
| |
| |
| | | |
|
| | |
| |
Posté le 03 février 2004 - 15:13 |
"Val" <val76@voila.fr> wrote:
Sous WD 7.5, la fonction ExeLancé fait cela directement. Non ?
Je suis en 5.5B
A+ |
| |
| |
| | | |
|
| | |
| |
Posté le 03 février 2004 - 15:39 |
l'utilisation de ExeLancé("C:\WINDOWS\WINFILE.EXE") me paraitrait plus simple ...
"THIERRY" <tb@jojafrance.com> wrote:
Bonjour Dans une applic, Je regarde si un programme est déjà lancé ou non via une procédure.Sous windows 95 et 98 cela fonctionne mais sous XP cela ne marche pas !! Voici le code :
DDELance("c:\otobatch.exe rlqfmm.wbt",ddeactif,vrai)
boucle SI DEJALA("otobatch.exe") ALORS multitache(300) libelle1="RECUPERATION DES RELIQUATS de l'AS400 !!!! attendre" sinon sortir fin fin
// Procédure dejala fonction DEJALA(sNomExe) hContexte est un entier long stProcess est compose de dwSize est un entier long cntUsage est un entier long th32ProcID est un entier long th32DfHpID est un entier long th32ModID est un entier long cntThreads est un entier long th32PPID est un entier long pcPClBase est un entier long dwFlags est un entier long szExeFile est un chaine asciiz sur 260 fin
si versionwindows()="32" alors hContexte=appeldll32("kernel32","CreateToolhelp32Snapshot",2,0) stProcess.dwSize=taille(""+stProcess) si appeldll32("kernel32","Process32First",hContexte,&stProcess) alors boucle si position(majuscule(stProcess.szExeFile),"\"+majuscule(sNomExe))>0
alors
renvoyer vrai fin si pas appeldll32("kernel32","Process32Next",hContexte,&stProcess) alors sortir fin fin renvoyer faux sinon renvoyer AppelDLL("KERNEL","GetModuleHandle",sNomExe)>0 fin
Merci de vos réponses A+
|
| |
| |
| | | |
|
| | |
| |
Posté le 03 février 2004 - 17:57 |
"Robor" <Robor@wanadoo.fr> wrote:
Merci pour vos réponses mais je suis en WINDEV 5.5B et c'est sous WINDOWS XP que j'ai des problèmes A+ |
| |
| |
| | | |
|
| | |
| |
Posté le 03 février 2004 - 18:39 |
Sous WD5.5b, j'utilisais une procédure qui marchait bien. Dans cette procédure, le système passe en revue tous les programmes chargés en mémoire et "lit" le texte affiché dans la barre de titre de ces programmes. Ainsi, pour savoir si un programme particulier est déjà chargé en mémoire, il suffit de connaitre le texte affiché dans la barre de titre de ce programme et de lancer la procédure.
Exemple: Soit mon programme "Dodo 1.00" Dans la barre de titre du programme, le texte "DODO VERSION 1" est affiché.
Pour savoir s'il est chargé en mémoire, je lance la procédure comme suit: Si VerifieAutreProg("DODO VERSION 1")=1 alors info("Le programme est chargé en mémoire") sinon info("Le programme n'est pas chargé en mémoire") fin
////////// Contenu de la procédure Procédure VerifieAutreProg(Titrebarredetitre) Lg, Ok, hWnd sont des entiers longs trouve_prog est un booleen=faux hWnd = AppelDll32("User32", "GetWindow", Handle(), 2) lpString est une chaîne fixe sur 255
TANTQUE hWnd <> Handle() et hWnd <> 0 MultiTâche() // Obligatoire pour ne pas aller trop vite ! Lg = AppelDll32("User32", "GetWindowTextLengthA", hWnd) Ok = AppelDll32("User32", "GetWindowTextA", hWnd, &lpString, lg + 1) SI Ok ALORS SI position(Majuscule(lpString),Titrebarredetitre) > 0 alors trouve_prog=vrai SORTIR FIN FIN hWnd = AppelDll32("User32", "GetWindow", hWnd, 2) FIN renvoyer trouve_prog
"THIERRY" <tb@jojafrance.com> a écrit dans le message de news:401fc6bc@news.pcsoft.fr...
"Robor" <Robor@wanadoo.fr> wrote:
Merci pour vos réponses mais je suis en WINDEV 5.5B et c'est sous WINDOWS
XP que j'ai des problèmes A+ |
| |
| |
| | | |
|
| | |
| |
Posté le 05 février 2004 - 19:48 |
"Val" <val76@voila.fr> wrote: > OK merci ça marche A+ |
| |
| |
| | | |
|
| | | | |
| | |
|