首页
社区
课程
招聘
怎么获取鼠标左键选中文件的文件名字
发表于: 2012-11-8 17:38 11521

怎么获取鼠标左键选中文件的文件名字

2012-11-8 17:38
11521
如题:当鼠标左键单击某一文件时,也就是选中了这个文件,这时候怎么获取到他的文件名字呢?
VC里有这样的函数吗?
希望懂的朋友帮帮忙。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1501
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
http://msdn.microsoft.com/zh-cn/subscriptions/downloads/cc164095.aspx
这里的文章可能对你有帮助。去看看吧
2012-11-8 18:46
0
雪    币: 332
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我看不懂呢,不过还是要谢谢你。
2012-11-9 13:44
0
雪    币: 7248
活跃值: (5078)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
首先获取SysListView32的句柄(hHwnd)
可以用FindWindow获取。
我觉得用鼠标钩子很方便,拦截到鼠标左击的时候就可以获得SysListView32了。

获得hHwnd后,使用SendMessage获取选中的文件。
int iItem=::SendMessage(mHwnd, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
//iItem是文件在SysListView32的索引
然后,根据索引获得文件名
ListGetText(mHwnd,iItem,Buf);
ListGetText函数如下:
void ListGetText(HWND hWnd, int iItem,char *pName)
{
        const int BUFSIZE = 1024;
        char   buf[BUFSIZE];
        DWORD dwProcess;
    HANDLE hProcess;
        LVITEM*   pItem = (LVITEM*)buf;
        ::GetWindowThreadProcessId(hWnd,   &dwProcess);
        //   申请内存
    hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, false, dwProcess);
        LPLVITEM   pTemp = (LPLVITEM)::VirtualAllocEx(hProcess, 0, BUFSIZE, MEM_COMMIT, PAGE_READWRITE);
    memset(pItem, 0, sizeof(buf));
        pItem->pszText = (char*)((char*)pTemp + sizeof(LVITEM));
    pItem->cchTextMax = BUFSIZE - sizeof(LVITEM);
    pItem->iSubItem = 0; //列
    pItem->mask = LVIF_TEXT;
    DWORD   dWord = 0;
    ::WriteProcessMemory(hProcess,   pTemp,   pItem,   sizeof(buf), &dWord);
    int nChar = ::SendMessage(hWnd,LVM_GETITEMTEXT,(WPARAM)iItem, (LPARAM)pTemp);
        ::ReadProcessMemory(hProcess,   pTemp,   pItem,   sizeof(buf), &dWord);
    pItem->pszText   =   (char*)((char*)pItem   +   sizeof(LVITEM));
    //   释放内存
    ::VirtualFreeEx(hProcess,   pTemp,   BUFSIZE,   MEM_RELEASE);
    ::CloseHandle(hProcess);
    sprintf(pName, "%s", pItem->pszText);

}
2012-11-10 15:14
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
很有用的。不错啊。
2013-10-6 16:48
0
游客
登录 | 注册 方可回帖
返回
//