获取当前活动的IE标题栏和地址栏的信息(源码)后,如何去掉程序名??? ( 积分: 100 )

  • 主题发起人 主题发起人 dngjzx
  • 开始时间 开始时间
D

dngjzx

Unregistered / Unconfirmed
GUEST, unregistred user!
//取IE标题和地址栏函数
function EnumChildWindowsProc(hwnd: Integer; lparam: Longint): Boolean; stdcall;
var
buffer: array[0..255] of char;
begin
Result := True;
GetClassName(hwnd,buffer,256);
if StrPas(Buffer)='Edit' then
begin
SendMessage(hwnd,WM_GETTEXT,256,lparam);
Result:=False;
end;
end;

procedure TForm1.FormActivate(Sender: TObject);
var
hwnd: Integer;
buffer: array[0..255] of char;
begin
hwnd := FindWindow('IEFrame',nil);
if hwnd<> 0 then
begin
EnumChildWindows(hwnd,@EnumChildWindowsProc,Integer(@buffer[0]));
edit2.Text:=(StrPas(buffer));
GetWindowText(hwnd,buffer,51);//取标题栏的前50个字符
edit1.Text:=(strpas(buffer));

end;
end;

这样用GetWindowText得到的信息是整个标题栏的信息,比如
http://www.delphibox.com - Microsoft Internet Explorer
如何只取http://www.delphibox.com呢?
 
//取IE标题和地址栏函数
function EnumChildWindowsProc(hwnd: Integer; lparam: Longint): Boolean; stdcall;
var
buffer: array[0..255] of char;
begin
Result := True;
GetClassName(hwnd,buffer,256);
if StrPas(Buffer)='Edit' then
begin
SendMessage(hwnd,WM_GETTEXT,256,lparam);
Result:=False;
end;
end;

procedure TForm1.FormActivate(Sender: TObject);
var
hwnd: Integer;
buffer: array[0..255] of char;
begin
hwnd := FindWindow('IEFrame',nil);
if hwnd<> 0 then
begin
EnumChildWindows(hwnd,@EnumChildWindowsProc,Integer(@buffer[0]));
edit2.Text:=(StrPas(buffer));
GetWindowText(hwnd,buffer,51);//取标题栏的前50个字符
edit1.Text:=(strpas(buffer));

end;
end;

这样用GetWindowText得到的信息是整个标题栏的信息,比如
http://www.delphibox.com - Microsoft Internet Explorer
如何只取http://www.delphibox.com呢?
 
- 用来猜分吧
 
[:)] 在注册表中可以查到IE的标题 -[HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/Main]
"Window Title"="IE的标题 "

在这句 GetWindowText(hwnd,buffer,51);//取标题栏的前50个字符
后边把用buffer:=copy(buffer,1,pos('IE的标题'))就可以了吧
 
TO goddy:
拆分‘—’的方法我估计行不通,如果有网站的IE标题是这样
软件下载-某某软件园-Microsoft I.....
那么很可能拆分就会出错的
TO luckyso888:
你的方法是可行的,但是如何正确读出"Window Title"="IE的标题 "
而且读出的值必须是当前活动的IE窗口标题的Title值呀,我按照你的指定在注册表中未能找到 Window Title 这一键,我的系统是xp+sp2
 
获得 HTML 文档的 Title
 
怎么获得?我是菜鸟,能不能详细一点,要用什么控件吗?
 
当前活动的IE窗口标题的Title值是保存在注册表中的吧。关闭IE后才会改变这个值。我的系统是2000。
XP不知道了。。你可以在regedit.exe中查找一下
 
不用找了,找了也没用,
引用:关闭IE后才会改变这个值

我要得到的就是当前IE窗口的Title
 
我说的是 -后面的字...
 
读写注册表的代码不要我帮你写吧。。请尽快结贴~~!
 
不用,但是有一点我必须说一下,就在在你所说的键值底下没有Window Title值,而且main下面没有一项键值是Microsoft Internet Exploer的,请明示,分不会少你的,放心
 
折分"-"一般是可行的,你可以从字符串尾部向头部检测.
 
为此问题。。我专门装了个XP。。可是我装的怎么注册表键值还是
[HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/Main] 呢。。
分真是不好挣啊~~[:(]

用从后向前查“-”字符也要考虑是不是有多个“-”字符在标题中。。所以还是查注册表中当前标题值好些
 
晕倒,有这空你不能给偶个demo啊
真晕
HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/Main
这个键值我也有啊
是没有windows title这一项而已,我菜,高手不要笑我
 
如果成功,我再加100分
 
谁能帮我写一下从后向前拆分'-'的代码?给100分了我对字符串的操作真的一无所知
 
首先取得标题字符串,然后使用pos('-',字符串)进行定位,如果是
http://www.delphibox.com - Microsoft Internet Explorer
这种情况,一次就可以
如果有
软件下载-某某软件园-Microsoft Internet Explorer
这种情况的话,首先截取0到第一次的定位的位置,然后递归调用截到最后一个,把位置存到一个变量里边,然后使用copy截取,即可完成你要的功能,具体函数自己写吧 很简单.
 
给你参考一下我N年前写的垃圾代码 是把下边的字符串读到stringgrid中,下边就用到递归然后定位 , 这个字符,你参考一下很好写出.当然高手不要BS我的代码垃圾,呵呵 [:D]
[red]20050801,董娜,女,河南平顶山,410423197910020073[/red]
procedure localstr(line:string;col:integer;const row:integer=1;const k:integer=0);
var i,j:integer; //j控制stringgrid中的列
ks:integer;//k控制读取的列
temp:string; //临时字符串,添加到stringgrid中使用
begin
ks:=k;
j:=row; //控制列数
i:=pos(',',line); //i控制查找,字符
if i<>0 then //如果找到
begin
ks:=ks+1;
case ks of //case语句控制1,2,5时候写进stringgrid中
1,2,5:
begin
temp:=copy(line,0,i-1);
Form1.StringGrid1.Cells[j,col]:=temp;
line:=copy(line,i+1,length(line));
j:=j+1;
localstr(line,col,j,ks);
end;
3,4:
begin
line:=copy(line,i+1,length(line));
localstr(line,col,j,ks);
end;
end;
end
else //没有找到证明已经到尾部
Form1.StringGrid1.Cells[j,col]:=line;

end;
 
代码就不测试了..可是要知道IE标题可不会这么听话的..

如果有这样的标题怎么办.."....电话号码..XXX - XXX - XX - Microsoft Internet Explorer"

注册表中没有的话,,看是不是新建这个键吧
 

Similar threads

后退
顶部