1
Process.Start(qqPath, "/START QQUIN:" + strAcntNum + " PWDHASH:" + strAcntPsw + " /STAT:" + (blAcntSts ? "40" : "41"));
2
其中 qqPath为QQ程序路径,strAcntNum为QQ号码,strAcntPsw为QQ的Hash值,布尔类型blAcntSts为登录状态,即是否隐身。
2

简单吧,看来QQ自动登陆器是没有技术含量了,今天就设计过程中的其他技术作一介绍:
(1)注册表中添加QQ程序路径和登陆器程序打开密码
1
public static string SetQQRegistryValue(string key, object value)
2
{
3
RegistryKey pregkey = Registry.CurrentUser.OpenSubKey(Constants.STR_QQ_REG_PATH, true);
4
if (pregkey == null)
5
{
6
pregkey = Registry.CurrentUser.CreateSubKey(Constants.STR_QQ_REG_PATH, RegistryKeyPermissionCheck.ReadWriteSubTree);
7
pregkey.SetValue(key, string.Empty);
8
pregkey.Close();
9
return string.Empty;
10
}
11
else
12
{
13
pregkey.SetValue(key, value);
14
pregkey.Close();
15
return value.ToString();
16
}
17
18
}
19
20
public static string GetQQRegistryValue(string key)
21
{
22
RegistryKey pregkey = Registry.CurrentUser.OpenSubKey(Constants.STR_QQ_REG_PATH, true);
23
if (pregkey == null)
24
{
25
pregkey = Registry.CurrentUser.CreateSubKey(Constants.STR_QQ_REG_PATH, RegistryKeyPermissionCheck.ReadWriteSubTree);
26
}
27
object value = pregkey.GetValue(key);
28
pregkey.Close();
29
if (value == null)
30
{
31
return string.Empty;
32
}
33
else
34
{
35
return value.ToString();
36
}
37
}
38

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

(2)序列化QQ帐号信息到文件
1
public static List<QQAccount> Get(string path)
2
{
3
if (qqInfoList == null)
4
{
5
FileStream fs = null;
6
try
7
{
8
XmlSerializer xs = new XmlSerializer(typeof(List<QQAccount>));
9
fs = new FileStream(path, FileMode.Open, FileAccess.Read);
10
qqInfoList = (List<QQAccount>)xs.Deserialize(fs);
11
fs.Close();
12
return qqInfoList;
13
}
14
catch
15
{
16
if (fs != null)
17
fs.Close();
18
return null;
19
}
20
21
}
22
else
23
{
24
return qqInfoList;
25
}
26
}
27
28
public static void Set(string path, List<QQAccount> qqList)
29
{
30
if (qqList == null)
31
throw new Exception("Parameter is null!");
32
33
FileStream fs = null;
34
try
35
{
36
XmlSerializer xs = new XmlSerializer(typeof(List<QQAccount>));
37
fs = new FileStream(path, FileMode.Create, FileAccess.Write);
38
xs.Serialize(fs, qqList);
39
fs.Close();
40
}
41
catch
42
{
43
if (fs != null)
44
fs.Close();
45
throw new Exception("Xml serialization failed!");
46
}
47
}
(3)Hash处理登录密码
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

1
public static string HashBase64(string str)
2
{
3
byte[] result = new byte[str.Length];
4
try
5
{
6
MD5 md = new MD5CryptoServiceProvider();
7
result = md.ComputeHash(System.Text.Encoding.UTF8.GetBytes(str));
8
return Convert.ToBase64String(result);
9
}
10
catch
11
{
12
return "";
13
}
14
}
15
如下提供源码下载,作的粗糙,原谅!如有更好的建议请留言!
2

3

4

5

6

7

8

9

10

11

12

13

14

15

源码下载