Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi API-Funktion SetWindowPos (https://www.delphipraxis.net/100247-api-funktion-setwindowpos.html)

s-off 27. Sep 2007 08:08

Re: API-Funktion SetWindowPos
 
Zitat:

Zitat von juezi
Hallo,

ich habe folgende Ereignisse probiert OnKeyDown und OnKeyPress, hier habe ich breakpoints gesetzt, wenn mein Formular aktiv ist komme ich in OnKeyPress bei einer Eingabe rein, wenn mein Formular nicht aktiv ist komme ich nicht zum breakpoint, OnKeyDown reagiert überhaupt nicht, (aktiv oder nicht aktiv)

Danke

Tschuldigung, meinte auch Press, nicht Down... Also bekommt Deine Anwendung keine Infos.
Dann wirst Du wohl entweder das probieren müssen, was Rolf Warnecke beschrieben hat, oder Dich wirklich mit Tastaturhooks beschäftigen müssen.

Vielleicht ist es auch möglich, irgendwie auf die Windowsmessage (WM_KILLFOCUS) zu reagieren, sobald Dein Fenster den Fokus verlieren soll.
Kannst ja mal rumtesten.

juezi 27. Sep 2007 08:25

Re: API-Funktion SetWindowPos
 
Hallo,

wo sollte ich Deiner Meinung nach den (WM_KILLFOCUS) abfragen, durch den Timer der läuft?

Danke

s-off 27. Sep 2007 09:08

Re: API-Funktion SetWindowPos
 
Zitat:

Zitat von juezi
Hallo,

wo sollte ich Deiner Meinung nach den (WM_KILLFOCUS) abfragen, durch den Timer der läuft?

Danke

Nee,

Du deklarierst Dir eine Prozedur im Private-Abschnitt Deiner Klasse:
Delphi-Quellcode:
Type
   TForm1 = Class(TForm)
   private
      Procedure KillFocus(Var Message: TMessage); message WM_KILLFOCUS;
   End;
Mit STRG+SHIFT+C erzeugst Du dann den Methodenrumpf und schaust mal, was Du da drin anstellen kannst.

juezi 27. Sep 2007 09:29

Re: API-Funktion SetWindowPos
 
Hallo,

danke, wird diese Methode nur ausgeführt wenn der Fokus von einer anderen Anwendung gekillt wird?
Ich kann im Moment nicht so richtig folgen was Du meinst.

Danke

s-off 27. Sep 2007 09:52

Re: API-Funktion SetWindowPos
 
Dein Fenster erhält die Message 'WM_KILLFOCUS', sobald es den Fokus verlieren soll, unabhängig davon, ob das von einer anderen Anwendung ausgeht, oder nicht.

juezi 27. Sep 2007 11:10

Re: API-Funktion SetWindowPos
 
Hallo,

sorry für meine Unwissenheit, aber ich weiß nicht wo ich diese WM_KILLFOCUS bekommen soll
ich habe es wie folgt probiert

Delphi-Quellcode:
procedure TForm1.KillFocus(var Message: TMessage);
begin
  Label2.Caption := 'Fokus gekilled';
end;
wenn ich aber auf andere Anwendungen klicke läuft meine Anwendung nicht in diese procedure rein,
muss ich noch irgendwelche uses angeben oder mache ich grundsätzlich etwas falsch.

Danke

s-off 27. Sep 2007 12:23

Re: API-Funktion SetWindowPos
 
Hmm, alles sehr mysteriös.

Bei mir springt er in die Prozedur, bevor meine Form den Fokus verliert; egal auf welche Art und Weise.

juezi 27. Sep 2007 14:02

Re: API-Funktion SetWindowPos
 
Hallo,
muss ich noch irgendeine Abfrage in einem Timer machen oder reicht wirklich nur das Einfügen der procedure.

Danke

s-off 27. Sep 2007 14:06

Re: API-Funktion SetWindowPos
 
Nein, keine Abfrage im Timer.

Prozedur wie gezeigt deklarieren und implementieren.
Dann den Rumpf mit Daten füllen. Was da rein kann, um Dein Problem musst Du selber testen.
Evtl. kannst Du Durch Antwort auf die Nachricht verhindern. Probier's halt aus.

Sobald Deinem Formular dann der Verlust des Fokus droht (WM_KILLFOCUS), wird die Prozedur angesprungen.

Vielleicht gibt es noch eine Message, die das Formular erhält nachdem es den Fokus verloren hat. Da könntest Du dann wieder mit SetWindowPos agieren...

juezi 22. Okt 2007 13:40

Re: API-Funktion SetWindowPos
 
Hallo,

ich habe jetzt eine Lösung gefunden die vielleicht nicht die beste ist aber in meinem Fall kann ich meine Barcodeanwendung aktivieren, ich habe folgendes gemacht
Ich setze meinen Cursor mit SetCursorPos(x,y) auf mein Formular und löse mit
mouse_event einen Click aus, wie gesagt nicht die feine Art aber wirkungsvoll.

Vielen Dank für Eure Hilfe


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr.
Seite 3 von 3     123   

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