
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中怎么样获取应用程序的图标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)