AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Mit Service auf Desktop zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Service auf Desktop zeichnen

Ein Thema von gsh · begonnen am 5. Sep 2006 · letzter Beitrag vom 13. Sep 2006
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#21

Re: Mit Service auf Desktop zeichnen

  Alt 11. Sep 2006, 12:39
Es ist entscheident an welcher Stelle du den Source plazierst. SetThreadDesktop funktioniert nur wenn der Thread noch keine Handles zum aktuellen Desktop offen hat. Am besten du baust in den Source einige Debugausgaben ein (zum Beispiel schreiben in Datei etc.) um zu sehen an welcher Anweisung es hakt.
Wenn du den aufruf von unten in einen Frischen Thread packst sollte es zum Beispiel klappen weil der Thread noch keine Handles auf einen Desktop offen hat.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#22

Re: Mit Service auf Desktop zeichnen

  Alt 11. Sep 2006, 12:53
Keinen Bock es zu schicken oder ist es was von deiner Firma?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#23

Re: Mit Service auf Desktop zeichnen

  Alt 11. Sep 2006, 13:01
Doch, ich werds noch schicken. Das Problem ist das ich das Projekt jetzt in eine andere Richtug weiter gebaut hab. Ich hab also den Button zum starten von Prozessen raus genommen weil es nicht funktioniert hat und bin dann zu diesem Ergebnis gekommen:
http://www.delphipraxis.net/internal...=608398#608398

Ich könnte im Moment nur dieses Projekt schicken ohne den Button. Aber ich wollt bis heute Abend warten wenn ich bischen mehr zeit hab und das Projekt kopieren und einen Button einbauen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#24

Re: Mit Service auf Desktop zeichnen

  Alt 12. Sep 2006, 12:24
ok ich glaub ich weiss jetzt mein Problem
Delphi-Quellcode:
var
  lDesktop, lStationNew : Cardinal;
begin
  lStationNew := OpenWindowStation('WinSta0', True, GENERIC_ALL);
  if (lStationNew <> 0) then
  begin
    SetProcessWindowStation(lStationNew);
    lDesktop := OpenDesktop('Default', DF_ALLOWOTHERACCOUNTHOOK, True, GENERIC_ALL);
    if (lDesktop <> 0) then
    begin
      if SetThreadDesktop(lDesktop) then //Hier wird immer false zurück gegeben und somit des Form1 nicht erzeugt
      begin
        Form1 := TForm1.Create(Service1);
        Form1.Show;
      end;
      CloseDesktop(lDesktop);
    end;
    CloseWindowStation(lStationNew);
  end;
end;
aber warum? Ich hab des jetzt testweiße im ServiceCreate aufgerufen, also als allererstes.
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#25

Re: Mit Service auf Desktop zeichnen

  Alt 13. Sep 2006, 08:37
*push*
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#26

Re: Mit Service auf Desktop zeichnen

  Alt 13. Sep 2006, 09:26
Hast du denn, wie ich es geschrieben hab, das ganze in einen Thread ausgelagert? Das Create dürfte der falsche ort sein denn du kannst die Exe auch mit doppelklick öffnen um Dinge anzuzeigen etc. Zu dem Zeitpunkt sind also mit hoher Wahrscheinlichkeit Handles offen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#27

Re: Mit Service auf Desktop zeichnen

  Alt 13. Sep 2006, 11:50
Zitat von SirThornberry:
Hast du denn, wie ich es geschrieben hab, das ganze in einen Thread ausgelagert? Das Create dürfte der falsche ort sein denn du kannst die Exe auch mit doppelklick öffnen um Dinge anzuzeigen etc. Zu dem Zeitpunkt sind also mit hoher Wahrscheinlichkeit Handles offen.
Des mit dem in einem Thread auslageren muss ich überlesen haben. Naja k ich habs jetzt jedenfalls in einem thread ausgelagert und nun funktioniert SetThreadDesktop schon mal.

Nur die Form wird immer noch nicht angezeigt.
Das Problem ist glaub ich des er irgendwie nach dem show abstirbt:
Delphi-Quellcode:
if SetThreadDesktop(lDesktop) then
begin
  Log('Erzeuge Form');//Wird ausgeführt
  Form1 := TForm1.Create(nil);//Wird ausgeführt
  Form1.Show;//Wird ausgeführt
  Log('Form wurde erzeugt');//Wird NICHT ausgeführt
end;
Aber warum solltet beim create schon handels offen sein?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#28

Re: Mit Service auf Desktop zeichnen

  Alt 13. Sep 2006, 11:56
weil das bei dem serviceobject wohl so ist. Das dein Form nicht angezeigt wird liegt dann daran das du in dem Thread keine Nachrichtenschleife hast. Im Haupttrhead wird diese durch Application.Run angeschuppst. Aber das ist ein anderes Thema und hat nichts mit dem Zeischnen auf den Desktop von einem Service aus zu tun (denn anstelle das Form anzuzeigen kannst du ja auf dem Desktop zeischnen).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#29

Re: Mit Service auf Desktop zeichnen

  Alt 13. Sep 2006, 12:02
ne eine Nachrichten scheife hab ich nicht ... und wie mach ich die?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#30

Re: Mit Service auf Desktop zeichnen

  Alt 13. Sep 2006, 12:13
Wie du die machst findest du über die Suche (NonVCL). Allerdings ist die VCL nicht Threadsicher und arbeitet auch in Threads nicht ordentlich/Fehlerfrei.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz