如何获取系统中运行着的指定进程或窗口的图标?

解决方案 »

  1.   

    两种方法:
    (1) SDK函数 SHGetFileInfo 或使用 ExtractIcon获得图标资源的 handle,
    (2) SDK函数 SHGetFileInfo获得有关文件的 很多信息,如大小图标,属性,类型等.
    Example(1): 在程序窗口左上角显示 NotePad图标.
    void CSampleView: OnDraw(CDC * pDC)
    {
    if( :: SHGetFileInfo(_T("c:\\pwin95\\notepad.exe"),0,
    &stFileInfo,sizeof(stFileInfo),SHGFI_ICON))
    {
    pDC ->DrawIcon(10,10,stFileInfo.hIcon);
    }
    }
    Example(2): 同样功能,Use ExtractIcon Function
    void CSampleView:: OnDraw(CDC *pDC)
    {
    HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T
    ("NotePad.exe"),0);
    if (hIcon &&hIcon!=(HICON)-1)
    pDC->DrawIcon(10,10,hIcon);
    }
      

  2.   

    先列举当前系统的进程,找到你要的,取出进程的完整路径,(在www.vckbase.com)上现成的
    的代码
    然后你在再用楼上( tonyswe(tong) )的方法,就可以了
      

  3.   

    SHGetFileInfo 或使用 ExtractIcon获得图标资源的 handleWINSHELLAPI DWORD WINAPI SHGetFileInfo(
    LPCTSTR pszPath, 
    DWORD dwFileAttributes, 
    SHFILEINFO FAR *psfi, 
    UINT cbFileInfo, 
    UINT uFlags );HICON ExtractIcon(
      HINSTANCE hInst,          // instance handle
      LPCTSTR lpszExeFileName,  // file name
      UINT nIconIndex           // icon index
    );