You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过窗口句柄获取窗口创建/打开日期?Edge IE模式场景

可以实现,以下是可行方案

核心思路

IE模式的Edge窗口实际由iexplore.exe进程承载,每个窗口对应独立的进程实例。我们可以通过窗口句柄关联到对应进程,获取进程的创建时间来判断窗口的打开先后。

具体步骤与代码实现

  1. 通过GetWindowThreadProcessId从窗口句柄获取进程ID
  2. 用OpenProcess打开进程并获取进程句柄
  3. 调用GetProcessTimes获取进程的创建时间
  4. 对比两个进程的创建时间,确定较晚打开的窗口

以下是可运行的C++代码示例:

#include <windows.h>
#include <iostream>

// 获取进程创建时间(返回FILETIME结构)
bool GetProcessCreationTime(DWORD processId, FILETIME& creationTime) {
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processId);
    if (hProcess == NULL) {
        return false;
    }

    FILETIME exitTime, kernelTime, userTime;
    bool success = GetProcessTimes(hProcess, &creationTime, &exitTime, &kernelTime, &userTime);
    
    CloseHandle(hProcess);
    return success;
}

// 比较两个FILETIME的先后,返回true表示time1晚于time2
bool IsTimeLater(const FILETIME& time1, const FILETIME& time2) {
    ULARGE_INTEGER uli1, uli2;
    uli1.LowPart = time1.dwLowDateTime;
    uli1.HighPart = time1.dwHighDateTime;
    uli2.LowPart = time2.dwLowDateTime;
    uli2.HighPart = time2.dwHighDateTime;
    return uli1.QuadPart > uli2.QuadPart;
}

int main() {
    HWND hWnd1 = /* 替换为你的第一个窗口句柄 */;
    HWND hWnd2 = /* 替换为你的第二个窗口句柄 */;

    DWORD pid1, pid2;
    GetWindowThreadProcessId(hWnd1, &pid1);
    GetWindowThreadProcessId(hWnd2, &pid2);

    FILETIME creationTime1, creationTime2;
    if (!GetProcessCreationTime(pid1, creationTime1) || !GetProcessCreationTime(pid2, creationTime2)) {
        std::cerr << "获取进程创建时间失败" << std::endl;
        return 1;
    }

    if (IsTimeLater(creationTime1, creationTime2)) {
        std::cout << "窗口1是较晚打开的" << std::endl;
    } else {
        std::cout << "窗口2是较晚打开的" << std::endl;
    }

    return 0;
}

注意事项

  • 确保程序有足够权限:OpenProcess需要PROCESS_QUERY_INFORMATION权限,若权限不足会返回NULL,可尝试以管理员身份运行程序
  • 若极少数情况下多个IE模式窗口共享同一进程,可改用线程创建时间:通过GetWindowThreadProcessId获取线程ID,调用GetThreadTimes获取线程创建时间对比即可

内容的提问来源于stack exchange,提问作者Cagin Uludamar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:15:14