气死偶了~~没人来?怎样得到*外部运行了*的程序(任务栏上)的图标或路径?(答对了还可以去csdn领分) (20分)

  • 主题发起人 主题发起人 cornermoss
  • 开始时间 开始时间
C

cornermoss

Unregistered / Unconfirmed
GUEST, unregistred user!
wnd:=Windows.FindWindow(nil,PChar(AppListBox.Items[AppNum]));
//AppListBox.Items[AppNum] 即是每个运行了的程序标题栏上的Caption
AppName_Btn[AppNum].Glyph.Handle:=GetClassLong(wnd,GCL_HICON);
我不是取那种文件的图标,我现在要取的是,在任务栏上显示了的、运行中程序的图标;
我现在可以把每个程序标题栏上的Caption取出来,怎么得到图标?谢谢
附在csdn的问题地址:
http://www.csdn.net/Expert/TopicView1.asp?id=865578
http://www.csdn.net/Expert/TopicView1.asp?id=865567

如果有高手,也请去 http://www.delphibbs.com/delphibbs/dispq.asp?lid=1192904 看看[8D]
 
这个问题要分情况来将:
1.若程序本身不带图标文件。则只能通过应用程序自身的ico属性得到
2.若程序本身带图标文件,则用WINDOWS API 可以得到
 
那大家说说,任务栏上的程序窗口的图标,微软怎么得到的呢~~~~~
 
我这里得到的不是应用程序的路径呀~~~~~我这里得到的是窗口的Handle和窗口标
题栏的caption;

或者,有没有方法,由程序的Handle得到程序的路径?

隔了一个周末,再拿出来晒晒先~~~~~
 
我不太清楚你说的程序的Handle是什么,我这个可以通过窗口句柄得到应用程序的全路径文件名。
#include <windows.h>
#include <stdio.h>

//通过窗口句柄得到创建此窗口的进程名。
//只能用于WinNT、Win2000

int main()
{
HWND hWnd;
DWORD PID;
HANDLE hProcess;
char fn[128];
DWORD (__stdcall *GMFNE)(HANDLE hProcess,
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize);
printf("Input the window HANDLE in hex format(Example: 0x12340982)/n");
scanf("%x",&hWnd);
GetWindowThreadProcessId(hWnd,&PID);
printf("PID=%X/n",PID);
hProcess=OpenProcess(PROCESS_ALL_ACCESS|PROCESS_QUERY_INFORMATION ,FALSE,PID);
if(!hProcess)
printf("Error in open process./n");
//GetModuleFileNameEx(hProcess,hmod,fn,128);
HMODULE hPsapi=LoadLibrary("PSAPI");
if(!hPsapi)
{
printf("Cannot load PSAPI./n");
return 0;
}

GMFNE=(DWORD (__stdcall *) (HANDLE, HMODULE,LPTSTR,DWORD))GetProcAddress(hPsapi,"GetModuleFileNameExA");
GMFNE(hProcess,NULL,fn,128);
printf("%s/n",fn);
FreeLibrary(hPsapi);
}
 
to NowCan:我一看到//只能用于WinNT、Win2000,我就晕了~~我正好是在win98里用呀~~
请帮帮我吧?我在csdn泡了快一周了~~还没解决的一个问题:
我想取得任务栏上的程序的图标,现在我取得了窗口标题栏的caption。
请您帮我看看代码吧?或者用其它方法实现相同的功能也可以,先谢了吧^_*

代码下载地址:http://boyzxd.myrice.com/TabShell.zip(只有2K多)
(请直接用IE下载) 没办法啦~~只好这样打扰您了呀~~~

虽然您分也多多,但还是请去领分地址:http://www.csdn.net/Expert/TopicView1.asp?id=878856
 
最终代码请看:http://www.csdn.net/Expert/TopicView1.asp?id=884142

谢谢NowCan的帮助^_*
 
后退
顶部