AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi WindowFromPoint löst Exception aus bei Strg+Alt+Entf
Thema durchsuchen
Ansicht
Themen-Optionen

WindowFromPoint löst Exception aus bei Strg+Alt+Entf

Ein Thema von PeterParker · begonnen am 4. Dez 2009 · letzter Beitrag vom 7. Dez 2009
Antwort Antwort
PeterParker

Registriert seit: 6. Jan 2006
6 Beiträge
 
#1

WindowFromPoint löst Exception aus bei Strg+Alt+Entf

  Alt 4. Dez 2009, 16:23
Hallo,

ich nutze WindowFromPoint in einem Timer um zu prüfen, ob die Maus über einem bestimmten Element schwebt, da dieses kein OnExit Ereignis hat.

Das funktioniert auch sehr gut, bis Strg+Alt+Entf gedrückt wird. Dann kommt eine Exception

Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EOSError aufgetreten. Meldung: 'Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
und hinterher

Zitat:
Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen.
Leider kann man diese exception nicht mit try except abfangen.

Ganz leicht kann man das mit folgendem Codeschnipsel nachbauen

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := IntToStr(WindowFromPoint(Mouse.CursorPos));
end;
Fällt euch vielleicht ein, wie man die Exception umgehen kann?

Gruß Philip
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: WindowFromPoint löst Exception aus bei Strg+Alt+Entf

  Alt 4. Dez 2009, 16:28
Zitat von PeterParker:
Fällt euch vielleicht ein, wie man die Exception umgehen kann?
Ja, für sowas nicht Mouse.CurserPos verwenden sondern direkt die WinAPI-Funktion:

 Windows.GetCursorPos(result) Nicht nur Strg+Alt+Entf ist ein Fall das Windows.GetCursorPos False zurückliefert sondern auch der Remote Deskotp mit schließen der Fernsteuerung ohne abmelden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: WindowFromPoint löst Exception aus bei Strg+Alt+Entf

  Alt 4. Dez 2009, 16:36
Ich würde in diesem Fall einen Low Level Mousehook verwenden und somit das verwenden eines Timers
umgehen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
PeterParker

Registriert seit: 6. Jan 2006
6 Beiträge
 
#4

Re: WindowFromPoint löst Exception aus bei Strg+Alt+Entf

  Alt 7. Dez 2009, 16:42
Ja, danke!

Bin gar nicht darauf gekommen, dass das Problem bei "Mouse.CursorPos" liegt, weil der Ausdruck so harmlos aussieht.

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  Mousepos: TPoint;
begin
  Windows.GetCursorPos(Mousepos);
  Label1.Caption := IntToStr(WindowFromPoint(Mousepos));
end;
Jetzt klappts
  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 12:24 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