您当前的位置: 首页 >  linux

柳鲲鹏

暂无认证

  • 0浏览

    0关注

    4642博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

LINUX获取当前窗口的ID

柳鲲鹏 发布时间:2020-01-02 20:55:50 ,浏览量:0

代码如下:

#ifndef __WINDOWIDUTIL_H__
#define __WINDOWIDUTIL_H__


// win
#ifdef WIN32

#include 

typedef struct
{
    HWND hWnd;
    DWORD dwPid;
}WNDINFO;


BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
    WNDINFO* pInfo = (WNDINFO*)lParam;
    DWORD dwProcessId = 0;
    GetWindowThreadProcessId(hWnd, &dwProcessId);

    if(dwProcessId == pInfo->dwPid)
    {
     pInfo->hWnd = hWnd;
     return FALSE;
    }
    return TRUE;
}


WId get_win_id_from_pid(DWORD dwProcessId)
{
    WNDINFO info = {0};
    info.hWnd = NULL;
    info.dwPid = dwProcessId;
    EnumWindows(EnumWindowsProc, (LPARAM)&info);
    return (WId)info.hWnd;
}

#else // linux


#include 
#include 
#include 
#include 
#include 
#include 


class WindowsMatchingPid
{
public:
    WindowsMatchingPid(Display *display, Window wRoot, unsigned long pid)
        : _display(display),
          _pid(pid)
    {
        // Get the PID property atom.
        _atomPID = XInternAtom(display, "_NET_WM_PID", True);
        if(_atomPID == None)
        {
            std::cout             
关注
打赏
1665724893
查看更多评论
0.0658s