2017-08-01 12 views
0

Ich möchte die IsIconic-Funktion verwenden, um zu überprüfen, ob das angegebene Fenster minimiert ist (iconic).Das Verhalten von IsIconic() hängt von der Umgebung ab

IsIconic Funktion

https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms633527(v=vs.85).aspx

Mein Code funktioniert in bestimmten Umgebungen, aber es funktioniert nicht in anderen Umgebungen arbeiten.

Wenn ich es mit 64-Bit-Windows 7 OS laufen lasse, kann ich korrekt feststellen, ob Chrome iconifiziert ist. Wenn jedoch unter 32-Bit-Betriebssystem Windows 7 ausgeführt wird, ist "Chrome iconic". wird immer im unmittelbaren Fenster angezeigt, unabhängig davon, ob Chrome tatsächlich iconifiziert ist oder nicht.

Können Sie mir sagen, warum dieser Unterschied auftritt? Wird dieses Phänomen durch den Unterschied in der OS-Bitanzahl verursacht? Oder etwas anderes?

+0

Ich weiß nicht, ob das Ändern Ihres Problems Ihr Problem löst, aber Ihr Rückgabetyp der 'IsIconic()' Funktion ist falsch. 'As Long' sollte' As Boolean' sein. –

+0

Ich fand auch [** this **] (https://stackoverflow.com/a/29837548/3740093), dass Google Chrome eine Art unsichtbares Fenster verwendet. Ob es den gleichen Titel hat, den Sie angeben, finde ich unwahrscheinlich, aber vielleicht können Sie auch versuchen, 'IsWindowVisible()' zu überprüfen, nur um sicher zu sein? –

+0

Verwenden Sie 'Spy ++' aus dem Visual Studio-Toolset, um zu sehen, welche Fenster Chrome auf Ihrem Computer erstellt hat. Ich vermute, dass Ihr Problem darin besteht, dass Chrome etwas "Undokumentiertes" tut, das diese API auslöst. – ahmd0

Antwort

0

Ihr Rückgabetyp der IsIconic() function ist falsch.

Dieses:

Public Shared Function IsIconic(ByVal hWnd As IntPtr) As Long 

... sollte dies sein:

Public Shared Function IsIconic(ByVal hWnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean 

Das bedeutet auch, dass Sie können (und sollten) ändern:

If CBool(IsIconic(hWnd)) Then 
    Debug.WriteLine("Chrome is iconic.") 
Else 
    ... 

zu:

If IsIconic(hWnd) Then 
    Debug.WriteLine("Chrome is iconic.") 
Else 
    ... 
Verwandte Themen