WinApi如何获取表单中活动元素的句柄

时间:2014-03-22 06:24:36

标签: c++ windows api winapi

使用以下代码部分,我可以获得打开的打开文件对话框的句柄。这很好。

HWND handleForWindow = FindWindow(NULL, "Open");

现在,我需要在同一对话框的文本框区域中键入filepath + filename。为此,我需要获取TextBox的句柄。我一直在使用Spy ++,到目前为止效果很好。但是,它没有获得TextBox的句柄。间谍++表示课程是"编辑"并且没有标题。

我尝试了以下以及标题和类名的其他一些可能性,但没有运气。

HWND hwndTextBox = FindWindowEx(handleForWindow, 0, "Edit", "Caption");

实际上TextBox是ComboBox的一部分。如果我放在那里" ComboBox",它会很好地获得句柄。但是在这种情况下,如果我发送短信到框中,它就不会在那里放任何文字。

SendMessage(hwndTextBox, WM_SETTEXT, 0, (LPARAM)"AnyText");

由于这不起作用,我想到了在窗口中获取当前活动元素,因为TextBox在打开时始终处于活动状态。但我无法找到任何Api电话。有谁可以帮我解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:3)

您可以向ComboBox发送CB_GETCOMBOBOXINFO消息,以检索其编辑框的HWND

如果您尝试与Common Dialog库中的Open File dialog进行交互,则可以向对话框本身发送CDM_GETFOLDERPATHCDM_GETFILEPATH消息以获取其当前路径和文件名,以及一条CDM_SETCONTROLTEXT消息,用于更改对话框的cmb13edt1字段中显示的文件名(请参阅Explorer-Style Control Identifiers)。