![]() |
Focus auf eigene Anwendung nicht verlieren
Hallo :-)
ein lt. Suche schon viel diskutiertes Thema - aber leider finde ich keine Lösung :oops: 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 |
AW: Focus auf eigene Anwendung nicht verlieren
FormStyle ==> fsStayOnTop müsste klappen
|
AW: Focus auf eigene Anwendung nicht verlieren
Der ShellExecute() Funktion übergibst du wahrscheinlich den Parameter SW_SHOW.
Versuch's mal mit SW_SHOWNOACTIVATE. |
AW: Focus auf eigene Anwendung nicht verlieren
danke für die Hinweise ... der Browser nimmt aber immer noch den Fokus von meinem Programm.
|
AW: Focus auf eigene Anwendung nicht verlieren
Könnte man nicht im Prinzip nach dem
![]() ![]() Gruß Puke |
AW: Focus auf eigene Anwendung nicht verlieren
Zitat:
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. |
AW: Focus auf eigene Anwendung nicht verlieren
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) |
AW: Focus auf eigene Anwendung nicht verlieren
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,
![]() |
AW: Focus auf eigene Anwendung nicht verlieren
Ich denk ich hab jetzt alles durch ;-)
.. und nichts funktioniert :-(
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 |
AW: Focus auf eigene Anwendung nicht verlieren
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.
Delphi-Quellcode:
funktioniert also nicht, wenn der eigene Delphi-Prozess nicht mehr im Vordergrund ist.
SetForegroundWindow(self.Handle)
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); |
AW: Focus auf eigene Anwendung nicht verlieren
ok dann halt nicht.
gruss |
AW: Focus auf eigene Anwendung nicht verlieren
..der andere Prozess ist z.b.: der Chrome Browser ..
und da sind schon viele "Steps" .. der Browser .. und dann die zu ladende Seite .. ..aber auf das will ich ja während der Eingabe nicht warten ;-) - der Chrome soll einen Tab nach dem anderen rausklotzen, während der User ungebremst seine Eingaben (und die dadurch generierten Aufrufe) macht. |
AW: Focus auf eigene Anwendung nicht verlieren
Was passiert denn wenn du anstelle von Chrom zum Beispiel das Notepad oder den Calculator startest?
Hintergrund der Frage ist herauszufinden ob Chrome irgendwelche Schweinereien mit dem Focus macht die normale Anwendungen nicht machen. |
AW: Focus auf eigene Anwendung nicht verlieren
.. nun ein Browser ist ja eingetlich eine Ding, das etwas darstellen soll.
Damit der User auch was sieht, geht der Browser in den Vordergrund. Kannst Du Deine Seitenabfragen nicht mit einer nicht visuellen Komponente durchführen? Grüße Klaus |
AW: Focus auf eigene Anwendung nicht verlieren
sx2008: .. der focus geht an calc.exe :-(
Klaus01: .. der vom User eingestellte Standardbrowser ist das "Ziel" für die Darstellung |
AW: Focus auf eigene Anwendung nicht verlieren
scheint ja erledigt zu sein
gruss |
AW: Focus auf eigene Anwendung nicht verlieren
zwischenzeitlich hab ich es "ganz fürchterlich grauslig" zum laufen gebracht .. :twisted:
.. naja :pale: ... mit mehrfachen!!? Mausklicks via Timer in mein Fenster ..
Delphi-Quellcode:
private
durchlauf:Integer; procedure TForm1.Edit1Change(Sender: TObject); begin if length(edit1.Text) = 12 then begin ShellExecute(Form1.Handle, 'open', pchar('http://www.domain.suffix:81/isapi.dll?wert='+edit1.Text), nil, nil, SW_SHOWNOACTIVATE); edit1.Text:=''; timer1.Enabled:=true; end; if length(edit1.Text) > 12 then begin edit1.Text:=''; end; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', Char(VK_BACK)]) then Key := #0; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if durchlauf < 10 then begin SetCursorPos(form1.Left+100,form1.Top+100); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); durchlauf:=durchlauf+1; end else begin timer1.Enabled:=false; durchlauf:=0; end; end; procedure TForm1.FormCreate(Sender: TObject); begin durchlauf:=0; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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