C++ WinApi如何获取窗体中活动元素的句柄
通过下面的代码部分,我可以获得打开的“打开文件”对话框的句柄。那很好C++ WinApi如何获取窗体中活动元素的句柄,c++,windows,api,winapi,C++,Windows,Api,Winapi,通过下面的代码部分,我可以获得打开的“打开文件”对话框的句柄。那很好 HWND handleForWindow = FindWindow(NULL, "Open"); 现在,我需要在同一个对话框的文本框区域中键入filepath+filename。为此,我需要得到文本框的句柄。我一直在使用Spy++,到目前为止效果非常好。但是,它没有得到文本框的句柄。Spy++说该类是“编辑”的,没有标题 我用标题和类名尝试了以下方法和其他方法,但没有成功 HWND hwndTextBox = FindWin
HWND handleForWindow = FindWindow(NULL, "Open");
现在,我需要在同一个对话框的文本框区域中键入filepath+filename。为此,我需要得到文本框的句柄。我一直在使用Spy++,到目前为止效果非常好。但是,它没有得到文本框的句柄。Spy++说该类是“编辑”的,没有标题
我用标题和类名尝试了以下方法和其他方法,但没有成功
HWND hwndTextBox = FindWindowEx(handleForWindow, 0, "Edit", "Caption");
实际上,文本框是ComboBox的一部分。如果我把“ComboBox”放在那里,它会很好地得到控制。但在这种情况下,如果我发送一条短信到盒子,它不会把任何文本放在那里
SendMessage(hwndTextBox, WM_SETTEXT, 0, (LPARAM)"AnyText");
由于这不起作用,我想在窗口中获取当前的活动元素,因为文本框无论何时打开都处于活动状态。但是我找不到任何Api调用。有人能帮我吗
谢谢。您可以向组合框发送消息,以检索其编辑框的HWND
如果您试图从通用对话框库与进行交互,则可以向对话框本身发送和消息,以获取其当前路径和文件名,并发送一条消息以更改对话框
cmb13
或edt1
字段中显示的文件名(请参阅).EnumChildWindows或带有GWL\U CHILD的GetWindow可以帮助您。为此,请使用UI自动化库,尤其是在您试图占用另一个进程时。很多选择,C++不是选择的武器。是的,你是对的,但这是我需要的最后一步。如果我能以某种方式填充文本框,一切都会完成。这听起来很好,但我无法让它工作。所以我需要更多的帮助。SendMessage(handleForWindow、CDM_SETCONTROLTEXT、IDOK、(LPRAM)“某物”);这不会改变任何事情。这是一个糟糕的评论。你有有效的手柄吗?同样来自MSDN:对话框必须使用OFN_EXPLORER标志创建。当然,我正在检查它是否是有效句柄。然而,我错过了OFN_EXPLORER标志的一部分。谢谢