代码如下 :    using System.Runtime.InteropServices; 
[DllImport("User32.DLL")] 
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam); 
[DllImport("User32.DLL")] 
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); 
public const uint WM_SETTEXT = 0x000C; private void button1_Click(object sender, EventArgs e) { Process vProcess = Process.Start("notepad.exe"); 
while (vProcess.MainWindowHandle == IntPtr.Zero) vProcess.Refresh(); 
IntPtr vHandle = FindWindowEx(vProcess.MainWindowHandle, IntPtr.Zero, "Edit", null); // 定位控件  
SendMessage(vHandle, WM_SETTEXT, 0, "Zswang 路过"); // 发送消息 }这个是通过句柄控制其他的程序吗?

解决方案 »

  1.   

    是啊,是向别的程序的Edit控件中发送一个WM_SETTEXT消息使其里面显示"Zswang 路过"文字
      

  2.   

    using System.Runtime.InteropServices;
    using System.Diagnostics;[DllImport("User32.DLL")]
    public static extern int SendMessage(IntPtr hWnd, 
        uint Msg, int wParam, string lParam);
    [DllImport("User32.DLL")]
    public static extern IntPtr FindWindowEx(IntPtr hwndParent,
        IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
    public const uint WM_SETTEXT = 0x000C;
    private void button1_Click(object sender, EventArgs e)
    {
        Process vProcess = Process.Start("notepad.exe"); // 启动记事本程序
        while (vProcess.MainWindowHandle == IntPtr.Zero) vProcess.Refresh(); // 等待记事本进程创建出主窗体
        IntPtr vHandle = FindWindowEx(vProcess.MainWindowHandle, 
            IntPtr.Zero, "Edit", null); // 在主窗体中查询类名为Edit的子窗体
        SendMessage(vHandle, WM_SETTEXT, 0, "Zswang 路过"); // 向Edit子窗体发送一个WM_SETTEXT消息,目的是设置文本为“Zswang 路过”
    }具体查看MSDN WinForm开发相关内容
      

  3.   

    前面几行那些声明是标准的API函数 -- 即:操作系统(Windows)提供给应用程序的调用接口。没啥好解释的,更详细的信息查看MSDN帮助。
      

  4.   

    說穿了,就是在c#中調用api函數.