我有一個問題:我只需要獲得列表中所有窗口的標題,標題是我的意思是「記事本」,「總指揮官」 - 只是顯示在窗口頂部的文本。如何獲取當前正在運行的實際窗口的標題?
到目前爲止,我在這裏得到了
function EnumWindowProc(hHwnd: HWND; lParam : integer): boolean; stdcall;
var
pPid : DWORD;
title, ClassName : string;
begin
if (hHwnd=NULL) then
begin
result := false;
end
else
begin
GetWindowThreadProcessId(hHwnd,pPid);
SetLength(ClassName, 255);
SetLength(ClassName,
GetClassName(hHwnd,
PChar(className),
Length(className)));
SetLength(title, 255);
SetLength(title, GetWindowText(hHwnd, PChar(title), Length(title)));
OptionsForm.ListBox1.Items.Add(title);
OptionsForm.Memo1.Lines.Add
('Class Name = ' + className +
'; Title = ' + title +
'; HWND = ' + IntToStr(hHwnd) +
'; Pid = ' + IntToStr(pPid));
Result := true;
end;
end;
但很好,它返回形形色色的「窗口」,不同側重點的形式等等。我怎樣才能得到只有「主」的呢?
下面是結果的樣本:
Class Name = Shell_TrayWnd; Title = ; HWND = 65898; Pid = 3776
Class Name = CiceroUIWndFrame; Title = CiceroUIWndFrame; HWND = 65976; Pid = 3776
Class Name = THelpInsightWindowImpl; Title = HelpInsightWindow; HWND = 1577734; Pid = 4852
Class Name = THelpInsightWindowImpl; Title = HelpInsightWindow; HWND = 591660; Pid = 4852
Class Name = TTokenWindow; Title = CodeParamWindow; HWND = 985436; Pid = 4852
Class Name = TaskSwitcherWnd; Title = Přepínání úloh; HWND = 66824; Pid = 3776
Class Name = tooltips_class32; Title = ; HWND = 198982; Pid = 1768
Class Name = tooltips_class32; Title = ; HWND = 66046; Pid = 3776
Class Name = _SearchEditBoxFakeWindow; Title = ; HWND = 66024; Pid = 3776
Class Name = tooltips_class32; Title = ; HWND = 66008; Pid = 3776
Class Name = tooltips_class32; Title = ; HWND = 131538; Pid = 3776
Class Name = Desktop User Picture; Title = Magicmaster; HWND = 65982; Pid = 3776
Class Name = DV2ControlHost; Title = Nabídka Start; HWND = 65978; Pid = 3776
Class Name = tooltips_class32; Title = ; HWND = 327840; Pid = 1768
Class Name = tooltips_class32; Title = ; HWND = 460808; Pid = 1768
Class Name = CTSCTooltip; Title = ; HWND = 266710; Pid = 2792
Class Name = Auto-Suggest Dropdown; Title = ; HWND = 69884; Pid = 4732
Class Name = Auto-Suggest Dropdown; Title = ; HWND = 69802; Pid = 4732
Class Name = TaskbarNotifierClass; Title = DAP Message Center; HWND = 68924; Pid = 4732
Class Name = tooltips_class32; Title = ; HWND = 134356; Pid = 1992
Class Name = ATKOSD; Title = ATKOSD; HWND = 65884; Pid = 3636
預先感謝您!
那麼,通過決定什麼「主」的意思開始。 – 2011-05-10 15:01:51
Rob的權利。你在找什麼。作爲一個瘋狂的猜測,我懷疑你只需要在任務欄中有按鈕的窗口。 – 2011-05-10 15:13:28
從[MSDN](http://msdn.microsoft.com/en-us/library/cc144179(VS.85).aspx#Managing_Taskbar_But):每當應用程序創建一個窗口時,Shell在任務欄上創建一個按鈕不擁有。爲確保窗口按鈕位於任務欄上,使用WS_EX_APPWINDOW擴展樣式創建一個無主窗口。 – 2011-05-10 15:19:38