Code ne fonctionnant plus hors-thread, avec seulement des variables globales

Résolu
Albanderuaz Messages postés 29 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 3 janvier 2011 - 23 mai 2009 à 18:59
Albanderuaz Messages postés 29 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 3 janvier 2011 - 23 mai 2009 à 23:42
Bonsoir,

J'ai un code qui permet d'envoyer du texte dans une zone "input" d'un DirectUIHWND. En fait je lance un thread pour réaliser la recherche de la zone, jusque là tout va bien. Si je modifie le contenu de la zone dans le thread, cela fonctionne, mais si je le lance après, tout en ayant gardé les variables déclarées en globales, ça ne fonctionne plus.

Je fais donc:

//Variables globales:

VARIANT hFoundVar;
IAccessible* hFoundIacc=NULL;

//Donc je lance depuis mon main

CreateThread(NULL, 0, FindWindow, (LPVOID)hwnd, 0, NULL);

//Ce qui m'aboutit à:
{
CoInitialize(NULL);
VariantInit(&hFoundVar);
GetCursorPos(&pt);
 if(AccessibleObjectFromPoint(pt,&hFoundIacc,&hFoundVar)==S_OK)
      {
         VARIANT vChildSelf;
        VariantInit(&vChildSelf);
        vChildSelf.vt = VT_I4;
        vChildSelf.lVal = 0;  //CHILDID_SELF
//La je peux changer la valeur:   J'appelle ma fonction Changer();
       }
}

void changer()
{
LPCSTR szText="dd";
                BSTR bstrText;
                LPWSTR wszText;
                wszText = new WCHAR[strlen(szText)+1];
                swprintf(wszText,L"%S",szText);
                bstrText = SysAllocString(wszText);
                delete[] wszText;
                hFoundIacc->put_accValue(hFoundVar,bstrText);
}

Mais si je lance la meme fonction après la fin du thread, ça ne marche plus, pourtant la fonctions se sert des memes variables globales et leurs valeurs sont les memes pendant le thread et après(j'ai vérifié avec le debugger), et rien ne change dans l'application de destination! Je suis perdu!
Merci beaucoup de m'aider!

1 réponse

Albanderuaz Messages postés 29 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 3 janvier 2011
23 mai 2009 à 23:42
C'est bon ca marche, il fallait faire un release sur l'iaccessible. On ne peut apparemment pas le trimbaler de partout
3
Rejoignez-nous