AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) auf richtigen InputDesktop prüfen (für GetCursorPos)
Thema durchsuchen
Ansicht
Themen-Optionen

auf richtigen InputDesktop prüfen (für GetCursorPos)

Ein Thema von VizeTE · begonnen am 1. Nov 2010 · letzter Beitrag vom 3. Nov 2010
 
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#4

AW: auf richtigen InputDesktop prüfen (für GetCursorPos)

  Alt 2. Nov 2010, 19:37
Kennst du dich mit Zeigern aus?
Geht so

Ist fast genauso, wie mit Handles (HDESK). Du vergleichst Speicheraddressen, um zu prüfen, ob der Inhalt derselbe ist.

Delphi-Quellcode:
var P1, P2 : PINTEGER;
begin
  ..
  P1^ := 1234;
  P2^ := 1234;

  if P1 = P2 then OK;
Das Beispiel verstehe ich nicht so recht. Korrigier' mich wenn ich mich täusche aber ein Handle ist doch kein Zeiger auf irgendetwas sondern eher eine Id für Windows um ein Objekt zu identifizieren. Also einfach eine Ganzzahl. Da kann ich doch nichts dereferenzieren?!
Die Handles zu vergleichen habe ich ja schon in meinem Beispiel bei der Threaderöffnung versucht.
Result := hProcDesktop = hInputDesktop;
Ich habe da mal ein Update:

OpenInputDesktop funktioniert beim Login tatsächlich. In diesen Fall liefert mir die Methode 0 zurück.
Wenn allerdings der Bildschirmschoner (mit Kennwortabfrage beim der Reaktivierung!) gestartet wird gibt die Funktion weiterhin einen Wert <> 0 zurück. Mouse.CursorPos liefert aber trotzdem eine Exception.
Nein, tut sie nicht.
Such mal die Funktion in der MSDN, da steht:

Zitat:
If the function fails, the return value is NULL (0). To get extended error information, call GetLastError.
Ich will nicht bestreiten das das dort steht aber ich habe es ausprobiert und während der Bildschirmschoner läuft schlägt die Funktion nicht fehl und es wird ein Wert <> 0 zurückgegeben. Erst wenn ich die Mouse bewege und somit auf den Anmeldeschirm lande gibt die Funktion 0 zurück.

Ich habe das getestet indem ich in meinem Programm einfach alle 5 Sek. die Funktion und die Cursorposition abgefragt und das Ergebnis in eine Logdatei geschrieben habe. Dann habe ich gewartet bis der Bildschirmschoner startet. Während der Bildschirmschoner läuft bekomme ich - wie oben beschrieben - einen Wert <> 0 zurück. Die Abfrage der CursorPosition liefert jedoch schon eine Exception.
  Mit Zitat antworten Zitat
 


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 21:50 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