Register for your free account! | Forgot your password?

You last visited: Today at 23:23

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



thread id

Discussion on thread id within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
yesar's Avatar
 
elite*gold: 0
Join Date: Feb 2008
Posts: 81
Received Thanks: 14
thread id

ich suche eine möglichkeit mit c/c++ an die threadid(s) eines prozesses zu kommen. es gibt zwar eine api welche über den windowhandle geht, allerdings bekomm ich ja nur einen thread zurück, bräucht aber alle.
gibts da ne "einfache" möglichkeit oder muss ich den umweg über CreateToolhelp32Snapshot gehen?
yesar is offline  
Old 08/02/2008, 20:48   #2
 
MeUndercover's Avatar
 
elite*gold: 20
Join Date: Jun 2008
Posts: 569
Received Thanks: 57
Wieso machst dus dan nicht mit ner Funktion -> Array/Vektor ?

Gruß MeUndercover
MeUndercover is offline  
Old 08/03/2008, 14:45   #3
 
yesar's Avatar
 
elite*gold: 0
Join Date: Feb 2008
Posts: 81
Received Thanks: 14
Wenn ich halt mal die MSDN gescheit gelesen hätte, da is ein Beispiel
Falls jemand noch auf der Suche nach der Lösung ist:
yesar is offline  
Old 08/03/2008, 15:42   #4
 
elite*gold: 0
Join Date: Oct 2005
Posts: 2,487
Received Thanks: 215
Wichtig ist halt, dass man als zweites Argument einen Pointer übergibt:

Code:
    DWORD pid;
    GetWindowThreadProcessId(hgw, &pid);
Term!nX is offline  
Old 08/03/2008, 18:07   #5
 
link's Avatar
 
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
In deinem Beispiel übergibst du eine simple Adresse, keinen Pointer.

Obwohl das Prinzip ja dasselbe ist, da, wenn man einen Pointer übergeben würde, man die Adresse auf einen Speicherblock hätte, was ja auf das gleiche hinausläuft, nämlich, dass sich auf dem Stack eine Adresse zu einer Variablen befindet, die binnen der Routine einen Wert erhalten soll.

Veranschaulichung [Übergabe eines Pointers, anstatt einer direkten Adresse mit Hilfe des Adressoperators]:
Quote:
DWORD pid, *p;
/*p wird als DWORD deklariert, damit der Compiler weiß, wieviele Bytes bei der Dereferenzierung benötigt werden, aber ein Pointer selber ist immer 4 Bytes groß*/
p = &pid
// *p würde den Pointer dereferenzieren und man erhält den Wert von 'pid'
// &p gibt nur die Adresse des Pointers, der auf eine andere Adresse zeigt, wieder
GetWindowThreadProcessId(hgw, p);
link is offline  
Reply




All times are GMT +1. The time now is 23:24.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.