我有一个代码在win32框中列出正在运行的应用程序,然后显示他们的图标.
到目前为止这么好,我得到应用程序的hwnd,然后调用GetClassLong(hwnd,GCL_HICONSM),一切都很好.
但是java应用程序的情况很难处理,因为回答我的调用的过程是javaw.exe,而不是闪亮的pimpy java应用程序,谁有一个如此漂亮的图标......
我还试着GetWindowThreadProcessId,但是唉,这是返回的javaw的PID ...
有一种方法可以做到这一点,因为任务管理器(alt + tab)显示好图标.
我回答了我自己的问题,感谢PhiLho让我走上了正确的轨道:来自Codeproject的一篇文章,其中有正确的算法来获取一个窗口图标(不管它是不是java):
//第一次尝试:
SendMessageTimeout(WM_GETICON)
//如果找不到图标,请尝试
GetClassLong(GCL_HICONSM)
//如果仍然没有图标,请尝试
SendMessageTimeout(WM_WM_QUERYDRAGICON)
//如果仍然没有图标,则注定要失败,返回错误或无效图标
出于某种原因,java应用程序会回答第一个调用,但不能回答其他问题,这似乎是由javaw.exe处理的.
再次感谢PhiLho.
归档时间: |
|
查看次数: |
510 次 |
最近记录: |