[WD8] Exécution de WDOptimiseur en ligne de commande

Posté par rbpower le 24/1/2005 16:08:37
Bonjour,

Dans notre application, on utilise le WDOptimiseur en ligne de commande comme ceci :
ExeRun(CompleteDir(fCurrentDir()) + "WDOptimiseur.EXE /Fic=" + psDataDir + " /option=4 /Sauve=Non", exeActive, exeWait)

et ca fonctionne très bien.

C'est juste qu'a la fin de l'optimisation, il y a une boîte d'info qui dit :
Citation :

L'optimisation des fichiers contenus dans le répertoire
'N:\Net3F\SMS_CL\Data' s'est terminée correctement.


Vue qu'il faut que j'attendre la fin de l'exécution de
WDOptimiseur.exe avant de continuer mon code, il faut que quelqu'un reste devant l'écran et appuit sur le bouton [OK].

En WinDev 7.5, j'utilisais la procédure suivante qui était lancer dans un thread apart pour simuler le clique sur le bouton [OK]
//Procédure pour traper les message envoyer par WDOptimiseur
PROCEDURE WaitForMsgWDO()
nHandle is int
nHandleBtn is int

LOOP
	IF fbEndThread THEN BREAK
	
	//Voir s'il ya une fenètre qui a WDOptimiseur comme titre
	nHandle = SysFenHandle("WDOptimiseur")
	IF nHandle <> Null THEN
		IF SysValidHandle(nHandle) THEN
			SysWinActive(nHandle)
			//Voir si dans la fenêtre il y a une bouton OK
			nHandleBtn = API("USER32", "FindWindowExA", nHandle, 0, "", "OK")
			IF nHandleBtn <> Null THEN
				//Si oui on simule le clic gauche
				SendMessage(nHandleBtn, 513, 0, 0) //LEFt MOUSE DOWN
				SendMessage(nHandleBtn, 514, 0, 0) //LEFT MOUSE UP
			END
		END
	ELSE
		//VOIR POUR LES ANGLOPHONES
		nHandle = SysWinHandle("WDOptimizer")
		IF nHandle <> Null THEN
			IF SysValidHandle(nHandle) THEN
				SysWinActive(nHandle)
				//Voir si dans la fenêtre il y a une bouton OK
				nHandleBtn = API("USER32", "FindWindowExA", nHandle, 0, 0, "OK")
				IF nHandleBtn <> Null THEN
					//Si oui on simule le clic gauche
					SendMessage(nHandleBtn, 513, 0, 0) //LEFt MOUSE DOWN
					SendMessage(nHandleBtn, 514, 0, 0) //LEFT MOUSE UP
				END
			END
		END
	END
	Multitask(-100)	
END


Le problème que j'ai, c'est qu'en Windev8, la boîte d'info qui
apparaît, n'a plus de Titre (WDOptimiseur) comme en WD75.
j'ai donc essayé avec cette commande:
nHandle = SysFenHandle("")

au lieu de
nHandle = SysFenHandle("WDOptimiseur")

mais ca ne fonctionne pas non plus.

Est-ce qu'il ya quelqu'on qui aurait une idée pour faire fermer cette
fenêtre.

Merci de vos réponse

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=12&topic_id=1712&post_id=7128