簡體   English   中英

macOS嘗試以編程方式最小化Windows之類的操作時需要窗口句柄嗎?

[英]macOS Do you need a window handle when you attempt to do things like minimize windows programmatically?

C ++ /目標C和C#。 運行AppKit。 我正在為統一游戲構建本機插件。

因此AppKit上有以下功能: https : //developer.apple.com/documentation/appkit/nswindow/1419426-miniaturize

func miniaturize(_ sender: Any?)

我對發件人部分是什么完全感到困惑...這就像某種窗口句柄告訴它要縮小哪個窗口嗎?

當我嘗試執行此類AppKit任務時,是否需要以某種方式獲取要實現的窗口的進程ID(例如Windows中的進程ID)? 還是macOS只知道該怎么辦?

如果我需要一個進程(HWND / IntPtr / etc),如何在Mac OS上獲取它?

我的總體目標是在收到通知時以編程方式打開游戲窗口。因此,我希望能夠最小化窗口。 我是在Windows上執行此操作的,但我需要Mac部分的幫助。

目前,我只是將隨機的東西傳遞給miniizeize函數,當然什么也沒發生,所以我需要以某種方式獲取窗口的進程ID! 謝謝。

+(void)minimize:(bool)state andB:(int)handle{
    NSNumber *someNumber = @(handle);
   [NSApplication.sharedApplication.mainWindow deminiaturize:someNumber];
}

好的,這對於縮小我使用的窗口並不是太困難:

+(void)deminimize{
for(NSWindow* win in [NSApp windows])
    {
        if([win isMiniaturized])
        {
            [win deminiaturize:self];
        }
    }
}

我只有一個窗口,因此它只查找所有指針/對我來說都是如此,並且以這種方式進行操作,如果您有多個窗口,則可能不想這樣做。

為了使窗口最小化,我最終不需要此功能,但功能是:

+(void)minimize{
   [NSApplication.sharedApplication.mainWindow miniaturize:nil];
}

對於隱藏和取消隱藏,我也不需要指針。 我只是這樣做:

+(void)hide{
    [NSApp hide:nil];
}

+(void)unhide{
    [NSApp unhideAllApplications:nil]; //Just unhid all... Hopefully this doesn't cause problems! Might be able to loop through the windows like in my previous method and check if they are hidden instead of just unhiding all... Not sure if this will cause problems or not.
}

為了將屏幕顯示在最前面(發生事件/通知或其他事件),我在取消隱藏或最小化后使用了以下內容:

+(void)bringFront{
    [NSApp activateIgnoringOtherApps:YES];
}
+(void)putBack{
    [NSApp activateIgnoringOtherApps:NO];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM