Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: BeginThread inkompatibel zu CreateMessageDialog?

  Alt 18. Mär 2014, 19:17
Keine Ahnung.

Via MSDN-Library durchsuchenSetThreadDesktop kann man jedenfalls den Desktop umschalten, aber nur, wenn vorher noch keine Komponente (CreateWindow und sowas) in diesem Thread erstellt wurde. Egal, ob die inzwischen noch existieren, oder ob sie schon wieder freigegeben wurden. (Vermutung: Beim ersten Erstellen wird die Queue eingerichtet beim Umschalten darf es noch Keine geben)

Bei Services, sind die, seit einer Weile, vom Desktop getrennt und man muß beim Service, oder beim Installieren des Service, explizit angeben, ob der Service Interaktionen mit dem Benutzer machen darf. (also z.B. Dialoge anzeigen)
Ansonsten ist das dem Service einfach verboten.

Und bei SetThreadDesktop steht auch noch "desktop apps only".


Im Prinzip kann man so einen Thread starten, darin erstellt man einen eigenen Desktop, switcht den Thread auf diesen Desktop um, erstellt ein Fenster
und kann nun den Desktop umschalten. (danach Desktop wieder zurückschalten und natürlich Dialog und Desktop löschen)
Und schon hätte man seinen eigene "geschützten" Desktop, für z.B. eigene "sichere" Benutzerrückfragen, welche nur vom Benutzer gelesen und bedient werden können und nicht von irgendwelchen "bösen" Anwendungen, wenn man anderen Anwendungen/Threads den Zugriff auf diesen Desktop verbietet.
$2B or not $2B

Geändert von himitsu (18. Mär 2014 um 19:21 Uhr)
  Mit Zitat antworten Zitat