Avatar billede mahh Nybegynder
31. maj 2000 - 10:32 Der er 3 kommentarer og
1 løsning

Thread vs. Handle

Hvordan finder man thread ID for et program? F.eks. Notepad?

Er Handle det samme som Thread?

Mvh.
Mahh
Avatar billede pellelil Nybegynder
31. maj 2000 - 12:05 #1
Man kan umiddelbart ikke svare på spørgsmålet "Er Handle det samme som Theard", og hvis man endelig vil forsøge så er svaret "NEJ". Handle er en numerisk værdi der bruges i mange sammenhænge. Eksempelvis så har hvert vindue sit eget "handle".

Måske lidt "useriøst" men alligevel. Flg. kode finde MicroSoft FlightSimulator's handle (for "hoved-vinduet")

<SNIP>
var
  FS98wnd        : HWND;
  szWindowClass  : String;
begin
  szWindowClass := 'FS98MAIN'; 
  FS98wnd := FindWindowEx( 0, 0, pChar(szWindowClass), Nil );
end;
</SNIP>

På samme måde kan du finde NotePad's window-handle (men nu kender jeg ikke lige NotePad's "WindowClass". Når du har denne window-handle, så kan du "sprøge" efter ProcessID'en ved at skrive:

<SNIP>
var
  dwThreadID : DWord;
begin
  dwThreadID := GetWindowThreadProcessID(FS98wnd, nil);
end;
</SNIP>
Avatar billede borrisholt Novice
31. maj 2000 - 13:32 #2
En tråd og et handle er ALDRIG det samme. Et handle er, som pellelil, ganske rigtigt skrivet en numerisk værdi. Denne numeriske værdi, bruges til at i dentificere en resurse ...

fx. kan du med det følgende kode afgøre om Notepad er åben eller ej :

procedure TForm1.FormCreate(Sender: TObject);
var
  H : Thandle;
begin
  H:= FindWindow('Notepad', nil);
  Caption := IntToStr(h);
end;


En tråd er der imod  er en meget længere snak her er lige lidt taget fra online hjælpen :

When an application is run, it is loaded into memory ready for execution. At this point it becomes a process containing one or more threads that contain the data, code and other system resources for the program. A thread executes one part of an application and is allocated CPU time by the operating system. All threads of a process share the same address space and can access the process’s global variables.

Use threads to improve application performance by

Managing input from several communication devices.

Distinguishing among tasks of varying priority.  For example, a high priority thread handles time critical tasks, and a low priority thread performs other tasks.

Jens B
Avatar billede pellelil Nybegynder
31. maj 2000 - 14:06 #3
>borrisholt

Du kan nu godt ha' en "handle til en tråd", hvorved det ikke er helt rigtigt at "En tråd og et handle er ALDRIG det samme" - flueknepperi, men alligevel :-)
Avatar billede borrisholt Novice
01. juni 2000 - 21:48 #4
pellelil >> Lad os da bare kneppe fluen rigtigt (forrensen der er ingen fluer her ...) Man kan også have et handle til en form, gør det da formen til et handle ?

Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester