[DllImport("user32.dll")]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, int childAfter, string className, int windowTitle);
[DllImport("user32.dll", EntryPoint = "SendMessage")]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam);
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr GetModuleHandle(string lpModuleName); IntPtr hwndQQ;
IntPtr hwnd1;
IntPtr hwnd2;
IntPtr hwnd3;
IntPtr hwnd4; private void MySendMessage()
{
string machinename = System.Environment.MachineName;//获得计算机名
Process[] processlist = Process.GetProcesses(machinename);//得到所有进程
foreach (Process p in processlist)//列举每个进程
{
if (p.MainWindowTitle != "")//标题是否为空,不为空执行下面代码
{
if (p.MainWindowTitle.ToString().Substring(0, 1) == "与" || p.MainWindowTitle.ToString().Substring(0, 1) == "临")//查看窗口标题第一个字是否是“与”。如果是的,说明是QQ窗口
{
hwndQQ = FindWindow("#32770", p.MainWindowTitle.ToString());
hwnd1 = GetDlgItem(hwndQQ, 0);
hwnd2 = GetDlgItem(hwnd1, 0);
hwnd3 = GetDlgItem(hwnd2, 894);
SendMessage(hwnd3, 194, 0, this.textBox1.Text);//向QQ输入框粘贴字符,this.textBox1.Text是要发送的文字信息
hwnd4 = GetDlgItem(hwnd1, 1);
SendMessage(hwnd4, 245, 0, Convert.ToString(0));
}
}
}
参考下
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, int childAfter, string className, int windowTitle);
[DllImport("user32.dll", EntryPoint = "SendMessage")]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam);
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr GetModuleHandle(string lpModuleName); IntPtr hwndQQ;
IntPtr hwnd1;
IntPtr hwnd2;
IntPtr hwnd3;
IntPtr hwnd4; private void MySendMessage()
{
string machinename = System.Environment.MachineName;//获得计算机名
Process[] processlist = Process.GetProcesses(machinename);//得到所有进程
foreach (Process p in processlist)//列举每个进程
{
if (p.MainWindowTitle != "")//标题是否为空,不为空执行下面代码
{
if (p.MainWindowTitle.ToString().Substring(0, 1) == "与" || p.MainWindowTitle.ToString().Substring(0, 1) == "临")//查看窗口标题第一个字是否是“与”。如果是的,说明是QQ窗口
{
hwndQQ = FindWindow("#32770", p.MainWindowTitle.ToString());
hwnd1 = GetDlgItem(hwndQQ, 0);
hwnd2 = GetDlgItem(hwnd1, 0);
hwnd3 = GetDlgItem(hwnd2, 894);
SendMessage(hwnd3, 194, 0, this.textBox1.Text);//向QQ输入框粘贴字符,this.textBox1.Text是要发送的文字信息
hwnd4 = GetDlgItem(hwnd1, 1);
SendMessage(hwnd4, 245, 0, Convert.ToString(0));
}
}
}
参考下
解决方案 »
- oracle中ORA-00936: 缺失表达式 问题
- datagridview字体居中显示
- 提交之后怎样逐条读取隐藏域中的id,然后查询答案,对比
- SaveFileDialog语言版本
- 关于BCP的问题
- 继续寻求TreeView的问题~~~请赐教
- C# 如何修改配置文件
- 怎么把在dataset中修改的数据更新到数据源
- 想做一个好看点的界面 大家帮忙啊
- 编译两个C#的CS文件其中两个文件中的类有调用关系,如何用命令进行编译(高手请指教)
- 高手!!!!!!!!!!!!!!!!!!!!ajaxpro 返回DATASET后JS怎么删除DATASET中的行..
- 我用vs2008试用版是不是不能编译release版本?
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(
int hWnd, // handle to destination window
int Msg, // message
int wParam, // first message parameter
ref COPYDATASTRUCT lParam // second message parameter
);
使用
SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref );
COPYDATASTRUCT 的结构
public struct COPYDATASTRUCT //use this struct
{
public IntPtr dwData;
public int cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, StringBuilder lParam);
const int WM_GETTEXT = 0xd;
private void button1_Click(object sender, EventArgs e)
{
const int buffer_size = 1024;
StringBuilder buffer = new StringBuilder(buffer_size);
SendMessage(this.textBox1.Handle, WM_GETTEXT, buffer_size, buffer);
MessageBox.Show(buffer.ToString());
}
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, StringBuilder lParam);
const int WM_SETTEXT = 0xc;private void button1_Click(object sender, EventArgs e)
{
const int buffer_size = 1024;
StringBuilder buffer = new StringBuilder(buffer_size);
buffer.Append("aaa");
SendMessage(this.textBox1.Handle, WM_SETTEXT, buffer_size, buffer);
}
http://www.builder.com.cn/2007/0907/495420.shtml