怎么让任务管理器的进程名称高亮? 想写一个小工具,把任务管理器中的item逐个高亮了,用spy++获取任务管理器句柄以后,发什么消息呢?LBN_SELCHANGE怎么不行呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void ListViewOperator::SetItemSelected(HWND taskHwnd, int nItemIndex ) //选中listview 类型taskHwnd上某一个ITEM { SetForegroundWindow(taskHwnd);//((HWND)0x000410C2); SetFocus(taskHwnd);//((HWND)0x000110CC); DWORD dwProcessId; GetWindowThreadProcessId( taskHwnd, &dwProcessId ); //获取进程ID HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, false, dwProcessId ); // THROW_EXCEPTION( (m_hProcess == NULL), "Open process failed" ); LVITEM *pLVItem = (LVITEMA *)VirtualAllocEx( hProcess, NULL, sizeof(LVITEMA), MEM_COMMIT, PAGE_READWRITE ); //在目标进程空间中获得内存,允许读取和写入。 // THROW_EXCEPTION( (m_pLVItem == NULL), "Memory alloc failed" ); char *pTextBuffer = (char *)VirtualAllocEx( hProcess, NULL, MAX_TEXT_BUFFER_LENGTH, MEM_COMMIT, PAGE_READWRITE ); // THROW_EXCEPTION( (m_pTextBuffer == NULL), "Memory alloc failed" ); LVITEMA lvitem; // 静态结构 int nCount=(int)SendMessage(taskHwnd, LVM_GETITEMCOUNT, 0, 0); for (int i=0;i<nCount;++i) { if (i==nItemIndex) { lvitem.state = LVIS_SELECTED;//LVIS_FOCUSED; lvitem.stateMask = LVIS_SELECTED;//LVIS_FOCUSED; int nRet = WriteProcessMemory( hProcess, pLVItem, &lvitem, sizeof(LVITEM), NULL ); // 将本地进程中的结构写入到目标进程 // HRESULT hRet = SendMessage( m_hwnd, LVM_SETITEMSTATE, (WPARAM)nItemIndex, (LPARAM)m_pLVItem );//发送消息 HRESULT hRet = SendMessage( m_taskHwnd, LVM_SETITEMSTATE, (WPARAM)i, (LPARAM)pLVItem );//发送消息 } else { lvitem.state = !LVIS_SELECTED;//LVIS_FOCUSED; lvitem.stateMask = LVIS_SELECTED;//LVIS_FOCUSED; int nRet = WriteProcessMemory( hProcess, pLVItem, &lvitem, sizeof(LVITEM), NULL ); // 将本地进程中的结构写入到目标进程 // HRESULT hRet = SendMessage( m_hwnd, LVM_SETITEMSTATE, (WPARAM)nItemIndex, (LPARAM)m_pLVItem );//发送消息 HRESULT hRet = SendMessage( taskHwnd, LVM_SETITEMSTATE, (WPARAM)i, (LPARAM)pLVItem ); //lvitem.state = 0; //lvitem.stateMask=0; } // lvitem.stateMask = LVIS_SELECTED;//|LVIS_FOCUSED; } return ; } MFC怎么利用代码执行外部的.EXE程序 BITMAPINFO结构体的一个疑问 ”???“内存指令的”0x00000020"为Read,该内存不能为Read. 窗口大小 怎样通过SHGetFileInfo取得"桌面"图标? 如何单个实例运行 请问每个CRecordset::Open()是不是对要对应一个CRecordset::Close()啊 谁能给我Xtreme Toolkit最新版,我给700分 如何使用gethostbyaddr(),再线等待 如何让MFC程序不在任务管理器的“应用程序”栏显示 求助 mfc ActiveX 应该是很弱的问题。。。
//选中listview 类型taskHwnd上某一个ITEM
{
SetForegroundWindow(taskHwnd);//((HWND)0x000410C2);
SetFocus(taskHwnd);//((HWND)0x000110CC); DWORD dwProcessId;
GetWindowThreadProcessId( taskHwnd, &dwProcessId ); //获取进程ID
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, false, dwProcessId );
// THROW_EXCEPTION( (m_hProcess == NULL), "Open process failed" );
LVITEM *pLVItem = (LVITEMA *)VirtualAllocEx( hProcess, NULL, sizeof(LVITEMA), MEM_COMMIT, PAGE_READWRITE ); //在目标进程空间中获得内存,允许读取和写入。
// THROW_EXCEPTION( (m_pLVItem == NULL), "Memory alloc failed" );
char *pTextBuffer = (char *)VirtualAllocEx( hProcess, NULL, MAX_TEXT_BUFFER_LENGTH, MEM_COMMIT, PAGE_READWRITE );
// THROW_EXCEPTION( (m_pTextBuffer == NULL), "Memory alloc failed" );
LVITEMA lvitem; // 静态结构
int nCount=(int)SendMessage(taskHwnd, LVM_GETITEMCOUNT, 0, 0);
for (int i=0;i<nCount;++i)
{
if (i==nItemIndex)
{
lvitem.state = LVIS_SELECTED;//LVIS_FOCUSED;
lvitem.stateMask = LVIS_SELECTED;//LVIS_FOCUSED;
int nRet = WriteProcessMemory( hProcess, pLVItem, &lvitem, sizeof(LVITEM), NULL ); // 将本地进程中的结构写入到目标进程
// HRESULT hRet = SendMessage( m_hwnd, LVM_SETITEMSTATE, (WPARAM)nItemIndex, (LPARAM)m_pLVItem );//发送消息
HRESULT hRet = SendMessage( m_taskHwnd, LVM_SETITEMSTATE, (WPARAM)i, (LPARAM)pLVItem );//发送消息
}
else
{
lvitem.state = !LVIS_SELECTED;//LVIS_FOCUSED;
lvitem.stateMask = LVIS_SELECTED;//LVIS_FOCUSED;
int nRet = WriteProcessMemory( hProcess, pLVItem, &lvitem, sizeof(LVITEM), NULL ); // 将本地进程中的结构写入到目标进程
// HRESULT hRet = SendMessage( m_hwnd, LVM_SETITEMSTATE, (WPARAM)nItemIndex, (LPARAM)m_pLVItem );//发送消息
HRESULT hRet = SendMessage( taskHwnd, LVM_SETITEMSTATE, (WPARAM)i, (LPARAM)pLVItem );
//lvitem.state = 0;
//lvitem.stateMask=0;
}
// lvitem.stateMask = LVIS_SELECTED;//|LVIS_FOCUSED;
}
return ;
}