2014-04-22 25 views
1

我想获得一个工具栏按钮的句柄。我知道它的ID和工具栏按钮所在的窗口句柄。但GetDlgItem函数似乎不适用于工具栏按钮。如何获取工具栏按钮的句柄?

GetDlgItem (windowHandle, buttonID); 

我想也许该函数SendMessage()与正确的参数可以得到处理,但我没有发现任何msg参数,这将有助于为同一。

问题::任何人都可以告诉我一个函数,可以帮助我得到它的处理吗?

回答

0

工具栏按钮是非窗口的。没有窗口句柄供您检索。

如果你想自动化工具栏按钮,那么你应该使用UI Automation

+0

噢好吧,那么如何单击特定的工具栏按钮?我的意思是我想用SendMessage(windowHandle,Msg,blah,blah)......但是我找不到合适的Msg和其他参数来完成这项工作。 BN_CLICK似乎不起作用,因为它需要按钮的句柄,这就是为什么我要求一个工具栏按钮的句柄:P – user3552287

+0

这是一个不同的问题。我建议你使用UI自动化。 –

1

工具栏的按钮没有句柄(它们不是窗口,因为常规按钮)。有很多工具栏消息(TB_ *)可用于使用这些按钮。

参考http://msdn.microsoft.com/en-us/library/bb760435(VS.85).aspx

您可以发送TB_BUTTONCOUNT信息获取工具栏按钮计数和创建一个简单的循环遍历每个按钮和检查,如果通过发送TB_ISBUTTONENABLED功能已停用肚里。您还可以发送TB_GETBUTTON消息以获取有关TBBUTTON中的每个按钮的更多信息。

+0

你可以发送这些消息,但它需要'WriteProcessMemory'和'ReadProcessMemory'。除非我非常误解,否则他们不会被跨进程序。 –

+0

我明白了。那么,我可以用什么信息或其他功能来点击程序2中的工具栏按钮? – user3552287

+0

你这样做我已经说过了。您使用UI自动化。我们一直在告诉你。在某些时候,你会相信我们! –