gpt4 book ai didi

WinAPI如何检测复制发生在哪个控件中

转载 作者:行者123 更新时间:2023-12-02 05:04:58 25 4
gpt4 key购买 nike

我想知道如何在我的 win32 应用程序中识别复制发生在哪个控件中。比如EditBox,RichEdit等等。

为了弄清楚复制是发生在我的应用程序内部还是外部,我使用了以下方法:

//global variables

HWND hWnd;
DWORD ProcId;
HWND nextHandle;
DWORD currentID;

//then I call two functions on form create

currentID=GetCurrentProcessId();
nextHandle = SetClipboardViewer(Handle);

//then on WM_DRAWCLIPBOARD message I call

hWnd = GetClipboardOwner();
GetWindowThreadProcessId(hWnd,&ProcId);

// functions and checking by IDs whether
// the copying took place in or outside my application

if(lpdwProcessId==currentID) {...}

它工作正常,但这不是如何在 whitch 控件(在我的应用程序中)中检测复制发生的解决方案。

最佳答案

嗯,我认为你可以使用 GetClipboardOwner .这不是 100% 可靠的。剪贴板可能包含数据,并且此函数返回 NULL。首先,剪贴板可以由控件以外的其他东西填充,但我希望剪贴板有很多方法可以充满数据,并且没有所有者窗口。但只要您的应用不会对剪贴板做任何非标准的事情,我认为它就能为您完成这项工作。

如果您想 100% 确定应用中的哪个控件用数据填充了剪贴板,请自己跟踪最后一个填充剪贴板的控件。

关于WinAPI如何检测复制发生在哪个控件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12881350/

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