如何获取其他应用程序上LISTVIEW的内容?up 有分! LVM_?????系列消息。应该可以得到。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用消息LVM_????,下面例子是一个Mouse Hook,用来得到用户在资源管理中实时选中的文件,不过是C++Builder代码的:----------------------------------------------LRESULT CALLBACK MouseHook(int nCode,WPARAM wParam,LPARAM lParam){ if(nCode<0) return CallNextHookEx(MouseHookID,nCode,wParam,lParam); if(HookWindowHandle==NULL) { HookWindowHandle=FindWindow(HookClassName.c_str(),NULL); AppWindow=GetWindow(HookWindowHandle,GW_OWNER); } if((int)wParam != WM_LBUTTONUP) return 0; MOUSEHOOKSTRUCT *mst=(MOUSEHOOKSTRUCT*)lParam; //*/ HWND hLV; TPoint P; char Buf[64]; P.x = mst->pt.x; P.y = mst->pt.y; hLV = WindowFromPoint(P); ZeroMemory(Buf,64); GetClassName(hLV,Buf,64); if(AnsiString(Buf) == "SysListView32") { LV_ITEM Item; int ItemCount;// char *SelFileNameBuf=new char[64]; char SelFileNameBuf[64]; ItemCount = ListView_GetItemCount(hLV); if(ItemCount > 0) { AnsiString S; bool IsSuc = false; for(int i=0; i < ItemCount; i++) { ZeroMemory(SelFileNameBuf,64); Item.iItem=i; Item.iSubItem=0; Item.mask = LVIF_TEXT | LVIF_STATE; Item.stateMask = LVIS_FOCUSED; //Item.state = -1; Item.pszText = SelFileNameBuf; Item.cchTextMax = 64; if(ListView_GetItemState(hLV,i,LVIS_FOCUSED) != LVIS_FOCUSED) { //SendMessage(HookWindowHandle,WM_SETTEXT,0,(LPARAM)AnsiString("Error Query State="+IntToStr(i)).c_str()); continue; } if(ListView_GetItem(hLV,&Item))// ListView_GetItemText(hLV,i,0,SelFileNameBuf,64); { if(Item.state & LVIS_FOCUSED == LVIS_FOCUSED) { // Get Folder first HWND hTemp; AnsiString CurrentFolder; //*/ hTemp = FindWindow("ExploreWClass",NULL); hTemp = FindWindowEx(hTemp,0,"WorkerW",NULL); hTemp = FindWindowEx(hTemp,0,"ReBarWindow32",NULL); hTemp = FindWindowEx(hTemp,0,"ComboBoxEx32",NULL); hTemp = FindWindowEx(hTemp,0,"ComboBox",NULL); hTemp = FindWindowEx(hTemp,0,"Edit",NULL); if(hTemp != NULL) { char ClassBuf[32]; ZeroMemory(ClassBuf,sizeof(ClassBuf)); GetClassName(hTemp,ClassBuf,sizeof(ClassBuf)); if(AnsiString(ClassBuf) == "Edit") { char FolderBuf[128]; ZeroMemory(FolderBuf,sizeof(FolderBuf)); GetWindowText(hTemp,FolderBuf,sizeof(FolderBuf)); CurrentFolder = AnsiString(FolderBuf); if(CurrentFolder[CurrentFolder.Length()] != '\\') CurrentFolder += "\\"; } } //*/ IsSuc = true; SendMessage(HookWindowHandle,WM_SETTEXT,0,(LPARAM)AnsiString("Index="+IntToStr(i)+" Select Filename="+AnsiString(CurrentFolder + SelFileNameBuf)).c_str()); break; } else S=S + ",Index=" + IntToStr(i) + " State="+IntToStr(Item.state) + " FN=" + AnsiString(SelFileNameBuf); } //else S=S + "," + IntToStr(i) +" Err="+SysErrorMessage(GetLastError());//SendMessage(HookWindowHandle,WM_SETTEXT,0,(LPARAM)AnsiString("Error GetItem="+IntToStr(i)).c_str()); } if(!IsSuc) SendMessage(HookWindowHandle,WM_SETTEXT,0,(LPARAM)AnsiString("Error GetItem="+S).c_str()); } } return 0;} 如何获取HTTP里的POST的参数? DbGridEh的数据源是否可以不是实际的表 一般进入一些商用软件后主界面的背景动态图形菜单是怎么做的? 在WIN2000下,获得ORACLE数据库的名称? 关于ADO在C/S架构下提取数据的问题!在线等待。高手请进!!! 如何实现下面的md5算法的解密啊 因资金严重匮乏,想找点生意来做! 请问哪有Delphi 的电子书籍下载? socket入门问题 如何把dbgrid中(包括用query查询出的)的数据转出为.txt文档? 我想做一个access数据库的备份和恢复的功能 Delphi如何实现动态显示文字
{
if(nCode<0) return CallNextHookEx(MouseHookID,nCode,wParam,lParam); if(HookWindowHandle==NULL)
{
HookWindowHandle=FindWindow(HookClassName.c_str(),NULL);
AppWindow=GetWindow(HookWindowHandle,GW_OWNER);
} if((int)wParam != WM_LBUTTONUP) return 0; MOUSEHOOKSTRUCT *mst=(MOUSEHOOKSTRUCT*)lParam; //*/
HWND hLV;
TPoint P;
char Buf[64]; P.x = mst->pt.x;
P.y = mst->pt.y; hLV = WindowFromPoint(P); ZeroMemory(Buf,64);
GetClassName(hLV,Buf,64);
if(AnsiString(Buf) == "SysListView32")
{
LV_ITEM Item;
int ItemCount;
// char *SelFileNameBuf=new char[64];
char SelFileNameBuf[64]; ItemCount = ListView_GetItemCount(hLV); if(ItemCount > 0)
{
AnsiString S; bool IsSuc = false; for(int i=0; i < ItemCount; i++)
{
ZeroMemory(SelFileNameBuf,64); Item.iItem=i;
Item.iSubItem=0;
Item.mask = LVIF_TEXT | LVIF_STATE;
Item.stateMask = LVIS_FOCUSED;
//Item.state = -1;
Item.pszText = SelFileNameBuf;
Item.cchTextMax = 64; if(ListView_GetItemState(hLV,i,LVIS_FOCUSED) != LVIS_FOCUSED)
{
//SendMessage(HookWindowHandle,WM_SETTEXT,0,(LPARAM)AnsiString("Error Query State="+IntToStr(i)).c_str());
continue;
} if(ListView_GetItem(hLV,&Item))
// ListView_GetItemText(hLV,i,0,SelFileNameBuf,64);
{
if(Item.state & LVIS_FOCUSED == LVIS_FOCUSED)
{
// Get Folder first
HWND hTemp;
AnsiString CurrentFolder; //*/
hTemp = FindWindow("ExploreWClass",NULL);
hTemp = FindWindowEx(hTemp,0,"WorkerW",NULL);
hTemp = FindWindowEx(hTemp,0,"ReBarWindow32",NULL);
hTemp = FindWindowEx(hTemp,0,"ComboBoxEx32",NULL);
hTemp = FindWindowEx(hTemp,0,"ComboBox",NULL);
hTemp = FindWindowEx(hTemp,0,"Edit",NULL); if(hTemp != NULL)
{
char ClassBuf[32]; ZeroMemory(ClassBuf,sizeof(ClassBuf));
GetClassName(hTemp,ClassBuf,sizeof(ClassBuf)); if(AnsiString(ClassBuf) == "Edit")
{
char FolderBuf[128]; ZeroMemory(FolderBuf,sizeof(FolderBuf));
GetWindowText(hTemp,FolderBuf,sizeof(FolderBuf));
CurrentFolder = AnsiString(FolderBuf); if(CurrentFolder[CurrentFolder.Length()] != '\\')
CurrentFolder += "\\";
}
}
//*/ IsSuc = true;
SendMessage(HookWindowHandle,WM_SETTEXT,0,(LPARAM)AnsiString("Index="+IntToStr(i)+" Select Filename="+AnsiString(CurrentFolder + SelFileNameBuf)).c_str());
break;
}
else S=S + ",Index=" + IntToStr(i) + " State="+IntToStr(Item.state) + " FN=" + AnsiString(SelFileNameBuf);
}
//else S=S + "," + IntToStr(i) +" Err="+SysErrorMessage(GetLastError());//SendMessage(HookWindowHandle,WM_SETTEXT,0,(LPARAM)AnsiString("Error GetItem="+IntToStr(i)).c_str());
}
if(!IsSuc)
SendMessage(HookWindowHandle,WM_SETTEXT,0,(LPARAM)AnsiString("Error GetItem="+S).c_str());
}
} return 0;
}