AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Focus auf eigene Anwendung nicht verlieren
Thema durchsuchen
Ansicht
Themen-Optionen

Focus auf eigene Anwendung nicht verlieren

Ein Thema von erich.wanker · begonnen am 26. Sep 2013 · letzter Beitrag vom 27. Sep 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
461 Beiträge
 
Delphi XE4 Professional
 
#1

Focus auf eigene Anwendung nicht verlieren

  Alt 26. Sep 2013, 17:51
Hallo

ein lt. Suche schon viel diskutiertes Thema - aber leider finde ich keine Lösung

Eine ganz simple Situation:

Ich hab in Form1 ein edit1. Wenn nun eine zweistellige Zahl in diesem Edit eingegeben wird soll eine Internetseite "www.test.de?wert="+edit1.text im Hintergrund mit dem User-Standardbrowser aufgerufen werden..


Alles kein Problem .. bis auf den Focus .. der wird nach dem shellexecute auf den Browser verlegt .. und egal was ich mache .. ich bekomm den focus nicht zurück ... oder anders: ich kann ihn nicht behalten


(P.S.: der user soll einfach zahlenpaare eingeben .. wenn der user schnelle eingaben macht dann öffnen sich dementsprechend viele Tabs im Browser .. aber der user soll nicht warten bis eine der Eingaben "fertig geladen" wurde)


Vielen Dank für Hinweise
Erich
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#2

AW: Focus auf eigene Anwendung nicht verlieren

  Alt 26. Sep 2013, 18:17
FormStyle ==> fsStayOnTop müsste klappen
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Focus auf eigene Anwendung nicht verlieren

  Alt 26. Sep 2013, 19:03
Der ShellExecute() Funktion übergibst du wahrscheinlich den Parameter SW_SHOW.
Versuch's mal mit SW_SHOWNOACTIVATE.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
461 Beiträge
 
Delphi XE4 Professional
 
#4

AW: Focus auf eigene Anwendung nicht verlieren

  Alt 26. Sep 2013, 21:42
danke für die Hinweise ... der Browser nimmt aber immer noch den Fokus von meinem Programm.
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Benutzerbild von Puke
Puke

Registriert seit: 7. Nov 2012
123 Beiträge
 
Delphi XE5 Architect
 
#5

AW: Focus auf eigene Anwendung nicht verlieren

  Alt 26. Sep 2013, 22:06
Könnte man nicht im Prinzip nach dem Delphi-Referenz durchsuchenShellExecute einfach den Focus mithilfe von Delphi-Referenz durchsuchenSetFocus wieder auf das Formular setzen? ( währe auch nicht die optimale Lösung )

Gruß Puke
Gruß Puke
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Focus auf eigene Anwendung nicht verlieren

  Alt 26. Sep 2013, 22:15
Könnte man nicht im Prinzip nach dem Delphi-Referenz durchsuchenShellExecute einfach den Focus mithilfe von Delphi-Referenz durchsuchenSetFocus wieder auf das Formular setzen? ( währe auch nicht die optimale Lösung )

Gruß Puke
Ich denke das wird maximal sehr unzuverlässig funktionieren weil die Anwendung wahrscheinlich nicht direkt nach dem Shellexecute den Focus verliert sondern vllt. erst ne (halbe) Sekunde später wenn das Programm bzw dessen GUI dann auch geladen ist.
Von daher wird das eigene Programm zu früh versuchen den Focus wieder zu erhalten und dann verliert es ihn ne halbe Sekunde später doch.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#7

AW: Focus auf eigene Anwendung nicht verlieren

  Alt 26. Sep 2013, 22:18
entschuldigt das ich hier mein Problem schreibe,
ich brauch eure hilfe ich will in delphie Programme ausführen (wintaste+r) wist ihr wie soetwas geht (ich bin ein Anfänger also lacht ihr jetzt bestimmt)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#8

AW: Focus auf eigene Anwendung nicht verlieren

  Alt 27. Sep 2013, 01:15
Eigentlich macht man eigene Threads für eigene Fragen auf. Hier passt es allerdings dennoch gut hin, denn die Antwort steht bereits 2 Beiträge über deiner Frage, sogar mit Such-Link ins Forum da hat Puke sich wohl verklickt, Hier im Forum suchenShellExecute dürfte passen. ShellExecute ist hier dermaßen oft vertreten, dass du alles nötige (und vermutlich einiges mehr) recht schnell finden müsstest. Bei konkreten Fragen dazu würde ich aber dann besser eigene Themen für die Fragen auf machen. (Und zwar pro Frage einen eigenen, das hilft der Übersicht im Forum ungemein.) Willkommen in der
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (27. Sep 2013 um 01:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
461 Beiträge
 
Delphi XE4 Professional
 
#9

AW: Focus auf eigene Anwendung nicht verlieren

  Alt 27. Sep 2013, 12:00
Ich denk ich hab jetzt alles durch

.. und nichts funktioniert

  • standardgeschichten: setFocus, bringToFront ..
  • shellexecute mit div. Parametern ..
  • ForceForegroundWindow ..
  • Application.Mainform Geschichten ..
  • TWatchFocus ..
  • diverse proceduren die per Timer aufgerufen werden


Ich denke, der Kern des Problems ist der Browser. Sobald ich einen Browser starte, wird der Focus IN den Browser verlegt (DOM) .. ein Druck auf die Tabulatortaste fokusiert das nächste HTML Element..


.. gibt es nicht irgendeine Möglichkeit - einen Browser zu starten und dennoch den Focus in der eigenen Anwendung zu behalten ?

Danke für Hinweise
Erich
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Focus auf eigene Anwendung nicht verlieren

  Alt 27. Sep 2013, 12:32
Hallo-

Aus Zeitmangel habe ich das Thema nur überflogen. Aber soweit ich es im Hinterkopf habe, darf eine Anwendung sich nicht in den Vordergrund zwängen wenn sie es nicht mehr ist. SetForegroundWindow(self.Handle) funktioniert also nicht, wenn der eigene Delphi-Prozess nicht mehr im Vordergrund ist.

Es sei denn, die eigene Anwendung hat zuletzt eine Benutzereingabe bekommen. Der Trick ist, sich selbst eine Eingabe zu schicken. So habe ich es auf einem VCL-Formular einmal gemacht:

Delphi-Quellcode:
uses Winapi.Windows;

var
   Input: TInput;
begin
   // Diese Anwendung in den Vordergrund zwängen
   ZeroMemory(@Input, SizeOf(Input));
   SendInput(1, Input, SizeOf(Input));
   SetForegroundWindow(Handle);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:28 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