奇怪的问题:是什么影响了获取窗口标题?
我的程序是一个控制台程序,其中有枚举窗口函数,运行正常,能枚举窗口并显示窗口标题,
但是我在程序中又加入了一段抓屏的程序和内存流操作后,抓屏正常,而枚举窗口却无法了。
逐步调试发现:程序枚举窗口后,用GetWindowText获取标题,开始都正常,枚举到某一个窗体时,GetWindowsText处出错,而且不提示错误,程序就死在那儿。
一旦把抓屏和内存流操作的代码去掉后,枚举就又会一切正常,两段代码之间应该没有任何关系啊?怎么会这样呢?当不加抓屏时,程序大小197k,加了后493k
百思不得其解,痛苦中,大家帮我分析一下可能的原因?
枚举代码如下(其中WinListStr为全局变量):
function EnumWindowsProc(hwnd:HWND;lParam:DWORD ):boolean; stdcall;
var
szCaption: array[0..256] of Char;
begin
if GetWindowText(hwnd,szCaption,sizeof(szCaption))<>0 then
if (length(trim(szCaption))>0) and (szCaption<>'Default IME') then
WinListStr:=WinListStr+szCaption+','; //句柄+名称
result:= TRUE;
end;
Function WinList:String;
begin
WinListStr:='';
EnumWindows(@EnumWindowsProc,0);
Result:=WinListStr;
end;