高难度问题对于我来说! 里面的代码无法实现功能要求 SOS

IT-司马青衫
壹号网络官方账号
2004-04-10 11:02:21
HWND hDes = GetDesktopWindow();
EnumChildWindows(hDes,(WNDENUMPROC)EnumProc,0);
//---------------------------------------------------------------------------
BOOL CALLBACK EnumProc(HWND hwnd,LPARAM param)
{
if(!IsIconic(hwnd)) //函数功能:该函数确定给定窗口是否是最小化(图标化)的窗口。
if(IsWindowVisible(hwnd) && IsWindowEnabled(hwnd)) //可见并且又效
if(hwnd!=GetActiveWindow()&& GetParent(hwnd)==NULL)//看其是否是主窗口并且是非活动窗口
DefWindowProc(hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
return TRUE;
}
//---------------------------------------------------------------------------

功能要求:
把任务栏中所有窗口的程序最小化, 除了用户当前使用的程序外.
自然不包括拖盘的程序. 最小化是相当于单击程序的主窗体最小化按扭
在任务管理器中,使得内存占用量减小到少,从而达到内存优化的目的
...全文
28 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT-司马青衫 2004-05-10
  • 打赏
  • 举报
回复
一开始可以让用户所用的软件不最小化

现在不行啦
IT-司马青衫 2004-04-23
  • 打赏
  • 举报
回复
后续问题:
为什么把这两个API函数就不行啦?

if(hWnd!=GetForegroundWindow())
DefWindowProc(hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);

必须换成这两个就行!!! 谁说说 工作原理
if(hWnd!=GetForegroundWindow())
SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
IT-司马青衫 2004-04-23
  • 打赏
  • 举报
回复
你没有看懂功能要求啊!!!
如果用户正在使用的程序是不能最小化的,
比如说他正在BCB写程序,同时打开了WORD,PHOTHOP,PDF READ 等大型软件占用了大量的内存!
所以要做个小程序 把非BCB的软件最小化.

你的就是不是自己的全干掉!!!
lovebcb 2004-04-22
  • 打赏
  • 举报
回复
大白鲨,我又想了想,其实不用费那么多事,加上下面这句,把自己这个窗口摘出来,就好了 :)
if(hWnd!=Application->Handle)

SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
换成
DefWindowProc(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);达不到效果?
是同样的效果啊~

//---------------------------------------------------------------------------
BOOL CALLBACK EnumProc(HWND hWnd,LPARAM param)
{
if(!IsIconic(hWnd)) //函数功能:该函数确定给定窗口是否是最小化(图标化)的窗口。
if(IsWindowVisible(hWnd) && IsWindowEnabled(hWnd)) //可见并且有效
if(hWnd!=GetActiveWindow()&& GetParent(hWnd)==NULL)//看其是否是主窗口并且是非活动窗口
if(hWnd!=Application->Handle) // 记得把自己摘出来,呵呵~
SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
return TRUE;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND hDes = GetDesktopWindow();
EnumChildWindows(hDes,(WNDENUMPROC)EnumProc,0);
}
//---------------------------------------------------------------------------
IT-司马青衫 2004-04-21
  • 打赏
  • 举报
回复
为什么用
DefWindowProc(hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);达不到效果?
yesry 2004-04-21
  • 打赏
  • 举报
回复
我也不知道,罗列window的时候和GetActiveWindow的句柄不一样。
IT-司马青衫 2004-04-20
  • 打赏
  • 举报
回复
看懂了该代码!!!

请问为什么以下两个API就不能达到效果啦????

if(hWnd!=GetForegroundWindow())
SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
IT-司马青衫 2004-04-20
  • 打赏
  • 举报
回复
yesry(噎死你)
好我去看看!
yesry 2004-04-19
  • 打赏
  • 举报
回复
主要是找到特征。

long g_WindowLong;
BOOL CALLBACK EnumProc(HWND hWnd,LPARAM param)
{
if(!IsIconic(hWnd)) //函数功能:该函数确定给定窗口是否是最小化(图标化)的窗口。
if(IsWindowVisible(hWnd) && IsWindowEnabled(hWnd)) //可见并且又效
if(hWnd!=GetActiveWindow() && GetParent(hWnd)==NULL)//看其是否是主窗口并且是非活动窗口
if(g_WindowLong!=GetWindowLong(hWnd,GWL_HINSTANCE))
{
SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
}else
{
g_WindowLong=g_WindowLong;
}
return true;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND hActiveWindow=GetActiveWindow();
g_WindowLong=GetWindowLong(hActiveWindow,GWL_HINSTANCE);
HWND hDes = GetDesktopWindow();
EnumChildWindows(hDes,(WNDENUMPROC)EnumProc,0);
}
//---------------------------------------------------------------------------
lovebcb 2004-04-18
  • 打赏
  • 举报
回复
呵呵,自我感觉良好。
:)
lovebcb 2004-04-14
  • 打赏
  • 举报
回复
//大白鲨,我来晚了,你看看这样改改,行不行?

bool __stdcall EnumProc(HWND hWnd,long)
{
if(!IsIconic(hWnd)) //函数功能:该函数确定给定窗口是否是最小化(图标化)的窗口。
if(IsWindowVisible(hWnd) && IsWindowEnabled(hWnd)) //可见并且又效
if(hWnd!=GetActiveWindow() && GetParent(hWnd)==NULL)//看其是否是主窗口并且是非活动窗口
if(hWnd!=GetForegroundWindow())
SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
return true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND hDes = GetDesktopWindow();
EnumChildWindows(hDes,(WNDENUMPROC)EnumProc,0);
}
IT-司马青衫 2004-04-11
  • 打赏
  • 举报
回复
等待中....

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧