0
IsIconic関数を使用して、指定されたウィンドウが最小化されているかどうかをチェックします(アイコン)。IsIconic()の動作環境によって異なります
IsIconic機能
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms633527(v=vs.85).aspx
私のコードは、特定の環境で正常に動作しますが、それは他の環境では動作しません。
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
Public Shared Function IsIconic(ByVal hWnd As IntPtr) As Long
End Function
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
Private Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hWnd As IntPtr = FindWindow(Nothing, "Google - Google Chrome")
If CBool(IsIconic(hWnd)) Then
Debug.WriteLine("Chrome is iconic.")
Else
Debug.WriteLine("Chrome is not iconic.")
End If
End Sub
End Class
64ビットWindows 7 OSで実行すると、Chromeがアイコン化されているかどうかを正しく判断できます。 しかし、32ビットWindows 7 OSで実行している場合、「Chromeは象徴的です。」 Chromeが実際にアイコン化されているかどうかに関係なく、常にイミディエイトウィンドウに表示されます。
この違いがなぜ発生するのか教えてください。 この現象はOSのビット数の違いによるものですか?または、他の何か?
私はあなたの問題を解決するかどうか分かりませんが、 'IsIconic()'関数の戻り値の型が間違っています。 'As Long 'は' As Boolean'でなければなりません。 –
私は[** this **](https://stackoverflow.com/a/29837548/3740093)に、Google Chromeが何らかの非表示のウィンドウを使用していることを発見しました。指定したタイトルと同じタイトルかどうかはわかりませんが、確かにIsWindowVisible()をチェックしてみてください。 –
Visual Studioツールセットの「Spy ++」を使用して、あなたのマシンでChromeが作成したウィンドウを確認します。私の推測では、あなたの問題は、ChromeがそのAPIをスローする「文書化されていない」何かをしているということです。 – ahmd0