C#调用Win32 API的方法及几个例程
来源:互联网 发布:淘宝买高仿包 编辑:程序博客网 时间:2024/05/22 09:57
C#中获取窗口句柄的方法
http://www.zdwork.cn/content/20086/96.htm
c#编写QQ群发器
http://setting.javaeye.com/blog/314119
C#中获取窗口句柄的方法
C#可调用API接口来获取窗口句柄,代码如下
using System;
using System.Runtime.InteropServices;
namespace tstfindwindow
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
[DllImport( "User32.dll ")]
public static extern System.IntPtr FindWindowEx( System.IntPtr parent , System.IntPtr childe , string strclass ,string strname );
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
IntPtr p=FindWindowEx(System.IntPtr.Zero,System.IntPtr.Zero,null,"窗口标题");
}
}
c#编写QQ群发器
1、窗体引用两个timer控件,来控循环发送时间
2、调试环境 vs2005.net
程序代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace CrazyCoder.QQ.QQSendMessage
{
public partial class QQSendMessage : Form
{
[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;
public QQSendMessage()
{
InitializeComponent();
}
** 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) == "与 ")//查看窗口标题第一个字是否是“与”。如果是的,说明是QQ窗口
{
hwndQQ = FindWindow( "#32770 ", p.MainWindowTitle.ToString());
hwnd1 = GetDlgItem(hwndQQ, 0);
hwnd2 = GetDlgItem(hwnd1, 0);
hwnd3 = GetDlgItem(hwnd2, 894);
SendMessage(hwnd3, 194, 0, this.txtInput.Text);//向QQ输入框粘贴字符,this.textBox1.Text是要发送的文字信息
hwnd4 = GetDlgItem(hwnd1, 1);
SendMessage(hwnd4, 245, 0, Convert.ToString(0));
}
}
}
}
/// <summary>
/// 单个用户发送消息
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
** void btnSend_Click(object sender, EventArgs e)
{
MySendMessage();//发送信息,向单个用户发送。
}
/// <summary>
/// 循环发送消息
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
** void btnSSend_Click(object sender, EventArgs e)
{
this.Qtimer.Enabled = true;
}
/// <summary>
/// 停止发送消息
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
** void btnSStop_Click(object sender, EventArgs e)
{
this.Qtimer.Enabled = false;
}
/// <summary>
/// 计时器开始发送消息
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
** void Qtimer_Tick(object sender, EventArgs e)
{
this.MySendMessage();
}
** void QunSendMessage()//针对群的消息发送过程
{
string machinename = System.Environment.MachineName;
Process[] processlist = Process.GetProcesses(machinename);
foreach (Process p in processlist)
{
if (p.MainWindowTitle != " ")
{
if (p.MainWindowTitle.ToString().Substring(p.MainWindowTitle.Length - 1, 1) == "群 ")
{
hwndQQ = FindWindow( "#32770 ", p.MainWindowTitle.ToString());
hwnd1 = GetDlgItem(hwndQQ, 0);
hwnd2 = GetDlgItem(hwnd1, 0);
hwnd3 = GetDlgItem(hwnd2, 894);
SendMessage(hwnd3, 194, 0, this.txtGInput.Text);//向QQ输入框粘贴字符
hwnd4 = GetDlgItem(hwnd1, 1);
SendMessage(hwnd4, 245, 0, Convert.ToString(0));
}
}
}
}
/// <summary>
/// 向群组发消息
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
** void btnGXSend_Click(object sender, EventArgs e)
{
this.QunSendMessage();//向群发送单条信息
}
/// <summary>
/// 循环向群组发送消息
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
** void btnGSend_Click(object sender, EventArgs e)
{
this.QGtimer.Enabled = true;
}
/// <summary>
/// 停止向群组发送消息
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
** void btnGStop_Click(object sender, EventArgs e)
{
this.QGtimer.Enabled = false;
}
/// <summary>
/// 计时器发送消息
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
** void QGtimer_Tick(object sender, EventArgs e)
{
this.QunSendMessage();//连续发送信息,多少秒发送一次,自己设定。
}
/// <summary>
/// 利用tencent协议,打开临时对话框
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
** void btnQQ_Click(object sender, EventArgs e)
{
string s = "tencent://message/?uin= " + this.txtQQ.Text + "&Site=im.qq.com&Menu=yes ";//是对方的QQ号比如疯狂代码和傲博知识库的qq
Process.Start(s);
}
/// <summary>
/// 初始化窗体
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
** void QQSendMessage_Load(object sender, EventArgs e)
{
this.txtGms.Text = "1000 ";
this.txtMs.Text = "1000 ";
}
}
}
- C#调用Win32 API的方法及几个例程
- C#调用WIN32的API
- c#调用Win32 API
- c# 调用win32 api
- c# 调用win32 API
- C#调用Win32 API
- C#中调用WIN32的API
- c# 中调用win32的api函数
- C#中调用WIN32的API
- C#调用外部方法(如win32中的API函数)
- C# API 大全 Win32调用
- c#调用Win32 Api函数
- C# API 大全- Win32调用
- C#调用win32 api字典
- 几个常用的Win32 Api
- C#调用Win32 API如何处理指针类型的参数
- C#调用Win32 的API函数--User32.dll
- 继续深入C#调用win32 API的学习
- Unix® Shell Programming读书笔记2
- Unix® Shell Programming读书笔记3
- Unix® Shell Programming读书笔记4(END)
- windowsxp下集成Tomcat与Apache
- DBA——工商管理博士
- C#调用Win32 API的方法及几个例程
- VC6.0下直接用DDK编译驱动程序的方法
- Android Bluetooth Architecture
- 如何实现一个与数据库表字段松耦合的j2ee应用
- 什么是WebLogic
- struts global-exceptions
- 如何让TortoiseSVN仅导出新增或修改过(变更过)的文件
- Flex Socket 与 C++ 通讯 --- 安全沙箱问题解决
- Windows server 2003创建软RAID完全手册