现在有一个软件,工作时我要来查信息的,如ID,名字,年龄,日期等,该程序标题固定,如“查询”。
现在我想写一个程序,软件后台运行,按下全局快捷键后,获取上面程序内的文字内容,然后传回我自己的程序里
在论坛里搜了一下,都用到findwindows、getwindows等API,但都不是很详细,不是很明白,谁能提供一下带注释的代码参考一下呢

解决方案 »

  1.   

    用ce找内存基址+偏移然后ReadProcessMemory()函数取其值即可。如果用GetWindowText也行但会很麻烦,因为你得罗列该窗口所有控件句柄。
      

  2.   

    用FindWindow(窗口标题)找到主窗口,用GetDlgItem(ID)找到文本框(ID用SPY++查),最后用SendMessage(WM_GETTEXT)获得文本。
      

  3.   

    p.s. 这是我回答的最有耐心的一次,平时我也就说一个API名字,绝对不会告诉你主要参数用什么,你要是再要代码,我就建议你改行算了!
      

  4.   

    获取窗口中一个文本框的值的SendMessage方法:[DllImport("user32.dll", EntryPoint = "SendMessageA")]
    static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, StringBuilder lParam);
    const int WM_GETTEXT = 0xd;
    private void button1_Click(object sender, EventArgs e)
    {
        const int buffer_size = 1024;    
        StringBuilder buffer = new StringBuilder(buffer_size);
        SendMessage(this.textBox1.Handle, WM_GETTEXT, buffer_size, buffer);
        MessageBox.Show(buffer.ToString());
    }