OVH Cloud OVH Cloud

[WD 7.5 206G] Thread & Automation

1 réponse
Avatar
eandrieux
Bonjour,

J'ai réalisé une procédure contenant diverses fonctions "automation" vers
Outlook.

Lorsque celle-ci est lancée par un TimerSys, tout fonctionne correctement
mais l'utilisateur perd la main toute les x secondes, le temps que la
procédure se déroule...

J'ai voulu faire la même procédure par un Thread mais les objets automations
(déclarés en global ou dans la procédure) ne semblent pas utilisables.

Quelqu'un a t'il déjà eu ce type d'anomalie ?
Y a t'il un moyen d'avoir une procédure contenant des fonctions (notamment
automations) lancées toutes les x secondes (pour rafraîchir une table) mais
qui n'affecte pas l'utilisateur (entièrement transparente) ?

Merci par avance pour votre aide,
Joyeuses fêtes de fin d'année,

Cordialement
Etienne Andrieux

NB : J'utilise Windev 7.5 75206g sous XP

1 réponse

Avatar
pyt
Bonjour,

Je n'ai jamis fait de thread avec WD mais en C++Builder pour mettre en thread de
l'automation (word par exemple)il faut encapsuler les code de l'automation entre
un CoInitialize et un CoUninitialize.


Exemple :
code d'xecution du thread en C++Builder (facilement transposable en WD)
//------
void __fastcall cPileNotify::Execute()
{
DWORD hWFSO;
AnsiString Fichier;
Variant V;
HRESULT hRes;

while(!Terminated)
{
if(frmFileNotify->hdlEvent->WaitFor(10000) == wrSignaled )
{

frmFileNotify->hdlEvent->ResetEvent(); //frmFileNotify->hdlEvent);
while(frmFileNotify->Pile.size()>0)
{
Fichier = frmFileNotify->Pile[0];
frmFileNotify->Pile.pop_front();
frmFileNotify->mmoPile->Lines->Add("Traitement de "+Fichier);

//---- debut automation
hRes = CoInitialize(NULL);
if(hRes == S_OK)
{
V = CreateOleObject("Excel.Application");

V.OlePropertySet("Visible",true);
V.OleFunction("Quit");
V = Unassigned;

CoUninitialize();
}
//---- fin automation
}
}
}
}

Cordialement

PYT
--
Ce message a été posté via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr

http://forums.club-internet.fr/