求一个API的小程序  不要太复杂 有这些功能就行:1,能获得窗口的句柄,2能给窗体里的东西自动输入值,3,能触发窗体上的按钮,最好能写上注视,谢谢了~ 小弟刚刚开始接触API  想学一学` 希望大家能帮我一下`  给我介绍关于API的教程什么的也不胜感激~~ 电子书也行~ 谢谢了~~

解决方案 »

  1.   

    介绍WINDOWS编程的书。。WINDOWS编程,核心编程
      

  2.   

    1.FindWindow,FindWindowEx
    2.SendMessage发送消息,SET_TEXT,
    3.keybd_event
      

  3.   

    方法是明白了,现在的问题是不会用,SPY++什么的`不懂是什么意思`  API  这样的例子大家谁有一个呢 越简单越好~~ 可以发给我一个吗?[email protected]贴出来也行 先谢谢了`这个问题弄了好多天了  还是没有头绪`  代码有`可以看不太懂~不太明白~ 希望大家帮我一下~ 谢谢了
      

  4.   

    SPY++是一个编程用的工具。在VS2005的开发工具中包括了。大体的功能就是可以查看当前所有窗口的句柄、TITLE、窗口类等信息。
    你所要求的这些功能,离开SPY++是不太好调试的。取得窗口句柄使用         [DllImport("User32.dll")]
            public static extern int FindWindow(string strClassName, string strWindowName);
            [DllImport("User32.dll")]
            public static extern int FindWindowEx(int hwndParent, int hwndChildAfter, string strClassName, string strWindowName);这两个函数。后面一个比前面的功能更强大。
    第一个函数的功能是返回窗口的句柄(INT),第一个参数是窗口类通过SPY++可以查到(Windows Class Name),第二个是窗口的名称即CAPTION。
    在不知道Classname的情况下可以把null传入第一个参数。
    第二个函数的功能类似但有一些特别的功能,它多了二个参数,第一个参数是父窗口的句柄。在windows中窗体是嵌套关系的,如果你传递了这个参数(不为0),那么在查找窗口时就只会查找这个父窗口的子窗口。查找他们符合下面的条件的窗口。第二个参数一般用0吧。你要自动输入值,这个得根据你的具体需要,比如你输入的内容是什么?如果是输入文本用key_event是可以的。具体的你应该多查MSDN看。触发按钮与自动输入是一回事情,使用mouse_event就可以了。
      

  5.   

    开始菜单--》运行private void button1_Click(object sender, EventArgs e)
            {
                int h1 = 0, h2 = 0,h3;
                h1 = FindWindow(null, "运行");    //这要修改为窗口标题 
                if (h1 != 0)
                {
                    h2 = FindWindowEx(h1, 0, "ComboBox", null);
                    if (h2 != 0)
                    {
                        SendMessage(h2, WM_SETTEXT, 0, "Regedit.exe");
                        h3 = FindWindowEx(h1, 0, null, "确定");    //这要修改为按钮文本 
                        if (h3 != 0)
                        {
                            SendMessage(h3, WM_CLICK, 0, null);
                        }
                        else
                        {
                            MessageBox.Show("h3==0");
                        }
                    }
                    else
                    {
                        MessageBox.Show("h2==0");
                    }
                }
                else
                {
                    MessageBox.Show("h1==0");
                }
            }