如何获取FireMonkey MacOS窗口ID?

3

在MS Windows上,可以通过以下方式获得窗口句柄:

WindowHandleToPlatform(winhandle).wnd

如何获取MacOS窗口“id”:
例如,一个可接受窗口id的函数:
CGWindowListCreateImage(
  CGRect screenBounds, 
  CGWindowListOption listOption, 
  CGWindowID windowID,  // <------------------ here
  CGWindowImageOption imageOption);

它并不“需要”窗口ID,字面上来说。参考文献中写道:“用作确定哪些其他窗口包含在图像中时要使用的参考点的窗口ID。对于不需要参考窗口的选项,此参数可以是kCGNullWindowID。”您想从窗口列表创建一个复合图像,从该列表中的某个窗口ID开始吗? - Victoria
1
еҰӮжһңжңүдәәзҹҘйҒ“WindowHandleToPlatform(h).Wnd.windowNumberжҳҜеҗҰжӯЈзЎ®пјҢиҜ·е‘ҠиҜүжҲ‘пјҢиҝҷеҸҜд»ҘдҪңдёәдёҖдёӘзӯ”жЎҲж·»еҠ пјҢдҪҶжҲ‘дёҚзЎ®е®ҡиҝҷжҳҜеҗҰжӯЈзЎ®гҖӮ - Programmz
@Victoria,也许是这样,但如果您确实想要一个参考窗口呢?您将如何获取其窗口ID或所需的任何内容? - Programmz
这个答案表明它确实对应于 windowNumber:https://stackoverflow.com/a/20374294/3164070 - Dave Nottage
假设Objective-C的[self windowNumber]是Delphi的等价物...我会测试一下来验证,但是由于内部编译错误,我无法让Delphi与远程运行它的服务器程序配合工作。正在更新XCode SDK,看看是否能解决这个问题。 - Programmz
@Programmz:是的,WindowHandleToPlatform(h).Wnd.windowNumber 是正确的。 - Remy Lebeau
1个回答

4
在Windows系统中,WindowHandleToPlatform()函数可以为给定的TFmxHandle获取一个TWinWindowHandle。其中,TWinWindowHandle包含了窗口的HWND等信息。
在OSX系统中,WindowHandleToPlatform()函数可以为给定的TFmxHandle获取一个TMacWindowHandle,其中包含了窗口的NSWindowNSViewNSTrackingAreaNSOpenGLView对象。您可以从NSWindow.windowNumber字段获得一个CGWindowID
WindowHandleToPlatform(winhandle).Wnd.windowNumber

我会接受这个答案,但是我还无法测试它以进行验证 - 当我成功让macOS工作(希望如此)时,我会重新访问这个页面来接受答案。 - Programmz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接