有没有在聊天室自动发言的代码??? (100分)

  • 主题发起人 主题发起人 solcj
  • 开始时间 开始时间
S

solcj

Unregistered / Unconfirmed
GUEST, unregistred user!
我有正经合法用途,不是为了骗小MM!!!

有高手请务必指点!

UP这个贴子有分。
 
咦,这很难么?
 
不难,但花时间。
 
不会吧

这么难?分不够可以再加。
 
IE里的EDIT有HANDLE吗?
 
//找出一给定窗口中指定的第几个某一类控件的句柄 //
//参数说明: WindowHandle:指定窗口的句柄 //
// ChildClass :该子控件的类名称(可指定部分) //
// ChildNo :该子控件是交窗口中的第几个此类控件 //

function GetChildHandle(WindowHandle: THandle; ChildClass: string; ChildNo: integer): THandle;
function EnumChildHandle(AHWnd: HWnd; LPARAM: lParam): boolean; stdcall;//回调函数


function GetChildHandle(WindowHandle: THandle; ChildClass: string; ChildNo: integer): THandle;
begin
ChildCnt := 0;
hChild := INVALID_HANDLE_VALUE;
sChildClassName := ChildClass;
SignChildNo := ChildNo;
EnumChildWindows(WindowHandle, @EnumChildHandle, 0);
result := hChild;
end;

function EnumChildHandle(AHWnd: HWnd; LPARAM: lParam): boolean; stdcall;
var
WndCaption, WndClass: array[0..254] of Char;
begin
result := True;
GetWindowText(AHWnd, @WndCaption, 254);
GetClassName(AHWnd, @WndClass, 254);
if pos(UpperCase(sChildClassName), UpperCase(WndClass)) > 0 then
begin
inc(ChildCnt);
if ChildCnt = SignChildNo then
begin
hChild := AHWnd;
Result := False;
end;
end;
end;
 
你可以用VC里的SPY++工具查看IE父窗口的类名和EDIT子控件的个数等
用DELPHI的WINSIGHT32也可以,不过效果不是很好
 
to quejian:
你的方法对IE里的控件好象不起作用,SPY也没用,我记得好象有人说过IHTMLDocument可以

但我不明白怎么个搞法。
 
绝对可以用的,我试过的

//找出一给定窗口中指定的第几个某一类控件的句柄 //
//参数说明: WindowHandle:指定窗口的句柄 //
// ChildClass :该子控件的类名称(可指定部分) //
// ChildNo :该子控件是交窗口中的第几个此类控件 //

function GetChildHandle(WindowHandle: THandle; ChildClass: string; ChildNo: integer): THandle;
function EnumChildHandle(AHWnd: HWnd; LPARAM: lParam): boolean; stdcall;//回调函数


function GetChildHandle(WindowHandle: THandle; ChildClass: string; ChildNo: integer): THandle;
begin
ChildCnt := 0;
hChild := INVALID_HANDLE_VALUE;
sChildClassName := ChildClass;
SignChildNo := ChildNo;
EnumChildWindows(WindowHandle, @EnumChildHandle, 0);
result := hChild;
end;

function EnumChildHandle(AHWnd: HWnd; LPARAM: lParam): boolean; stdcall;
var
WndCaption, WndClass: array[0..254] of Char;
begin
result := True;
GetWindowText(AHWnd, @WndCaption, 254);
GetClassName(AHWnd, @WndClass, 254);
if pos(UpperCase(sChildClassName), UpperCase(WndClass)) > 0 then
begin
inc(ChildCnt);
if ChildCnt = SignChildNo then
begin
hChild := AHWnd;
Result := False;
end;
end;
end;

function IsWindowAppeared(sWinTitle: string; var hwnd: THandle): Boolean;
var
nTicks: DWORD;
begin
Result := False;
nTicks := GetTickCount;
repeat
if (GetTickCount - nTicks) > nTEN_SECONDS then Exit;
hwnd := GetThisWindow(sWinTitle);
until hwnd <> INVALID_HANDLE_VALUE;
Result := True;
end;

if IsWindowAppeared('IE窗口的标题', hParent) then
begin
hEdit := GetChildHandle(hParent, 'EDIT', n);//n 是你所要找的edit控件的个数,调用上面的函数就够了
end;
 
TO:quejian

[Error] Unit1.pas(29): Undeclared identifier: 'ChildCnt'
[Error] Unit1.pas(30): Undeclared identifier: 'hChild'
[Error] Unit1.pas(31): Undeclared identifier: 'sChildClassName'
.....
 
TO:quejian

给我一个简单的MEMO成吗?

能用立码发分!!!!!!!!!!!!!
 
算了吧。。。散分。。。。
 
后退
顶部