GetWindowLong(int hWnd,GWL_STYLE)在c#中返回奇怪的数字

Moo*_*oon 3 c#

我使用GetWindowLong窗口api来获取c#中窗口的当前窗口状态.

    [DllImport("user32.dll")]
    static extern int GetWindowLong(IntPtr hWnd, int nIndex);


    Process[] processList = Process.GetProcesses();
    foreach (Process theprocess in processList)
    {

        long windowState = GetWindowLong(theprocess.MainWindowHandle, GWL_STYLE);

        MessageBox.Show(windowState.ToString());

    }
Run Code Online (Sandbox Code Playgroud)

我希望在http://www.autohotkey.com/docs/misc/Styles.htm上获得数字,但我得到的数字是-482344960,-1803550644和382554704.

我需要转换windowState变量吗?如果是的话,到底是什么?

Nat*_*ate 8

这些价值观有什么奇怪之处?例如,482344960等同于0x1CC00000您可能期望看到的窗口样式.查看您链接到的样式参考,即WS_VISIBLE | WS_CAPTION | 0xC000000.

WS_VISIBLE例如,如果你想测试,你会做类似的事情:

int result = GetWindowLong(theprocess.MainWindowHandle, GWL_STYLE);
bool isVisible = ((result & WS_VISIBLE) != 0);
Run Code Online (Sandbox Code Playgroud)