- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
对于那些不知道我在说什么的人: http://www.teamviewer.com/images/presse/quickconnect_en.jpg
Teamviewer 将该按钮覆盖在所有窗口上,让您可以快速与其他人共享一个窗口。我想要关于实现类似内容的任何想法——如果你有示例代码,那就更好了(具体来说,按钮——而不是共享)。我对 C++ 和 QT 很感兴趣……但如果有的话,我会对其他语言/库的好的解决方案感兴趣。
谢谢。
最佳答案
要在外部窗口中绘制按钮或其他内容,您需要将代码注入(inject)外部进程。检查SetWindowsHookEx方法:
您很可能想为 WH_CALLWNDPROCRET 安装一个钩子(Hook)并注意 WM_NCPAINT信息。这是绘制按钮的正确位置。但是,我不太确定,如果你可以在非客户区内放置一个窗口,那么在最坏的情况下,你必须“手动”绘制按钮。
只需从您的主应用程序(或从 DLL 中)调用它
SetWindowsHookEx(WH_CALLWNDPROCRET, myCallWndRetProc, hModule, 0);
请注意,myCallWndRetProc 必须驻留在 DLL 中,而 hModule 是此 DLL 的模块句柄。
您的 myCallWndRetProc 可能如下所示:
LRESULT CALLBACK myCallWndRetProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HT_ACTION) {
CWPRETSTRUCT* cwpret = (CWPRETSTRUCT*)lParam;
if (cwpret->message == WM_NCPAINT) {
// The non-client area has just been painted.
// Now it's your turn to draw your buttons or whatever you like
}
}
return CallNextHookEx(0, nCode, wParam, lParam);
}
在开始实现时,我建议您只创建一个简单的对话框应用程序并仅 Hook 您自己的进程:
SetWindowsHookEx(WH_CALLWNDPROCRET, myCallWndRetProc, NULL, GetCurrentThreadId());
安装全局 Hook 会将 DLL 注入(inject)所有进程,这使得调试非常困难,并且您的 DLL 在使用时可能会被写保护。
关于c++ - Teamviewers Quickconnect 按钮是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11996801/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 7 年前。 Improve
对于那些不知道我在说什么的人: http://www.teamviewer.com/images/presse/quickconnect_en.jpg Teamviewer 将该按钮覆盖在所有窗口上,
我正在评估不同的跨平台移动框架。我喜欢 Phonegap 并且认为我了解它的工作原理,但现在我正在研究 QuickConnect 并且很难弄清楚它,尤其是它与 Phonegap 相比如何。 谁能帮我定
我是一名优秀的程序员,十分优秀!