Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从TPanel获取TEdit句柄_C#_Delphi_Winapi_Handle - Fatal编程技术网

C# 无法从TPanel获取TEdit句柄

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", "");

我有一个主窗口,有一个TEdit和一个TButton,我需要手柄来控制它。它们都在一个隧道里。到目前为止,我的代码是

    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而不是“”立即为我获得了句柄。非常感谢你。