Warum ist FindWindow () nicht 100% zuverlässig?

9

Ich verwende diesen Delphi 7-Code, um festzustellen, ob Internet Explorer läuft:

%Vor%

Dies funktioniert bei 99% der Systeme mit IE 8, 9 und 10.

Aber es gibt einige Systeme (leider keine von mir, aber ich habe zwei Beta-Tester, die solche Systeme haben, beide Win7 x64 SP1), wobei FindWindow () 0 für IEFrame zurückgibt, selbst wenn IE im Speicher ist.

Also habe ich eine alternative Methode zum Finden des Fensters programmiert:

%Vor%

Die alternative Methode funktioniert auf 100% aller Systeme.

Meine Frage - warum ist FindWindow () auf einigen Systemen nicht zuverlässig?

    
Casady 18.03.2013, 04:16
quelle

1 Antwort

1

Ich nehme an, dass FindWindow deklariert wird, um ein WinHandle zurückzugeben, welches ein THandle ist, welches eine Ganzzahl ist, die signiert ist. (Zumindest glaube ich, dass dies vor vielen Jahren der Fall war, als ich in Delphi programmiert habe.)

Wenn IE ein Fenster-Handle mit dem gesetzten oberen Bit hat, wird es negativ sein, so dass Ihr Test False zurückgibt:

%Vor%

Fenstergriffe haben normalerweise nicht das obere Bit gesetzt, aber ich weiß nicht, dass es unmöglich ist.

    
arx 19.03.2013 00:21
quelle

Tags und Links