using System; using System.IO; using System.Net; using System.Text; using System.Text.RegularExpressions;namespace NetFishSoftware.QQUtility { // 状态枚举 public enum UserStatus{Online, Offline, NotExist} // 用户信息 public struct UserInfo { public string Name; public string Gender; public string Province; public string Age; public string Address; public string Face; public string Uin; public UserStatus Status; } /// <summary> /// 得到QQ用户的信息 /// Author:whxbb([email protected]) /// Data: 2002/04/11 /// </summary> /// <example> ///<code> /* QQInfo info = new QQInfo("6651249"); try { UserInfo user = info.User;
但需要知道oicq服务器的DNS设置!我只知道这些,你自己再研究研究吧!!!我遇到了一个问题,不知道你能帮我吗??
我想在textBox中设置只能输入数字
我的代码是:
private viod textBox_keyPress(object sender,system.windows.KeyPressEventArgs e)
{
char c=e.Keychar;
if((char.IsDigit(c)==false)&&(c!='\b')&&(c!='\r'))
{
SendKeys.Send("{BS}");
}
}
当输入ctrl+字母键时,就回出错!不知道什么原因!希望你知道!谢谢了!
我的Email:[email protected]}
}
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;namespace NetFishSoftware.QQUtility
{
// 状态枚举
public enum UserStatus{Online, Offline, NotExist}
// 用户信息
public struct UserInfo
{
public string Name;
public string Gender;
public string Province;
public string Age;
public string Address;
public string Face;
public string Uin;
public UserStatus Status;
}
/// <summary>
/// 得到QQ用户的信息
/// Author:whxbb([email protected])
/// Data: 2002/04/11
/// </summary>
/// <example>
///<code>
/*
QQInfo info = new QQInfo("6651249");
try
{
UserInfo user = info.User;
string message = "";
string status = ""; switch(user.Status)
{
case UserStatus.NotExist:
message = "该号码不存在";
break;
case UserStatus.Offline:
status = "离线";
goto default;
break;
case UserStatus.Online:
status = "在线";
goto default;
break;
default:
message = "号码:" + user.Uin +
"\n昵称:" + user.Name +
"\n地区:" + user.Address +
"\n地址:" + user.Address +
"\n性别:" + user.Gender +
"\n年龄:" + user.Age +
"\n头像:" + user.Face +
"\n状态:" + status;
break; }
MessageBox.Show(message);
}
catch (Exception ep)
{
MessageBox.Show(ep.ToString());
}
*/
///</code>
/// </example>
public class QQInfo
{
UserStatus status;
string face;
string number;
string html; // 检测使用的url
const string urlCheck = "http://search.tencent.com/cgi-bin/friend/oicq_find?oicq_no=";
public UserInfo User; public QQInfo()
{ }
/// <summary>
///
/// </summary>
/// <param name="QQNumber">QQ号码</param>
public QQInfo(string Num)
{
this.number = Num;
this.Fetch();
} // 得到QQ用户信息
public void Fetch()
{
User = new UserInfo();
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(urlCheck + this.number);
HttpWebResponse ws = (HttpWebResponse)wr.GetResponse();
StreamReader sr = new StreamReader(ws.GetResponseStream(), Encoding.Default);
this.html = sr.ReadToEnd();
sr.Close(); ws.Close();
ParseHtml();
} // 将信息从HTML从语句中提取出来
protected void ParseHtml()
{
int[] matchposition = new int[20];
String[] results = new String[20];
string pattern = "ShowResult\\W{1,1}\"(?<color>[^\"]*)\",\"(?<pic>[^\"]*)\",\"(?<uin>[^\"]*)\",\"(?<name>[^\"]*)\",\"(?<province>[^\"]*)\",\"(?<age>[^\"]*)\",\"(?<gender>[^\"]*)\",\"(?<address>[^\"]*)\"\\W{1,1};"; Regex r = new Regex(pattern);
Match m = r.Match(this.html);
if (m.Success)
{
while(m.Success)
{
User.Uin = m.Result("${uin}");
User.Face = m.Result("${pic}");
User.Name = m.Result("${name}");
User.Gender = m.Result("${gender}");
User.Age = m.Result("${age}");
User.Address = m.Result("${address}");
User.Province = m.Result("${province}");
m = m.NextMatch();
// 分析出用户的昵称
User.Name = new Regex("^(?<name>[\\W|\\w]*)(\\W{1,1}[0-9]+\\W{1,1})$").Match(User.Name).Result("${name}");
// 分析出用户的在线状态
string onlineFlag = new Regex("(?<flag>[1-3]{1,1})\\W{1,1}(gif)$").Match(User.Face).Result("${flag}");
if (onlineFlag == "2")
User.Status = UserStatus.Online;
else if (onlineFlag == "3")
User.Status = UserStatus.Offline;
}
}
else
{
User.Status = UserStatus.NotExist;
}
} }
}