AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Help !!! Ich schaff das mit dem Hokus Fokus nicht.
Thema durchsuchen
Ansicht
Themen-Optionen

Help !!! Ich schaff das mit dem Hokus Fokus nicht.

Ein Thema von Ferber · begonnen am 21. Mär 2005 · letzter Beitrag vom 22. Mär 2005
Antwort Antwort
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#1

Help !!! Ich schaff das mit dem Hokus Fokus nicht.

  Alt 21. Mär 2005, 20:17
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
Otto
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#2

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

  Alt 22. Mär 2005, 09:28
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.
Otto
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

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

  Alt 22. Mär 2005, 10:04
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.
Manuel Eberl
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#4

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

  Alt 22. Mär 2005, 10:41
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.
Otto
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

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

  Alt 22. Mär 2005, 10:43
Schon mal Bei Google suchenForceForeGroundWindow probiert?
Thomas
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#6

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

  Alt 22. Mär 2005, 11:07
Many thx

Werd's gleich mal ausprobieren.
Otto
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#7

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

  Alt 22. Mär 2005, 11:36
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
Otto
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#8

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

  Alt 22. Mär 2005, 12:30
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.
Otto
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

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

  Alt 22. Mär 2005, 21:11
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.
Manuel Eberl
  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 06:45 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