先说我要实现的功能:程序实现在cmd命令行窗口自动输入命令并执行。我得想法是利用keybd_event或者sendinput来模拟键盘输入命令。但是现在遇到的问题是,可以模拟alt+f4来关掉窗口,但是输入字母或者数字就不可以了。我分析原因觉得可能是因为在设置焦点时只是将cmd窗口设为焦点,并不是把光标设为焦点。所以不会输入字符。
我现在要问的问题是:如果我分析的对,那么怎么获取光标的句柄,以设置焦点。如果不是我该怎么来实现我说的功能。先谢了

解决方案 »

  1.   

    试过可以的,看看你的程序和我有什么不一样    HWND hwnd = ::FindWindow("ConsoleWindowClass", NULL);
        ::BringWindowToTop(hwnd);
        keybd_event('D', 0, 0, 0);    
        keybd_event('D', 0, KEYEVENTF_KEYUP, 0);    
        keybd_event('I', 0, 0, 0);    
        keybd_event('I', 0, KEYEVENTF_KEYUP, 0);    
        keybd_event('R', 0, 0, 0);    
        keybd_event('R', 0, KEYEVENTF_KEYUP, 0);    
        keybd_event('\r', 0, 0, 0);    
        keybd_event('\r', 0, KEYEVENTF_KEYUP, 0);    
      

  2.   

    谢谢真是怎么说呢,其实我就是学艺不精多谢老兄的指点,分会如数奉上。对了再请教一下:
    FindWindow("ConsoleWindowClass", NULL);第一个参数的class是指什么意思?都有哪些class啊?它与后面那个参数是什么关系?总之就是您再详细的讲一下这个函数。
      

  3.   

    class 是窗口的类,系统定义了一些类,应用程序可以注册自己的类它与后面的参数没有关系,后面的参数表示窗口标题用NULL表示任何标题都符合查找条件ConsoleWindowClass 是控制台窗口的类,是系统定义的