超级奉献:屏幕取词完全Delphi实现代码! (0分)

  • 主题发起人 主题发起人 huiyugan
  • 开始时间 开始时间
多谢!
-------
将上面代码编译了一下,果然桌面图标和IE中的全部可以取到!
看来很久没有解决的问题可以完成了!
不过IE中闪烁很厉害,取到的词语位置也不是很准确!
 
嘿,大家都是靠外界信息来学习嘛,
所以如果大家又什么心得一定要共享嘛。

也许,在中国,很多事情都变味了,就象
《胜者为王》中Linus说了Linux在中国的发展说
的一些话。
 
jingtao:
能否将我最近发布的 KICQ即时通信系统 放在你的网站上提供下载...?我的主页空间不支持
外部链接访问~
下载:
http://gond.go.163.com 中的 网络软件 部分,
文件类型:rar 解压密码:gondsoft
下载说明:
kICQ-020521(客户端)
KICQserver-020521(服务器)
KQchat-020521(服务器资料库)
即时通信系统,功能仿OICQ
 
在线富翁->点击对应人的闪电符号
 
jingtao兄,你的主页空间在哪租的?我也想弄一个。
 
gondsoft:迟点好吗?别人准备给我一个1GB的空间.
real_clq: http://www.jnbiz.com空间他们送的. 域名是别人送的.
 
向楼主致敬!

请全体同志起立!
 
呵呵,我从来没有用过呼叫
 
我用过《金山词霸》和《IBM智能词典2000》,在取词时都有一个问题,就是在有些地方
无法正确的取词,比如,在桌面,而且有个规律:“a”->“D”、“b”->“E”、
“c”->“F”……,用了贴主的程序后,发现也是如此,想问一下huiyugan先生,截取
消息的方法应该是对的,但windows能正确显示这些字符,为什么各类取词软件都不能正
确地取词,是消息截取得不对?还是分析的不对?

我用的是win2000+sp2+ie6+dx8。(ie5+dx7也一样)
 
To huiyugan
非常感谢提供完整的源代码!
第二次启动为什么会出现:
Register Error 错误信息,如何避免?
 
这是因为二次注册WindowClass.
我说过,这份代码是个雏形,这种小问题偶没有修正。
但不影响功能
 
试试先。
 
帅呆了!感谢
 
To JingTao:
我还有一个东西能否也放到你的网站上,为了方便众多学习的网友?
是一个关于进程注入,线程隐藏的东西,还包含了一个时钟呢。
 
还有WIN2K下查看*密码的:
program password;

uses
windows,messages;

{$R *.RES}

var
//----------------------
wClass: TWndClass; //窗口类变量
Msg: TMSG; //消息变量
hInst, //程序实例
Handle, //主窗口句柄
hFont, //字体句柄
//----------------
hEditEmail, //e-mail编辑
hLabelEmail //e-mail提示
:integer; //句柄类型
procedure WriteCaption(hwnd:hwnd;text:pchar);begin sendmessage(hwnd,WM_SETTEXT,0,integer(text));end;
procedure ReadCaption(hwnd:hwnd;text:pchar);begin sendmessage(hwnd,WM_GETTEXT,400,integer(text));end;

//主程序结束
procedure ShutDown;
begin
DeleteObject(hFont);
UnRegisterClass(wClass.lpszClassName,hInst);
ExitProcess(hInst);
end;
//这是主窗口的消息处理函数
function WindowProc(hWnd,Msg,wParam,lParam:integer):Longint; stdcall;
begin
Result:=DefWindowProc(hWnd,Msg,wParam,lParam);
case Msg of
WM_DESTROY: ShutDown;
end;
end;
//定义几个窗口创建函数
function CreateEdit(name:pchar;x1,y1,x2,y2:integer):hwnd;begin Result:=CreateWindowEx(WS_EX_CLIENTEDGE,'Edit',name,WS_VISIBLE or WS_CHILD or ES_PASSWORD or ES_LEFT or ES_AUTOHSCROLL,x1,y1,x2,y2,Handle,0,hInst,nil);end;
function CreateLabel(name:pchar;x1,y1,x2,y2:integer):hwnd;begin Result:=CreateWindow('Static',name,WS_VISIBLE or WS_CHILD or SS_LEFT,x1,y1,x2,y2,Handle,0,hInst,nil);end;
function CreateMain(name:pchar;x1,y1,x2,y2:integer):hwnd;
begin
hInst:=GetModuleHandle(nil);
with wClass do
begin
Style:= CS_PARENTDC;
hIcon:= LoadIcon(hInst,'MAINICON');
lpfnWndProc:= @WindowProc;
hInstance:= hInst;
hbrBackground:= COLOR_BTNFACE+1;
lpszClassName:= 'MainClass';
hCursor:= LoadCursor(0,IDC_ARROW);
end;
RegisterClass(wClass);
Result:=CreateWindow(wClass.lpszClassName,name,WS_OVERLAPPEDWINDOW or WS_VISIBLE,x1,y1,x2,y2,0,0,hInst,nil);
end;
//---------主过程,类似于 C语言 中的 WinMain()
begin
handle:=CreateMain('exename',10,10,320,135);
hEditEmail:=CreateEdit('njhhack@263.net',60,4,174,20);
hLabelEmail:=CreateLabel('攻击目标:',4,8,54,24);
hFont:=CreateFont(-12,0,0,0,0,0,0,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH or FF_DONTCARE,'宋体');
//改变字体
SendMessage(hEditEmail,WM_SETFONT,hFont,0);
SendMessage(hLabelEmail,WM_SETFONT,hFont,0);
while(GetMessage(Msg,Handle,0,0))do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.

//--------------------------------------------------------------
Program Pass2K;
uses windows,messages,sysutils;
var
wClass: TWndClass; //窗口类变量
Msg: TMSG; //消息变量
hInst,Handle,hParent:thandle;
hLong:longint;
hPoint:TPOINT;
//
procedure run2;
var
hRemoteThread,hkernel32,dwRemoteProcessId,hRemoteProcess:integer;
cb,pcb:dword;
pfnStartAddr,pszLibFileName,pszLibFileRemote:pchar;
begin
cb:=100;
GetWindowThreadProcessId(hParent,@dwRemoteProcessId);
hRemoteProcess:=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwRemoteProcessId);
getmem(pszLibFileName,cb);
strcopy(pszLibFileName,pchar(ExtractFilePath(ParamStr(0))+'/dll01.dll'));
pszLibFileRemote:=VirtualAllocEx(hRemoteProcess,NIL,cb,MEM_COMMIT,PAGE_READWRITE);
WriteProcessMemory(hRemoteProcess,pszLibFileRemote,pszLibFileName,cb,pcb);
Freemem(pszLibFileName);
hkernel32:=GetModuleHandle('Kernel32.dll');
pfnStartAddr:=GetProcAddress(hkernel32,'LoadLibraryA');
hRemoteThread:=CreateRemoteThread(hRemoteProcess,NIL,0,pfnStartAddr,pszLibFileRemote,0,pcb);
WaitForSingleObject(hRemoteThread,INFINITE);
TerminateThread(hRemoteThread,0);
end;
//这是主窗口的消息处理函数
function WindowProc(hWnd,Msg,wParam,lParam:integer):Longint; stdcall;
begin
Result:=DefWindowProc(hWnd,Msg,wParam,lParam);
case Msg of
WM_DESTROY:halt;
WM_TIMER:
begin
GetCursorPos(hPoint);
hParent:=WindowFromPoint(hPoint);
hLong:=GetWindowLong(hParent,GWL_STYLE);
if (hLong and ES_PASSWORD)=ES_PASSWORD then run2;
end;
end;
end;
//
begin
hInst:=GetModuleHandle(nil);
with wClass do
begin
Style:= CS_PARENTDC;
hIcon:= LoadIcon(hInst,'MAINICON');
lpfnWndProc:= @WindowProc;
hInstance:= hInst;
hbrBackground:= COLOR_BTNFACE+1;
lpszClassName:= 'MainHostClass';
hCursor:= LoadCursor(0,IDC_ARROW);
end;
RegisterClass(wClass);
handle:=CreateWindow(wClass.lpszClassName,'http://hotsky.363.net',WS_OVERLAPPEDWINDOW or WS_VISIBLE,80,10,220,85,0,0,hInst,nil);
settimer(handle,0,200,NIL);
while(GetMessage(Msg,Handle,0,0))do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.
//-------------------------------------------------------------------------------
#include <windows.h>
BOOL WINAPI __declspec(dllexport) LibMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
{
POINT hPoint;
HWND hParent;
char str[100];
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
GetCursorPos(&hPoint);
hParent=WindowFromPoint(hPoint);
GetWindowText(hParent,str,100);
MessageBox(0,str,"",0);
FreeLibrary(hDLLInst);
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}

 
收藏先[8D][:D][:)]
 
后退
顶部