Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Thread herausfinden über ThreadID

  Alt 16. Dez 2013, 17:08
Im Prinzip macht das Ding nicht viel, außer eine "stille" Exception loszuwerden, welche vom Debugger ausgewertet wird. (wenn der Debugger sie kennt und drauf reagiert)
Delphi-Quellcode:
{class} procedure {TThread.}NameThreadForDebugging(AThreadName: AnsiString; AThreadID: TThreadID = TThreadID(-1));
type
  TThreadNameInfo = record
    FType: LongWord; // must be 0x1000
    FName: PAnsiChar; // pointer to name (in user address space)
    FThreadID: LongWord; // thread ID (-1 indicates caller thread)
    FFlags: LongWord; // reserved for future use, must be zero
  end;
var
  ThreadNameInfo: TThreadNameInfo;
begin
  if IsDebuggerPresent then
  begin
    ThreadNameInfo.FType := $1000;
    ThreadNameInfo.FName := PAnsiChar(AThreadName);
    ThreadNameInfo.FThreadID := AThreadID;
    ThreadNameInfo.FFlags := 0;
    try
      RaiseException($406D1388, 0, SizeOf(ThreadNameInfo) div SizeOf(LongWord), @ThreadNameInfo);
    except
    end;
  end;
end;
[edit]
Seh grade, daß wurde auch schon in dem Artikel erwähnt.
Also hatte Emba sich das von der OmniThreadLibrary raubkopiert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (16. Dez 2013 um 17:13 Uhr)
  Mit Zitat antworten Zitat