谁想写一篇关于利用句柄控制其它程序的文章?(100分)

  • 主题发起人 主题发起人 JebelStream
  • 开始时间 开始时间
J

JebelStream

Unregistered / Unconfirmed
GUEST, unregistred user!
包括句柄如何获得、怎么对其它程序进行的监视、控制,修改、和关闭等。
 
呵,我也喜欢,我也要一分!
 
期待啊,什么时候贴出来?
 
哇,这也要文章呀。。。。
只是几个函数的应用而已呀,findwindow,findwindowex,sendmessage,postmessage之类
 
是啊,这几个函数可以很容易地在帮助中找到,但是写得很不好理解,而且没有例子。对于一般用户来说,要想应用起来可不是一件容易的事儿。所以我想那位高手能给举几个应用的例子让大家来学习一下。
 
我自己写的控制OICQ自动注册的程序,
你给我多少分?
 
我也想知道。
 
非广告:
这个周末比较无聊,看到网上赚钱,就试了一下spedia,看到那个广告条比较烦,就写了破解程序
本来还想用这个来发展下线的(想钱快想疯了)。用到了这方面的技术,不过是用VC++写的。
如果那位想要源码的话,来信到gzw@netease.com索取。
 
其实就是最基本的几个api函数了
我认为还是自己琢磨的好
什么都吃现成的是长不大的
我原来对这些也不清楚
但是自己找各方面的资料,试着写一个控制winamp的程序
基本都了解差不多了。但是我说不出道理来,只知道怎么用
 
对于大家的帮助我表示十分感谢!
这也许是个简单的问题,所以会得到很多不同的看法。(就是该不该提出来)
我想每个问题的难度都是相对的。也许你不想回答的问题对于初入门的朋友来说,可能都不知道是怎么回事儿。也更说不上让他去找答案了。如果视自己在这个价段比别人走得好的话,那么你只要简单地告诉他一下如何能找到答案想信你也会得到别人的真心尊重。
“简单”的问题,如果遇到水平相近的朋友不是就可以相互帮助一下吗?我相信,只抄答案不过脑子的人还是少数。如果这样也不可以的话,那么论谈就真的是高手发言的天下了。我想板主也不想看到板面上第天只有几个超极高手在谈论些少为人知道的高深学问吧。
我是在刚才看了一篇嘲笑提问简单的文章而写下如上话的。希望不会因此而让某位高手难过。^_^
 
对了我在一个朋友那里有找到了有例子的API函数帮助(只是是英文的)那位朋友想要的话可以到
去他的主页http://techfan.onchina.net/上找一下。在技术资料里。
 
一篇好文章,该好好看看。。。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1018713
 
以前看过了,是一篇好文章。
我所说的就是针对这篇文章中的某几句说法而言的。我想这就是水平的问题如果是同一个水平的人就不存在提问简单了事儿了。
只是这样高手要费点事儿去找他们的好问题了。那篇文章中不也是说高手善于找好东西吗??
 
我也要一份,我想这个东东都快想疯了。
 
  我这里有一段这样的程序,用到好几个 API 如果那位想要看一下的话,把地址写下来,我会在结束问题后给你邮去一份。(20号以前)
  有两点要说明的是:首先,这个程序不是我写,是找来的。在此先对这位朋友表示深深的感谢!同时,每位想用的朋友也只能用于学习,而不可再有其它使用(我想这也表对前辈的尊重)。其次,程序中没有太多的说明,只是使用的例子,要自己研究一下才能明白的。这样也好,省得养成不动脑子的习惯 ^_^
 
天真,我想和你说话。有空的话,定个时间。(最好提前两天通知我)
 
我现在也正在想实现这个问题,有解决的办法给我说一声哈!
谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!
 
to JebelStream:
给我也来一份好吗?谢谢。E-mail:micro@west163.com
 
我把程序代码放在下面了,希望能对想要的人有帮助。同时这个问题也该结束了。分吗,第个人都有份。

program testwindow;

uses
Windows,
Messages;

var
WinClass: TWndClassA;
Inst, Handle, Button1, Label1, Edit1: Integer;
Msg: TMsg;
hFont: Integer;

{ Checks if typed password is 'Amigreen' and shows Message }
procedure CheckPassword;
var
Textlength: Integer;
Text: PChar;
begin
TextLength := GetWindowTextLength(Edit1);
if TextLength = 8 then
begin
GetMem(Text, TextLength + 1);
GetWindowText(Edit1, Text, TextLength + 1);
if Text = 'Amigreen' then
begin
MessageBoxA(Handle, 'Password is correct.', 'Password check', MB_OK);
FreeMem(Text, TextLength + 1);
Exit;
end;
end;
MessageBoxA(Handle, 'Password is incorrect.', 'Password check', MB_OK);
end;

{ Custom WindowProc function }
function WindowProc(hWnd, uMsg, wParam, lParam: Integer): Integer; stdcall;
begin
Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
{ Checks for messages }
if (lParam = Button1) and (uMsg = WM_COMMAND) then
CheckPassword;
if uMsg = WM_DESTROY then
Halt;
end;

begin
{ ** Register Custom WndClass ** }
Inst := hInstance;
with WinClass do
begin
style := CS_CLASSDC or CS_PARENTDC;
lpfnWndProc := @WindowProc;
hInstance := Inst;
hbrBackground := color_btnface + 1;
lpszClassname := 'AG_TESTWINDOW';
hCursor := LoadCursor(0, IDC_ARROW);
end; { with }
RegisterClass(WinClass);

{ ** Create Main Window ** }
Handle := CreateWindowEx(WS_EX_WINDOWEDGE, 'AG_TESTWINDOW', 'Amigreen TestWindow 1.00',
WS_VISIBLE or WS_SIZEBOX or WS_CAPTION or WS_SYSMENU,
363, 278, 305, 65, 0, 0, Inst, nil);
{ ** Create a button ** }
Button1 := CreateWindow('Button', 'OK', WS_VISIBLE or WS_CHILD or BS_PUSHLIKE or BS_TEXT,
216, 8, 75, 25, handle, 0, Inst, nil);
{ ** Create a label (static) ** }
Label1 := Createwindow('Static', '', WS_VISIBLE or WS_CHILD or SS_LEFT,
8, 12, 76, 13, Handle, 0, Inst, nil);

{ ** Create an edit field ** }
Edit1 := CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', '', WS_CHILD or WS_VISIBLE or
WS_BORDER or ES_PASSWORD, 88, 8, 121, 21, Handle, 0, Inst, nil);

{ ** Create Font Handle ** }
hFont := CreateFont(-11, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');

{ Change fonts }
if hFont <> 0 then
begin
SendMessage(Button1, WM_SETFONT, hFont, 0);
SendMessage(Label1, WM_SETFONT, hFont, 0);
SendMessage(Edit1, WM_SETFONT, hFont, 0);
end;
{ Change label (static) text }
SetWindowText(Label1, 'Enter password:');
{ Set the focus to the edit control }
SetFocus(Edit1);

UpdateWindow(Handle);

{ ** Message Loop ** }
while(GetMessage(Msg, Handle, 0, 0)) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end; { with }
end.
 
很好编程,但是不太好写啊
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部