Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Handle als Pointer übergeben.

  Alt 7. Sep 2003, 18:30
Also ich habe eine Thread-Funktion:
Delphi-Quellcode:
function SecondaryThread(p: Pointer): Integer;
var
  Thread: THandle;
  s: string;
begin
  result := 0;
  Thread := THandle(p);
  SuspendThread(Thread);
  s := 'Der primäre Thread [' + IntToStr(Thread) + '] wurde unterbrochen.'
    +
    #13#10;
  s := s + 'Er reagier weder auf Eingaben noch hat er eine Ausgabe.' + #13#10;
  s := s + 'Klicken sie OK, um zum primären Thread zurück zukehren ';
  s := s + 'und den sekundären Thread zu beenden.';
  Messagebox(hApp, pointer(s), 'Sekundärer Thread', MB_ICONWARNING);
  ResumeThread(Thread);
  CloseHandle(Thread);
  EnableWindow(hApp, True);
end;
Diese soll den primären Thread des Prozesses anhalten. Als Parameter kann ich nur einen Pointer übergeben. Und es muß der Hnadle des primären Threads sein.
Ich habe das bis jetzt so probiert:
Delphi-Quellcode:
              New(PrimaryThreadhandle);
              DuplicateHandle(GetCurrentProcess(), GetCurrentThread(),
                GetCurrentProcess(), PrimaryThreadHandle, THREAD_SUSPEND_RESUME,
                False, DUPLICATE_SAME_ACCESS);
              ThreadHandle := BeginThread(nil, 0, @SecondaryThread,
                PrimaryThreadHandle, 0, ThreadID);
              if ThreadHandle <> 0 then
              begin
                EnableWindow(hDlg, False);
                Dispose(PrimaryThreadHandle);
                CloseHandle(ThreadHandle);
              end;
In der Messagebox sehe ich auch einen Handle bzw. eine Zahl, nur scheint das nicht das Handle des primären Threads des Prozesses zu sein, da der Thread nicht angehlaten wird.
PrimaryThreadHandle habe ich wie folgt deklariert:
PrimaryThreadHandle: PHandle; Wie übergebe ich jetzt also den Handle als Pointer?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat