我有一个应用程序,点最小化以后总是不能缩小到右下角,而是留在任务栏上,我想请教;我可不可以在该进程中放一个挂钩扑捉最小化消息,然后利用GetMsgProc()实现当点击窗口最小化时,可以缩小到右下角并出现一个图标,我可以从右下角重新激活该应用程序窗口?有高人具体指点一下思路吗?小弟不胜感激!

解决方案 »

  1.   

    那个应用程序没有这个功能,不知道开发这个软件的人是怎么想的,最小化以后根本无法最小化到系统托盘,而还在任务栏上。我看windows核心编程22章,想是不是利用挂钩来注入DLL来实现这个功能?有高手指点么?
      

  2.   

    DLL钩子注入不知可行不可行,不过如果能找到进程,可以尝试向进程通信……
      

  3.   

    可以用Hook,不过Hook的不利影响较多,能不用尽量不要用。
    提一种简单的方法:你的程序定时检查目标窗口状态,发现目标窗口最小化后将其隐藏,并显示图标。
    如果觉得定时检查不好,可以用另一种方式:做一个DLL,用远程线程方式将其注入到目标进程,DLL通过SetWindowLong修改目标窗口的窗口函数地址,使窗口消息先经过自己的函数,在自己的函数中判断最小化消息并做处理。
      

  4.   


    这位大虾说的不错。我觉得还是做DLL好些。有不明白的,再上来请教!