C#PostMessage的必要库是什么?

问题描述:

我试图模拟在C#中的按键和我得到这些错误:C#PostMessage的必要库是什么?

Error 2 The name 'WM_KEYDOWN' does not exist in the current context c:\users\frk\documents\visual studio 2010\Projects\HaxBot3\HaxBot3\Form1.cs 28 52 HaxBot3 
Error 5 The name 'WM_KEYDOWN' does not exist in the current context c:\users\frk\documents\visual studio 2010\Projects\HaxBot3\HaxBot3\Form1.cs 29 52 HaxBot3 
Error 8 The name 'WM_KEYDOWN' does not exist in the current context c:\users\frk\documents\visual studio 2010\Projects\HaxBot3\HaxBot3\Form1.cs 30 52 HaxBot3 
Error 9 The name 'VK_RIGHT' does not exist in the current context c:\users\frk\documents\visual studio 2010\Projects\HaxBot3\HaxBot3\Form1.cs 30 64 HaxBot3 
Error 3 The name 'VK_CONTROL' does not exist in the current context c:\users\frk\documents\visual studio 2010\Projects\HaxBot3\HaxBot3\Form1.cs 28 64 HaxBot3 
Error 6 The name 'VK_ALT' does not exist in the current context c:\users\frk\documents\visual studio 2010\Projects\HaxBot3\HaxBot3\Form1.cs 29 64 HaxBot3 
Error 1 The name 'PostMessage' does not exist in the current context c:\users\frk\documents\visual studio 2010\Projects\HaxBot3\HaxBot3\Form1.cs 28 17 HaxBot3 
Error 4 The name 'PostMessage' does not exist in the current context c:\users\frk\documents\visual studio 2010\Projects\HaxBot3\HaxBot3\Form1.cs 29 17 HaxBot3 
Error 7 The name 'PostMessage' does not exist in the current context c:\users\frk\documents\visual studio 2010\Projects\HaxBot3\HaxBot3\Form1.cs 30 17 HaxBot3 

,这是给出了错误代码:

public static void Forward() 
     { 
      Process[] processes = Process.GetProcessesByName("test"); 

      foreach (Process proc in processes) 
      { 
       PostMessage(proc.MainWindowHandle, WM_KEYDOWN, VK_CONTROL, 0); 
       PostMessage(proc.MainWindowHandle, WM_KEYDOWN, VK_ALT, 0); 
       PostMessage(proc.MainWindowHandle, WM_KEYDOWN, VK_RIGHT, 0); 
      } 
     }//Fprward 

我想我要补充的东西与using System.(something)但什么?感谢帮助。

+1

它们应该是windows消息值。如果你想要一个友好的枚举,你必须自己写,或者在网上找一个。 – asawyer 2012-04-19 21:18:39

你需要自己定义这些。

[DllImport("user32.dll")] 
public static extern bool PostMessage(IntPtr hWnd, uint msg, uint wParam, IntPtr lParam); 

public const uint WM_KEYDOWN = 0x0100; 
public const uint VK_RIGHT = 27; 
public const uint VK_CONTROL = 11; 
public const uint VK_ALT = 12; 

它在User32.Dll中。你需要自己指定它。 Visit this PInvoke.net page on PostMessage for more information

下面是一个示例类,假设Forward()在类MyClass中。

public static class MyClass 
{ 
    public static void Forward() 
    { 
    /* snip */ 
    } 

    [return: MarshalAs(UnmanagedType.Bool)] 
    [DllImport("user32.dll", SetLastError = true)] 
    static extern bool PostMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam); 
}