如何取得其他程序的窗口名称?(100分)

  • 主题发起人 主题发起人 L.Ming
  • 开始时间 开始时间
L

L.Ming

Unregistered / Unconfirmed
GUEST, unregistred user!
问题还要细分一下:
1.如何取得当前系统所有运行程序主窗体的标题(Caption)以及类名,写入ComboBox中.
2.如何根据在ComboBox中选的主窗体标题或是类名,取得选定程序的所有子窗体标题(Caption)以及类名.写入新的ComboBox中
3.根据选择的子窗体,取得子窗体下面文本框的值.
4.还有一个比较特别的,怎么取得当前窗体下TStatusBar每二个Item的值.
(对于回答的高手的一点请求,能指出代码实现时,是实现哪一个小问题的吗?)
 
var
i:integer;
p:Pointer;
begin
for i:=0 to ComponentCount-1 do
begin
Memo1.Lines.Add(Components.ClassName);
if Components is TCustomForm then
Memo1.Lines.Add(TForm(Components).Caption);
Memo1.Lines.Add(Form1.Caption);
end;
end;
 
procedure TForm1.button1Click(Sender: TObject);
begin
clearcontrol(form1);
end;

procedure addCaption(s:Tform);
var
i:integer;
p:Pointer;
begin
for i:=0 to s.ComponentCount-1 do
begin
Memo1.Lines.Add(s.Components.ClassName);
if Components is TCustomForm then
Memo1.Lines.Add(s.Components.Caption);
Memo1.Lines.Add(s.Caption);
end;
end;
 
procedure TForm1.btn1Click(Sender: TObject);
var
hCurrentWindow: HWnd;
szText: array[0..254] of char;
begin
lst1.Items.Clear;
hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);
while hCurrentWindow <> 0 do
begin
if GetWindowText(hCurrentWindow, @szText, 255)>0 then
lst1.Items.Add(StrPas(@szText));
hCurrentWindow:=GetWindow(hCurrentWindow, GW_HWNDNEXT);
end;
end;
 
T0 蓝叶菱,jesse_liu:你们的代码是实现当前窗体下的控件类名?其他的呢?
T0 超级牛X:老兄的代码还没有试.但看样子是取控件的值的.是不是?
 
上下合并就OK了。
 
TO 蓝叶菱:不明白.
请各位高手将细节说明白一点,谢谢
 
function GetForms: Boolean;
var
hCurrentWindow: HWnd;
szText: array[0..254] of char;
begin
ListBox1.Clear;
hCurrentWindow := GetWindow(GetActiveWindow, GW_HWNDFIRST);
while hCurrentWindow <> 0 do
begin
if GetWindowText(hCurrentWindow, @szText, 255) > 0 then
ListBox1.Items.Add(StrPas(@szText));
hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
end;
Result := true;
end;
 
看来大家都是以第三个问题为主进行解答.
还是请大家回答第一个和第四个小问题吧.
1.如何取得当前系统所有运行程序主窗体的标题(Caption)以及类名,写入ComboBox中.
4.还有一个比较特别的,怎么取得当前窗体下TStatusBar每二个Item的值.
 
关注一下
最近想做同样的事情
 
后退
顶部