为什我这个样不成功呢?
int nnnn = 134974;// myProcess.MainWindowHandle.ToInt32();                   
                        //PostMessage(nnnn, WM_SYSKEYDOWN, 18, 0);                        //PostMessage(nnnn, WM_SYSKEYDOWN, 13, 0);                        //System.Threading.Thread.Sleep(50);                        //PostMessage(nnnn, WM_SYSKEYUP, 13, 0);
                        //PostMessage(nnnn, WM_SYSKEYUP, 18, 0);
                        PostMessage(nnnn, WM_SYSKEYDOWN, VK_RETURN, 1 << 29);

解决方案 »

  1.   

    建议搂主使用SendMessage来发送然后,关键是搂主的窗体中的窗口过程是不是有处理这个消息的模块
      

  2.   

    System.Windows.Forms.SendKyes.Send("%{enter}");
      

  3.   

    SendKeys 类提供将键击发送到应用程序的方法。
    使用 SendKeys 将键击和组合键击发送到活动应用程序。此类无法实例化。若要发送一个键击给某个类并立即继续程序流,请使用 Send。若要等待键击启动的任何进程,请使用 SendWait。每个键都由一个或多个字符表示。若要指定单个键盘字符,请使用该字符本身。例如,若要表示字母 A,请将字符串“A”传递给方法。若要表示多个字符,请将各个附加字符追加到它之前的字符的后面。若要表示字母 A、B 和 C,请将参数指定为“ABC”。加号 (+)、插入符号 (^)、百分号 (%)、波浪号 (~) 以及圆括号 ( ) 对 SendKeys 具有特殊含义。若要指定这些字符中的某个字符,请将其放在大括号 ({}) 内。例如,若要指定加号,请使用“{+}”。若要指定大括号字符,请使用“{{}”和“{}}”。中括号 ([ ]) 对 SendKeys 没有特殊含义,但必须将它们放在大括号内。在其他应用程序中,中括号具有特殊含义,此含义可能会在发生动态数据交换 (DDE) 时起重要作用。
      

  4.   

    若要指定在按键(如 Enter 或 Tab)时不显示的字符,以及表示操作而不表示字符的键,请使用下表中的代码:键 
     代码 
     
    Backspace 
     {BACKSPACE}、{BS} 或 {BKSP} 
     
    Break 
     {BREAK} 
     
    Caps Lock 
     {CAPSLOCK} 
     
    Del 或 Delete 
     {DELETE} 或 {DEL} 
     
    向下键 
     {DOWN} 
     
    End 
     {END} 
     
    Enter 
     {ENTER} 或 ~ 
     
    Esc 
     {ESC} 
     
    Help 
     {HELP} 
     
    Home 
     {HOME} 
     
    Ins 或 Insert 
     {INSERT} 或 {INS} 
     
    向左键 
     {LEFT} 
     
    Num Lock 
     {NUMLOCK} 
     
    Page Down 
     {PGDN} 
     
    Page Up 
     {PGUP} 
     
    Print Screen 
     {PRTSC}(保留供将来使用) 
     
    向右键 
     {RIGHT} 
     
    Scroll Lock 
     {SCROLLLOCK} 
     
    Tab 
     {TAB} 
     
    向上键 
     {UP} 
     
    F1 
     {F1} 
     
    F2 
     {F2} 
     
    F3 
     {F3} 
     
    F4 
     {F4} 
     
    F5 
     {F5} 
     
    F6 
     {F6} 
     
    F7 
     {F7} 
     
    F8 
     {F8} 
     
    F9 
     {F9} 
     
    F10 
     {F10} 
     
    F11 
     {F11} 
     
    F12 
     {F12} 
     
    F13 
     {F13} 
     
    F14 
     {F14} 
     
    F15 
     {F15} 
     
    F16 
     {F16} 
     
    数字键盘加号 
     {ADD} 
     
    数字键盘减号 
     {SUBTRACT} 
     
    数字键盘乘号 
     {MULTIPLY} 
     
    数字键盘除号 
     {DIVIDE} 
     若要指定与 Shift、Ctrl 和 Alt 键的任意组合一起使用的键,请在这些键代码之前加上以下一段或多段代码。键 
     代码 
     
    Shift 
     + 
     
    Ctrl 
     ^ 
     
    Alt 
     % 
     若要指定在按一些键时应同时按住 Shift、Ctrl 和 Alt 键的任意组合,请将这些键的代码放在括号内。例如,若要指定按 E 和 C 时同时按住 Shift 键,请使用“+(EC)”。若要指定按 E 时应按住 Shift,之后按 C 时不按住 Shift,请使用“+EC”。若要指定重复键,请使用格式 {key number}。键和数字之间必须放一空格。例如,{LEFT 42} 表示按向左键 42 次;{h 10} 表示按 H 10 次。注意 
    因为没有可用来激活另一个应用程序的托管方法,所以可以在当前应用程序中使用此类,或使用本机 Windows 方法(如 FindWindow 和 SetForegroundWindow)来强制聚焦到其他应用程序上。
      

  5.   

    我觉得,搂主是想向跨进程发键盘消息的,并且目标应用程序不一定是活动的,所以SendKeys应该不行的,只能调用WinAPI
      

  6.   

    SendMessage
    参考
    http://www.cnblogs.com/buffer/articles/1259093.html
    http://www.cnblogs.com/willen/archive/2008/11/21/1316523.html
      

  7.   


    SendMessage(this.Handle,WM_SETHOTKEY,0x45a, 0)//WM_SETHOTKEY 是 0x32
    //0x45a    高字节是contrl键  低字节是a b c d   所以5a是z的ascii   4是alt  也就是alt+z