vc如何抓取任务栏上应用程序图标

vc如何抓取任务栏上应用程序图标,第1张

stdafxh中加入用户自定义消息

#define WM_SHOWTASK WM_USER+100

应用程序文件中加入

afx_msg LRESULT onShowTask(WPARAM wParam,LPARAM lParam);//函数定义

BEGIN_MESSAGE_MAP(CMy3DDlg, CDialog)

//{{AFX_MSG_MAP(CMy3DDlg)

:

ON_MESSAGE(WM_SHOWTASK,onShowTask) //加入对自定义消息的绑定线程

END_MESSAGE_MAP()

最后是对于应用程序图标的抓取,这里是我在工作中写过的一个例子,程序执行后在任务栏上显示一个图标,可以对图标进行鼠标 *** 作

RESULT CMy3DDlg::onShowTask(WPARAM wParam,LPARAM lParam)

//wParam接收的是图标的ID,而lParam接收的是鼠标的行为

{

if(wParam!=IDR_MAINFRAME)

return 1;

switch(lParam)

{

case WM_RBUTTONUP://右键起来时d出快捷菜单,这里只有一个“关闭”

{

LPPOINT lpoint=new tagPOINT;

::GetCursorPos(lpoint);//得到鼠标位置

CMenu menu;

menuCreatePopupMenu();//声明一个d出式菜单

//增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已隐藏),将程序结束。

menuAppendMenu(MF_STRING,WM_DESTROY,"关闭");

//确定d出式菜单的位置

menuTrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);

//资源回收

HMENU hmenu=menuDetach();

menuDestroyMenu();

delete lpoint;

}

break;

case WM_LBUTTONDBLCLK://双击左键的处理

{

this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿

DeleteTray();

}

break;

}

return 0;

}

若满意请及时采纳,谢谢

选择软件的地址

2

打开 图标提取器

3

输入软件地址

4

必须要把软件地址的双引号去掉

5

单击-保存图标-在图标上,右键保存即可!

你说的是32x32或16x16的标准图标(ICON) 还是屏幕截图 如果是前者, 可以用SHGetFileInfo(); EXE里可能有多个ICON, 如果想随便拿, 要用到LoadResource系列的API

Option Explicit

'功能:

' '获取文件(EXE、DLL)中包含的图标资源

'

'涉及到的API

' ExtractIcon

' DrawIcon

'

'来源:不详

'

'API声明

'Private Declare Function ExtractIconEx Lib "shell32dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long

'功能:获取指定文件的图标

'参数:

' hInst 应用程序句柄

' lpszExestrFile EXE、DLL文件名

' nIconIndex 图标索引

'返回值:

' 当nIconIndex为-1时,返回文件包含的图标总个数

' 当nIconIndex为其他值时,返回文件的第nIconIndex个图标的句柄

Private Declare Function ExtractIcon Lib "shell32dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExestrFile As String, ByVal nIconIndex As Long) As Long

'功能:在指定的绘图设备上绘制图标

'参数:

' hdc 绘图设备句柄

' x 水平坐标(像素)

' y 垂直坐标(像素)

' hIcon 要绘制的图标句柄

Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long

Private Sub Command1_Click()

Dim i As Long

Dim j As Long

Dim k As Long

Dim lngCount As Long '图标总数

Dim strFile As String '文件名

strFile = "D:\小工具\arswp2\arswpexe"

lngCount = ExtractIcon(ApphInstance, strFile, -1)

If lngCount > 0 Then

Do

j = ExtractIcon(ApphInstance, strFile, i)

k = DrawIcon(Picture1hdc, 10 + 40 i, 10, j)

i = i + 1

If i = lngCount Then

Exit Sub

End If

Loop

Else

j = MsgBox(strFile & "文件中没有图标!")

End If

End Sub

1、按Windows键,进入计算机开始页面,然后再搜索框中输入要查找的应用名称。

2、输入QQ后,就会出现QQ应用,鼠标右键点击QQ,然后选择打开文件所在位置。

3、点击打开文件所在位置后,就可以进入QQ所在文件夹了,后缀为exe的应用程序就是图标文件了。

以上就是关于vc如何抓取任务栏上应用程序图标全部的内容,包括:vc如何抓取任务栏上应用程序图标、怎样从应用程序中提取图标、MFC中怎么样获取应用程序的图标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9845343.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存