AGB  ·  Datenschutz  ·  Impressum  







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

Sendmessage an Dialogfenster

Ein Thema von Nimmersatt · begonnen am 14. Feb 2014 · letzter Beitrag vom 18. Feb 2014
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Sendmessage an Dialogfenster

  Alt 14. Feb 2014, 23:44
@DelphiProgrammer

Der Grund hierfür ist, dass wohl vom Benutzer eine Entscheidung getroffen werden soll.
Wenn der aber innerhalb eines Zeitraums x keine Entscheidung trifft, dann wird eben eine Standardentscheidung angenommen.

"Wollen Sie das Programm wirklich beenden? Ja/Nein" -> nach 10 Sekunden ohne Reaktion des Benutzers wird "Ja" als Entscheidung angenommen und das Programm beendet.

Für genau so einen Fall würde ich einen eigenen Dialog erstellen der analog zum MessageDlg funktioniert (gleiche Parameter + TimeOut, gleiches Aussehen) und über einen Timer den Dialog mit der Default-Antwort zurückliefert.
(evtl. sogar noch mit einer ProgressBar oder halt etwas zum Anzeigen der verstreichenden Zeitspanne)

Delphi-Quellcode:
function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultButton: TMsgDlgBtn; Timeout : Integer): Integer;
begin
  // eigentlich alles aus dem Original kopieren und einen Timer mit einbauen
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 himitsu
himitsu

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

AW: Sendmessage an Dialogfenster

  Alt 15. Feb 2014, 00:50
Bei Luckie gab es irgendwo ein, MessageDialogTimeout (oder so) auf der Webseite und einen Post dazu sollte man hier auch irgendwo finden.
[edit] siehe Bei Google suchenMessageBoxTimeout

Und nein, MessageDlg blockiert nicht komplett, denn die MessageLoop läuft brav weiter (Application.ProcessMessages), womit z.B. ein vorher gestarteter Timer dennoch auslösen würde.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Feb 2014 um 00:52 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Sendmessage an Dialogfenster

  Alt 15. Feb 2014, 02:21
Diskussion hin und her...
Sende doch einfach ne Message an den X Button und gut ist.
Sollte das gleiche sein als wenn du JA oder OK klicken würdest.

Dann musst du auch nicht nach dem Handle des Ja Button suchen.
Warum so kompliziert wenn es auch einfach geht.

PostMessage(hwnd, WM_CLOSE, 0, 0);
Sollte eigentlich reichen ist das gleiche als wenn man auf den X Button klickt.

gruss

Geändert von EWeiss (15. Feb 2014 um 02:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.223 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Sendmessage an Dialogfenster

  Alt 15. Feb 2014, 07:52
Diskussion hin und her...
Sende doch einfach ne Message an den X Button und gut ist.
Sollte das gleiche sein als wenn du JA oder OK klicken würdest.

Dann musst du auch nicht nach dem Handle des Ja Button suchen.
Warum so kompliziert wenn es auch einfach geht.

PostMessage(hwnd, WM_CLOSE, 0, 0);
Sollte eigentlich reichen ist das gleiche als wenn man auf den X Button klickt.
Eigentlich ist das nicht das gleiche. Wenn man auf OK klickt bekommt man mrOK zurück. Bei "X" eine mrCancel oder mrNone.

Ich würde Rufu's tipp beherzigen. Fertige Lösung gibts z.B. hier: http://stackoverflow.com/questions/4...fter-x-seconds
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Sendmessage an Dialogfenster

  Alt 15. Feb 2014, 15:56
Diskussion hin und her...
Sende doch einfach ne Message an den X Button und gut ist.
Sollte das gleiche sein als wenn du JA oder OK klicken würdest.

Dann musst du auch nicht nach dem Handle des Ja Button suchen.
Warum so kompliziert wenn es auch einfach geht.

PostMessage(hwnd, WM_CLOSE, 0, 0);
Sollte eigentlich reichen ist das gleiche als wenn man auf den X Button klickt.
Eigentlich ist das nicht das gleiche. Wenn man auf OK klickt bekommt man mrOK zurück. Bei "X" eine mrCancel oder mrNone.

Ich würde Rufu's tipp beherzigen. Fertige Lösung gibts z.B. hier: http://stackoverflow.com/questions/4...fter-x-seconds
Und?
Was tut das teil?
Nichts anderes als das was ich schon angemerkt habe.
PostMessage(Wnd, WM_CLOSE, 0, 0);

Und wenn ich auf X Klicke und der OK Button hat den Focus dann ist es das gleiche.
Man sollte dabei nicht vergessen das der Messageloop eines Dialogs von Windows verwaltet wird.

gruss
  Mit Zitat antworten Zitat
Nimmersatt

Registriert seit: 14. Feb 2014
86 Beiträge
 
#6

AW: Sendmessage an Dialogfenster

  Alt 15. Feb 2014, 17:01
Hallo Jungs,

Danke erst mal für die vielen Beiträge, dass es so schnell geht, hätte ich nicht gedacht.
Beim Studium eurer Beiträge musste ich feststellen, dass ich mich nicht klar genug ausgedrückt habe. Dafür bitte ich erstmal um Entschuldigung.

Zum konkreten Problem

Ich habe von meinem Prof den Auftrag, beim Versenden einer Serienmail die Sicherheitsabfrage von Outlook abzuschalten.
Er ahnt ja gar nicht, wie sehr er mich da überfordert.
Serienmails per Smtp zu schicken geht nicht, zu viele Schwierigkeiten mit dem Rechenzentrum und den Providern.

Am Dialogfenster (die Sicherheitsabfrage) kann ich nichts ändern, mein Problem besteht darin, wie ich den Zugriff auf dieses Dialogfenster realisiere. Bei euren Beiträgen habe ich hierzu keine Lösung gefunden, so weit ich das beurteilen kann. Ich hoffe das ich da falsch liege ?

Laut Google ist dieses Problem nicht lösbar, was meint ihr ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.877 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Sendmessage an Dialogfenster

  Alt 15. Feb 2014, 17:04
Tante Google lügt nicht

Es gibt u.U. eine Möglichkeit die Sicherheitswarung auszuschalten, aber mit Sendmessage und Co. wirst Du den Dialog nicht bedienen können, da er in einem anderen (Benutzer-)Kontext läuft. Das sollte Dein Prof aber wissen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.972 Beiträge
 
Delphi 12 Athens
 
#8

AW: Sendmessage an Dialogfenster

  Alt 15. Feb 2014, 19:39
Laut Google ist dieses Problem nicht lösbar, was meint ihr ?
Da hast du wohl die falschen Fragen gestellt. Ich habe eben in ein oder zwei Minuten das Addin "Advanced Security for Outlook" gefunden, das diese Fragen konfigurierbar macht:
http://www.mapilab.com/de/outlook/security/
Sebastian Jänicke
AppCentral
  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 07:21 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