用汇编语言写QQ任我聊
霡霂(盟军特战队) PHPer YY新手群:2076727
(注:YY多玩的语音聊天工具YY,而不是腾讯的QQ群)
呵呵!一个小工具而已,就是没加为好友也可以和别人聊天,临时会话!跟群里的和网站上的那种原理是一样的!
原理解析:
在Tencent的互动服务里面(http://imis.qq.com/)可以为你生成网页代码放到自己的网页中,让别人在网站上点一下就可以给你留言! 程序就是利用的这个生成的代码,直接在浏览器中输入
tencent://message/?uin=你想聊天的QQ号码&Site=im.qq.com&Menu=yes
就可以和别人聊天了,取消临时会话的用户不行(这个就是临时会话嘛!) 下面是汇编程序源代码: .386
.model flat,stdcall option casemap:none
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD include \\masm32\\include\\windows.inc include \\masm32\\include\\kernel32.inc
include \\masm32\\include\%user32.inc include \\masm32\\include\\masm32.inc include \\masm32\\include\\shell32.inc
includelib \\masm32\\lib\\kernel32.lib includelib \\masm32\\lib\%user32.lib includelib \\masm32\\lib\\masm32.lib includelib \\masm32\\lib\\shell32.lib .data? QQnum db ?
hInstance HINSTANCE ? swidth dd ? sheight dd ? dwidth dd ? dheight dd ? rect RECT <> mystr db ? szTemp1 db ? szTemp2 db ? .data
str1 db \str2 db \
MainDialog db \szMutex db \ErrorText db \ErrorTitle db \ .const
BTNSTART equ 1003 EDITNUM equ 1002 .code start:
Main proc
invoke GetModuleHandle,NULL mov hInstance,eax
invoke DialogBoxParam,hInstance,addr MainDialog,NULL,addr DlgProc,NULL
invoke ExitProcess,0 Main endp
DlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM .if uMsg==WM_INITDIALOG
invoke CreateMutex,NULL,FALSE,addr szMutex
invoke GetLastError
.IF eax == ERROR_ALREADY_EXISTS
invoke MessageBox,NULL,addr ErrorText,addr ErrorTitle,MB_ICONWARNING
invoke ExitProcess,NULL .ENDIF
;上面几行代码的作用的防止程序多开(即只能运行一个实例) invoke GetSystemMetrics,SM_CXSCREEN ; mov swidth,eax ; invoke GetSystemMetrics,SM_CYSCREEN ; mov sheight,eax ; invoke GetWindowRect,hWnd,addr rect ;
mov eax,rect.right ;这几行是为下面invoke SetWindowPos做准备
sub eax,rect.left ; mov dwidth,eax ;
sub swidth,eax ;使窗体出现在屏幕中心 mov eax,rect.bottom ; sub eax,rect.top ;
mov dheight,eax ;其中不明白的地方看一下Platform SDK就可以了
sub sheight,eax ;
shr sheight,1 ; shr swidth,1 ; invoke
SetWindowPos,hWnd,HWND_NOTOPMOST,swidth,sheight,dwidth,dheight,SWP_SHOWWINDOW
.elseif uMsg==WM_COMMAND mov eax,wParam .if ax==BTNSTART
invoke szCopy,addr str1,addr mystr
invoke GetDlgItemText,hWnd,EDITNUM,addr QQnum,11 invoke szCatStr,addr mystr,addr QQnum invoke szCatStr,addr mystr,addr str2 invoke ShellExecute,NULL,NULL,addr mystr,NULL,NULL,SW_HIDE .endif
.elseif uMsg==WM_CLOSE invoke EndDialog,hWnd,0 .else
mov eax,FALSE ret .endif mov eax,TRUE
ret DlgProc endp
end start
忘了说!补充一句,使用工具为MASM32!!! 有任何问题请与我联系:zk_invincible@163.com
[注意]1、本文旨在学习研究,转载自:
http://bbs.cfan.com.cn/thread-384930-1-1.html 如有问题请与原作者联系。
2、由于word不是专业的代码编辑器,编写时请使用专业的汇编语言编译软件;如要下载这个工具,请访问以上页面。