C# 无法从TPanel获取TEdit句柄
我有一个主窗口,有一个TEdit和一个TButton,我需要手柄来控制它。它们都在一个隧道里。到目前为止,我的代码是C# 无法从TPanel获取TEdit句柄,c#,delphi,winapi,handle,C#,Delphi,Winapi,Handle,我有一个主窗口,有一个TEdit和一个TButton,我需要手柄来控制它。它们都在一个隧道里。到目前为止,我的代码是 public void SendPacket(string packet) { IntPtr hWnd = Window.FindWindow(null, "AlissaAnalyzer"); IntPtr panel = Window.FindWindowEx(hWnd, IntPtr.Zero, "TPanel", "");
public void SendPacket(string packet)
{
IntPtr hWnd = Window.FindWindow(null, "AlissaAnalyzer");
IntPtr panel = Window.FindWindowEx(hWnd, IntPtr.Zero, "TPanel", "");
IntPtr edithWnd = Window.FindWindowEx(panel, IntPtr.Zero, "TEdit", "");
IntPtr buttonhWnd = Window.FindWindowEx(panel, IntPtr.Zero, "TButton", "");
//Do stuff with handles
}
这给了我TPanel和TButton的句柄,但是TEdit的句柄是0。我不知道这为什么不起作用,因为它遵循Spy++给我的结构:
这里有我遗漏的东西吗?我需要不同的方法来获得TEdit的句柄吗?我使用FindWindowEx错误吗?Spy++显示编辑框中没有文本。奇怪的是,连按钮都没有标题。第一次查找tEdit应该是可行的,但是基于您的其他问题,但是一旦您向edit发送一些文本,FindWindowEx调用就会失败,因为您总是将“”作为文本传递。您可以通过传递null来查找任何匹配项。如果您希望从.NET实现UI自动化,White项目可能会简化您的工作:我不认为TEdit的父窗口是面板。。。尝试IntPtr edithWnd=Window.FindWindowEx(hWnd,IntPtr.Zero,“TEdit”和“”);另外,我还注意到屏幕截图中有一个TMemo,但没有TEdit,可能是备忘录代替了TEdit字段吗?@Dorin编辑父项是TPanel,如上图所示。TMemo是窗口上完全不同的对象。我确信TEdit就是我要找的,因为我用Spy++的find control工具得到了它。@Ozdrgnaies我的坏,似乎我看到了双重。。。请忽略我之前的评论,你又一次帮助了我。发送null而不是“”立即为我获得了句柄。非常感谢你。