[英]PostMessage a BM_CLICK to LinkLabel doesn't work
我正在使用以下代码:
PostMessage(handle, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
这可以单击一个Button
,但不能单击LinkLabel
。 任何线索,为什么不呢? 有解决方法吗?
(将光标移动到那里然后点击是不合适的,除非有办法从它的句柄中获取LinkLabel的坐标。即使那时我也不愿意这样做,除非没有别的办法。另外,这应该在仅限调用者的代码,不更改LinkLablel的应用程序代码。)
那就是
LinkLabel label = (LinkLabel)Control.FromHandle( handle );
((IButtonControl)label).PerformClick();
(虽然没有测试过)
诀窍是获取对实际链接标签的引用,以便您可以使用它实现IButtonControl
接口的事实。
编辑1 :那怎么样:
int WM_LBUTTONDOWN = 0x201;
int WM_LBUTTONUP = 0x202;
int MK_LBUTTON = 1;
PostMessage( handle, WM_LBUTTONDOWN, MK_LBUTTON, 0 );
PostMessage( handle, WM_LBUTTONUP, MK_LBUTTON, 0 );
编辑2 :这也应该有效(灵感来自David Heffernan的建议)
AutomationElement label = AutomationElement.FromHandle( handle );
var invokePattern = label.GetCurrentPattern( InvokePattern.Pattern ) as InvokePattern;
invokePattern.Invoke();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.