Information supplémentaire au sujet d'un ThreadID lié à un process.
marcer17
Messages postés2Date d'inscriptionmercredi 26 janvier 2011StatutMembreDernière intervention26 février 2011
-
24 févr. 2011 à 20:39
marcer17
Messages postés2Date d'inscriptionmercredi 26 janvier 2011StatutMembreDernière intervention26 février 2011
-
26 févr. 2011 à 02:04
Voici ma situation, lorsque j'exécute un installation de mon produit, via inno setup, j'utilise un DLL pour configurer ma base de donnée. Ce DLL utilise un DLL de liaison pour mon SGBD, mais celui-ci s'attache, via un thread, au process de l'exécutable de l'installation et non du DLL qui l'a appelé.
Le problème est que selon le numéro de série entré lors de l'installation, les DLL de liaison au SGBD peuvent différencier de version, donc je dois trouver une façon pour fermer le thread pour ainsi détruire le DLL de liaison et le remplacer par un autre.
En utilisant un logiciel externe "Process explorer" je me suis aperçu que l'on pouvait voir des informations supplémentaire relié à un thread qui est lié à un process (nom de DLL pas exemple).
J'ai trouvé ceci pour me donner la liste des ThreadID lié à un process :
function TForm1.GetTthreadsList(PID: Cardinal): Boolean;
var
SnapProcHandle: THandle;
NextProc : Boolean;
TThreadEntry : TThreadEntry32;
mThread: String;
begin
SnapProcHandle := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
Result := (SnapProcHandle <> INVALID_HANDLE_VALUE);
if ( Result ) then
try
TThreadEntry.dwSize := SizeOf(TThreadEntry);
NextProc := Thread32First(SnapProcHandle, TThreadEntry);