【发布时间】:2014-03-22 06:24:36
【问题描述】:
通过以下代码部分,我可以获得打开的打开文件对话框的句柄。这很好用。
HWND handleForWindow = FindWindow(NULL, "Open");
现在,我需要在同一个对话框的文本框区域中输入文件路径 + 文件名。为此,我需要获取 TextBox 的句柄。我一直在使用 Spy++,到目前为止效果很好。但是,它没有得到 TextBox 的句柄。 Spy++ 说该类是“编辑”并且没有标题。
我用标题和类名尝试了以下和其他一些可能性,但没有运气。
HWND hwndTextBox = FindWindowEx(handleForWindow, 0, "Edit", "Caption");
实际上TextBox 是ComboBox 的一部分。如果我把“ComboBox”放在那里,它会很好地处理。但在这种情况下,如果我向该框发送一条短信,它不会在那里放置任何文本。
SendMessage(hwndTextBox, WM_SETTEXT, 0, (LPARAM)"AnyText");
由于这不起作用,我想到了在窗口中获取当前活动元素,因为 TextBox 在打开时始终处于活动状态。但我找不到任何 Api 调用。谁能帮我解决这个问题?
谢谢。
【问题讨论】:
-
EnumChildWindows 或带有 GWL_CHILD 的 GetWindow 可以帮助您。
-
为此使用 UI 自动化库,尤其是当您试图控制另一个进程时。有很多选择,C++ 不是首选武器。
-
是的,你是对的,但这是我需要的最后一步。如果我能以某种方式填充文本框,一切都会完成。