我想再单击桌面图标的时候,能够得到图标的句柄,dll程序如下,但是链接的时候有错误2> 正在创建库 D:\pet\Debug\Hook.lib 和对象 D:\pet\Debug\Hook.exp
2>Hook.obj : error LNK2019: 无法解析的外部符号 __imp__ImageList_GetIcon@12,该符号在函数 _GetMsgProc@12 中被引用
2>D:\pet\Debug\Hook.dll : fatal error LNK1120: 1 个无法解析的外部命令不知道该怎么解决使用这种思路可以获取到桌面图标句柄么?比较迷茫#include "windows.h"
#include <stdio.h>
#include <commctrl.h>
#include <shobjidl.h>
HWND hDeskTop;
HIMAGELIST temp_Imagelist;
HICON temp_icon;extern "C" _declspec(dllexport) LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{ if(nCode < 0 || nCode == HC_NOREMOVE)
return ::CallNextHookEx(g_hMouse, nCode, wParam, lParam); MSG *temp_msg =(MSG *)lParam;
hDeskTop = ::FindWindow(L"progman",NULL);
hDeskTop = ::FindWindowEx(hDeskTop,0,L"shelldll_defview", NULL);
hDeskTop = ::FindWindowEx(hDeskTop, 0, L"syslistview32", NULL); if (wParam == PM_REMOVE)
{
if(temp_msg->hwnd == hDeskTop)
{
if( temp_msg->message == WM_LBUTTONDOWN ) {
temp_Imagelist = ListView_GetImageList(hDeskTop,LVSIL_NORMAL);
temp_icon = WINAPI ImageList_GetIcon(temp_Imagelist,1,ILD_NORMAL); //::MessageBox(NULL,L"1111",L"1111",MB_OK);
}
} }
return 0;
}
extern "C" _declspec(dllexport) void SetDesktopIconHook()
{
if(g_hMouse != NULL)
{
UnhookWindowsHookEx(g_hMouse);
}
g_hMouse = SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,g_hstance,0);
}
2>Hook.obj : error LNK2019: 无法解析的外部符号 __imp__ImageList_GetIcon@12,该符号在函数 _GetMsgProc@12 中被引用
2>D:\pet\Debug\Hook.dll : fatal error LNK1120: 1 个无法解析的外部命令不知道该怎么解决使用这种思路可以获取到桌面图标句柄么?比较迷茫#include "windows.h"
#include <stdio.h>
#include <commctrl.h>
#include <shobjidl.h>
HWND hDeskTop;
HIMAGELIST temp_Imagelist;
HICON temp_icon;extern "C" _declspec(dllexport) LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{ if(nCode < 0 || nCode == HC_NOREMOVE)
return ::CallNextHookEx(g_hMouse, nCode, wParam, lParam); MSG *temp_msg =(MSG *)lParam;
hDeskTop = ::FindWindow(L"progman",NULL);
hDeskTop = ::FindWindowEx(hDeskTop,0,L"shelldll_defview", NULL);
hDeskTop = ::FindWindowEx(hDeskTop, 0, L"syslistview32", NULL); if (wParam == PM_REMOVE)
{
if(temp_msg->hwnd == hDeskTop)
{
if( temp_msg->message == WM_LBUTTONDOWN ) {
temp_Imagelist = ListView_GetImageList(hDeskTop,LVSIL_NORMAL);
temp_icon = WINAPI ImageList_GetIcon(temp_Imagelist,1,ILD_NORMAL); //::MessageBox(NULL,L"1111",L"1111",MB_OK);
}
} }
return 0;
}
extern "C" _declspec(dllexport) void SetDesktopIconHook()
{
if(g_hMouse != NULL)
{
UnhookWindowsHookEx(g_hMouse);
}
g_hMouse = SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,g_hstance,0);
}
pragma comment(lib, "comctl32.lib")如果不能解决问题的话,把这个.c文件改成.cpp吧
Import library comctl32.lib