Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Help !!! Ich schaff das mit dem Hokus Fokus nicht. (https://www.delphipraxis.net/42625-help-ich-schaff-das-mit-dem-hokus-fokus-nicht.html)

Ferber 21. Mär 2005 19:17


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

Ferber 22. Mär 2005 08:28

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.

3_of_8 22. Mär 2005 09:04

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:
procedure form1loosefocus(Sender: TObject);
begin
form1.setfocus;
end;
Aber wie gesagt, ist nicht getestet, nur so eine spontane Idee.

Ferber 22. Mär 2005 09:41

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.

toms 22. Mär 2005 09:43

Re: Help !!! Ich schaff das mit dem Hokus Fokus nicht.
 
Schon mal Bei Google suchenForceForeGroundWindow probiert?

Ferber 22. Mär 2005 10:07

Re: Help !!! Ich schaff das mit dem Hokus Fokus nicht.
 
Many thx

Werd's gleich mal ausprobieren.

Ferber 22. Mär 2005 10:36

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

Ferber 22. Mär 2005 11:30

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:
procedure TStdDlg.DoShow;
begin
  inherited;
  mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  SetForegroundWindow(Handle);
end;
Many, Many Thanks Dear Toms, bist nicht von ungefähr MasterMember.

Hoffe ich kann auch mal jemandem so helfen, war wirklich schon am verzweifeln.

3_of_8 22. Mär 2005 20:11

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