AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur weiterleiten

Ein Thema von TheMiller · begonnen am 22. Dez 2010 · letzter Beitrag vom 23. Dez 2010
Antwort Antwort
Benutzerbild von Luckie
Luckie

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

AW: Prozedur weiterleiten

  Alt 22. Dez 2010, 22:44
@Uwe: Also du schickst von dem Updater ein WM_ENDSESSION. da man diese Nachricht nicht gezielt an ein Fenster verschicken kann, bekommen alle Fenster diese Nachricht. Also auch mein Wordfenster in, dem ich gerade einen Brief schreibe. Dieses reagiert auch auf die Nachricht und beendet sich. Prima. Und was ist jetzt mit meinem Brief an dem ich gerade arbeite? Bestenfalls kommt noch ein Dialog, der mich zum Speichern auffordert. Aber nichts desto trotz, darf ich Woprd neu startet und alle andern Anwendungen, die ich auf hatte eventuell auch. Und das findest du in Ordnung? Kann ich mir nicht vorstellen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Prozedur weiterleiten

  Alt 22. Dez 2010, 23:13
@Luckie

Wenn Uwe das Handle der jeweiligen Application hat funktioniert es genau so wie es gewünscht ist. Ich weiß nur noch nicht wie er an das Handle kommt.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Prozedur weiterleiten

  Alt 22. Dez 2010, 23:24
Mit FindWindow?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Prozedur weiterleiten

  Alt 22. Dez 2010, 23:48
Ich habe versucht mich durchzuhangeln...
Findwindow findet mein Mainform, wenn ich
Sendmessage(fHandle,WM_Endsession,0,0) mit den Handle des Mainforms abschicke passiert nichts, ich müsste bei Delphi zumindest an das Application.handle kommen, dort wird die Message richtig verarbeitet.
Ein Aufruf an das Fensterhandle von Notepad funktioniert ebenfalls nicht, ich habe versucht über die ProcessId ein gültiges Handle zu ergattern, bis jetzt Fehlanzeige.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Prozedur weiterleiten

  Alt 22. Dez 2010, 23:56
Um mal wieder auf die Ausgangsfrage zurückzukommen

Wozu überhaupt mit WM_QUIT oder sonstigen Nachrichten arbeiten?
Die Klasse ist doch direkt im Programm eingebunden ...

Baue in jedes deiner Programme eine Funktion ein, mit der die Anwendung beendet werden kann.

Diese Funktion übergibst du dann der Klasse und die Klasse ruft einfach diese Funktion auf, fertig.

Delphi-Quellcode:
Unit UpdateKlasse;

interface

type
  TQuitFunc = function : boolean;

  TUpdateKlasse = class
  ...
    Property QuitFunc : TQuitFunc Read FQuitFunc Write FQuitFunc;
 ...
  end;

...

procedure TUpdateClass.UpdateExecute;
begin
  if Assigned( FQuitFunc ) then
    if FQuitFunc then
      RunUpdateProg;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Prozedur weiterleiten

  Alt 22. Dez 2010, 23:59
Zitat:
Die Klasse ist doch direkt im Programm eingebunden ...

bitte alles vergessen was ich geschrieben habe...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Prozedur weiterleiten

  Alt 23. Dez 2010, 00:13
Noch geschickter wäre es ja auch, das Beenden der Anwendung immer noch in die Hände des Users zu legen.

Das Update-Programm wird dann gestartet, wenn die Anwendung wirklich beendet wird:
Delphi-Quellcode:
program MeinProg;

uses
 ...
  UpdateKlasse;

begin
  ...
  if UpdateKlasse.UpdatesPending then
    UpdateKlasse.RunUpdateProg;
end.
Ob das Programm nun über die CallBack-Funktion wirklich beendet wird, oder der User zunächst noch etwas arbeiten möchte ist dabei dann egal. Beim Beenden (und vorhandenem Update) wird das UpdateProgramm gestartet.

Wichtig wäre es natürlich noch zu prüfen, ob die Anwendung mehrfach gestartet wurde.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#8

AW: Prozedur weiterleiten

  Alt 23. Dez 2010, 00:40
Noch geschickter wäre es ja auch, das Beenden der Anwendung immer noch in die Hände des Users zu legen.

Könnte man ja auch so wie Windows selbst bei Updates machen. User wird aufgefordert Windows neu gestartet - User entscheidet wann er dies tut und wird nur gelegentlich an das Vorhaben des Updates erinnert. Finde ich pers. als den besten Weg.
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'

Geändert von Hobby-Programmierer (23. Dez 2010 um 00:43 Uhr)
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Prozedur weiterleiten

  Alt 23. Dez 2010, 00:42
Warum lässt du nicht den Benutzer die Programme beenden?

Wenn der Updater das Update durchführen will, dann zeigst du den User einen Dialog mit den noch geöffneten Programmen, welche geschlossen werden müssen.
Wenn er die nicht schließen will, startest du einfach das Update nach einen Reboot.

Mal abgesehen davon, wann und wie holst du die Adminrechte für die Installation der Updates?
Kann überhaupt jeder User updaten (hat jeder Adminrechte)?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz