gpt4 book ai didi

带有平台 API 的 C++ 全局热键

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:34 24 4
gpt4 key购买 nike

我正在使用 C++/Qt 开发一个在 Windows、OSX 和 Linux 上截取屏幕截图的应用程序。现在我需要设置全局热键,以便用户可以在应用程序在后台运行时进行屏幕截图。我尝试使用 Qxt 和 UGlobalHotkey,它们都是 Qt 库,但它们似乎都不起作用。

我尝试用 Carbon 为 OSX 实现它 (tutorial) ,但我需要调用一个类成员函数,这是行不通的。有人可以给我举个例子吗?你可以找到我的代码 here .我需要调用的函数是 new_screenshot()。

或者还有其他方法可以达到这样的效果吗?我真的需要我的应用程序从后台截取屏幕截图,否则它就没用了(是的,我应该在一开始就实现它,看看它是否有效)。为每个平台设置一个单独的客户端(OSX 的 Cocoa Swift、Linux 的 GTK、Windows 的 C# 客户端)可能会更好吗?这几天我经常在想这个问题。

最佳答案

我是否正确理解您想从热键事件处理程序调用 new_screenshot?如果是这样,InstallApplicationEventHandler 允许您在第 4 个参数中传递指向用户数据的指针。将指针传递给您的 MainWindow 实例(基于教程中的代码):

MainWindow *mainWindow = ... // get main window somehow
InstallApplicationEventHandler(&MyHotKeyHandler,1,&eventType,mainWindow,NULL);

然后您可以在事件处理程序中使用它。

OSStatus MyHotKeyHandler(EventHandlerCallRef nextHandler,EventRef theEvent, void *userData)
{
//Do something once the key is pressed
static_cast<MainWindow*>(userData)->new_screenshot();
return noErr;
}

关于带有平台 API 的 C++ 全局热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35611493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com