描述: 
    我想通过编程实现,找到WebDve.Webserver.EXE 的端口号,用于动态调试WEBSERVICE,因为端口号是随机生成的·非常麻烦·每次都要重新设置一次··现在我想通过程序来找到它显示端口号的那个文本框的句柄。通过API getwindowTEXT来找到它的值.目前已经实现的代码如下(本帖在C#板块也有一帖··由于API 知识有限请大家帮帮我C++代码实现就可以了·谢谢··):         [DllImport("user32.dll", EntryPoint="GetWindowText")]
        public static extern int GetWindowText (int hwnd,StringBuilder lpString,int cch);          public Form1()
        {   
            int hwnd =263842;// 文本框的句柄 
            StringBuilder sb = new StringBuilder(256);
            GetWindowText(hwnd, sb, sb.Capacity);             MessageBox.Show(sb.ToString()); //显示端口号             //问题所在:句柄无法动态得到,原因 它没有固定窗体类名和标题。只有进程的名称是固定的        }

解决方案 »

  1.   

    用SPY++看进程标题,用FindWindow和FindWindowEx查找你要的文本控件的句柄。
      

  2.   

    要是自己可以移动鼠标抓取文本控件WindowFromPoint就返回该句柄了。
      

  3.   

    CWnd win=CWnd::FindWindow(NULL,"窗口名");
    DWORD num=GetLastError();
    if(!win->m_hWnd)
    {
    MessageBox("Not Find Window!");
    }注:CWnd::FindWindow()返回的是一个CWnd对象指针,而非一个HANDLE句柄。 
      

  4.   

    没注意看标题是动态的,要是这样的话EnumWindow试试看。
      

  5.   

    楼主说的类名和标题都不一样的,类名和标题都不一样,但总有一些规则吧,比如说全数字,全大写加数字。你看看规则有没有通用性,然后EnumWindows遍历所有的窗口找到你需要窗口。
      

  6.   

    谢谢大家·我搞定了·思路如下:EnumWindows遍历所有窗口 EnumChildWindows遍历所有的子窗体并找到它们的标题·然后查找匹配的标题并返回·实现了·呵呵·结贴·
      

  7.   

    在web service项目的属性中设置一个固定的端口号……