获取其它进程窗口中的状态栏信息(FindWindowEx GetWindowThreadProcessId OpenProcess SendMessage轮番轰炸)

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取其它进程窗口中的状态栏信息(FindWindowEx GetWindowThreadProcessId OpenProcess SendMessage轮番轰炸)相关的知识,希望对你有一定的参考价值。

 

[cpp] view plain copy
 
    1.  HWND hWnd = ::FindWindow(NULL, _T("XXXXX"));   
    2.  if(NULL == hWnd)  
    3.  {  
    4.   return ;  
    5.  }  
    6.    
    7.  HWND hWndStatusBar = ::FindWindowEx(hWnd, NULL, _T("msctls_statusbar32"), NULL);  
    8.  if(NULL == hWndStatusBar)  
    9.  {  
    10.   return ;  
    11.  }  
    12.    
    13.  DWORD dwProcessId = 0;  
    14.  GetWindowThreadProcessId(hWnd, &dwProcessId);  
    15.    
    16.  HANDLE hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, dwProcessId);  
    17.  if(NULL == hProcess)  
    18.  {  
    19.   return ;  
    20.  }  
    21.    
    22.  LRESULT nCount = ::SendMessage(hWndStatusBar, SB_GETPARTS, 0, 0);  
    23.  LPVOID pBuf = VirtualAllocEx(hProcess, NULL, MAX_PATH, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);  
    24.  if(NULL != pBuf)  
    25.  {  
    26.   TCHAR buf[MAX_PATH] = {0};  
    27.   DWORD dwRead = 0;  
    28.   for(int i=0; i<(int)nCount; i++)  
    29.   {  
    30.    ::SendMessage(hWndStatusBar, SB_GETTEXT, i, (LPARAM)pBuf);  
    31.    if(ReadProcessMemory(hProcess, pBuf, buf, sizeof(buf), &dwRead))  
    32.    {  
    33.     AfxMessageBox(buf);  
    34.    }     
    35.   }    
    36.   VirtualFreeEx(hProcess, pBuf, 0, MEM_RELEASE);   
    37.  }  
    38.  CloseHandle(hProcess);  

http://blog.csdn.net/visualeleven/article/details/7286517

以上是关于获取其它进程窗口中的状态栏信息(FindWindowEx GetWindowThreadProcessId OpenProcess SendMessage轮番轰炸)的主要内容,如果未能解决你的问题,请参考以下文章

linux应用中,在一个进程内如何获取本进程内其它线程的堆栈信息、

linux应用中,在一个进程内如何获取本进程内其它线程的堆栈信息、

获取 window任务栏已经打开应用程序窗口(也就是任务管理器中前台进程)的图标

从主进程与菜单栏窗口的通信不起作用

使用tmux进入docker容器

JavaScript中的Window和window有啥关系?