![]() |
Help !!! Ich schaff das mit dem Hokus Fokus nicht.
Der Fokuswechsel zwischen Excel und meiner Anwendung bereitet mir mittlerweile extreme Kopfschmerzen.
Vielleicht kann mir hier jemand weiterhelfen. Prinzipiell funktioniert alles ganz prächtig, nur beim Wechsel zwischen den Anwendungen verlieren diese den Fokus und das ist extrem lästig. Der Wechsel von meiner Anwendung zu Excel funktioniert mit h:=FindWindow('Microsoft Excel') und SetForegroundWindow(h) recht gut. Nur meine Anwendung zu aktivieren schaff ich (obwohl ja alle handles bekannt) nicht. Meine Anwendung hat kein sichtbares MainWindow und stellt Dialoge für Excel, modal und auch nicht modal, bereit (Artikeldaten etc). Die Kommunikation wird von Excel (VBA), aus einem Klassenmodul heraus gestartet (CreateObject("Engine.Name")), die Aufrufe sind in der TypenBibliothek definiert, die wiederum von Funktionen im Klassenmoldul aufgerufen werden. Die Dialoge, sowie die ganze Anwendung, darf den Fokus wärend ein Fenster aktiv keinesfalls verlieren. Nehme mal an ich muss WndProc überschreiben und Messages abfangen - geht innerhalb der Anwendung, jedoch die ganze Anwendung .... Bitte Hilfe, kämpfe seit Tagen mit diesem ... thx Otto |
Re: Help !!! Ich schaff das mit dem Hokus Fokus nicht.
Hi,
War vielleicht zuviel Text. Prinzipiell geht's nur darum: wie verhindert man dass die Anwendung den Fokus verliert. Bitte um einen Link ode Hinweis, habe leider selber nix gefunden. |
Re: Help !!! Ich schaff das mit dem Hokus Fokus nicht.
Ich kenn mich jetzt ja nicht allzu gut mit Delphi aus, aber ich Vermute:
Delphi-Quellcode:
Aber wie gesagt, ist nicht getestet, nur so eine spontane Idee.
procedure form1loosefocus(Sender: TObject);
begin form1.setfocus; end; |
Re: Help !!! Ich schaff das mit dem Hokus Fokus nicht.
Funktioniert leider nicht.
Die besten Ergebnisse brachten noch Application.Restore und Application.Minimize. Nur Pickt dann die Anwendung in der Taskbar. Auch BringToFront hat's nicht gebracht. Auch SetWindowPos(hWnd...) bringt's nicht. Aus einem Testprogramm heraus ist es kein Problem mit FindWindow zwischen den Anwendungen umzuschalten, nur aus der eigenen Anwendung schaff ich's einfach nicht. |
Re: Help !!! Ich schaff das mit dem Hokus Fokus nicht.
Schon mal
![]() |
Re: Help !!! Ich schaff das mit dem Hokus Fokus nicht.
Many thx
Werd's gleich mal ausprobieren. |
Re: Help !!! Ich schaff das mit dem Hokus Fokus nicht.
Methode 3 funst leider nicht, Programm blinkt nur blöd in der Taskleiste.
unit MyWindows; {$ALIGN ON} {$MINENUMSIZE 4} {$WEAKPACKAGEUNIT} interface uses Windows; {$EXTERNALSYM SwitchToThisWindow} function SwitchToThisWindow(hWnd: HWND; bRestore:BOOL): BOOL; stdcall; {bRestore = false: Size unchanged, bRestore = true: normal size} implementation function SwitchToThisWindow; external user32 name 'SwitchToThisWindow'; end. Probiere jetzt Methode 2 |
Re: Help !!! Ich schaff das mit dem Hokus Fokus nicht.
Perfekt ! Methode 2 mit dem zusätzlichen Fenster ist sehr tricky, es geht aber interessanterweise auch ohne.
Hab's in die Methode DoShow eingebaut, jetzt läuft die Sache wirklich sauber.
Delphi-Quellcode:
Many, Many Thanks Dear Toms, bist nicht von ungefähr MasterMember.
procedure TStdDlg.DoShow;
begin inherited; mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); SetForegroundWindow(Handle); end; Hoffe ich kann auch mal jemandem so helfen, war wirklich schon am verzweifeln. |
Re: Help !!! Ich schaff das mit dem Hokus Fokus nicht.
Wie schon gesagt, bin ein ziemlicher Anfänger. Hab mir vor einem halben Jahr Delphi 7 Personal bei eBay gekauft und dann über die Hilfe und ein paar Delphi-Seiten alles gelernt, denn ich kenne niemanden, der von Delphi Ahnung hat.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 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