没做过,只能提供个思路:
1 先取得所有打开我QQ窗口的进程句柄.
2 取得进程句柄后,用GetProcessTimes获得进程的建立时间.第1的解决方法可用EnumProcesses的方法取得进程,也可用FindWindow的方法取得QQ窗口,网上介绍的地方挺多的,有现成的例子。

解决方案 »

  1.   

                    DWORD pid;
    FILETIME time1,time2,time3,time4;
    HANDLE h1;
    SYSTEMTIME systime;
    ofstream output;
    output.open("a.txt",ios::app);
    for(int i=0;i<3;++i)
    {
    //output<<m_hwnd[i]<<endl;
    char filename[100];
    ::GetWindowThreadProcessId( m_hwnd[i], &pid);
    output<<hex<<pid<<endl;
    h1 =::OpenProcess(PROCESS_VM_OPERATION| PROCESS_VM_READ,0,pid); BOOL t=::GetProcessTimes(h1,&time1,&time2,&time3,&time4);
    if(!t)
    MessageBox(NULL,NULL,NULL,NULL); FileTimeToSystemTime(&time1,&systime);
    sprintf(filename,"%d月%d日%d时%d分%d秒",systime.wMonth,systime.wDay ,systime.wHour,systime.wMinute,systime.wSecond);
    output<<filename<<endl;
    }
    output.close();问题出现了  在h1 =::OpenProcess(PROCESS_VM_OPERATION| PROCESS_VM_READ,0,pid);这里还是很正确的
    到了BOOL t=::GetProcessTimes(h1,&time1,&time2,&time3,&time4); 就不成功
    请问这是怎么回事啊 ??
      

  2.   

    我试过了,改成这样好使.
    OpenProcess( PROCESS_QUERY_INFORMATION ¦ PROCESS_VM_READ, 0, pid); 
      

  3.   

    void CDlg::OnBnClickedButton()
    {
        DWORD   pid; 
    FILETIME   time1,time2,time3,time4; 
    HANDLE   h1; 
    SYSTEMTIME   systime; 
    char   filename[100];  ::GetWindowThreadProcessId(m_hWnd, &pid);  h1   =::OpenProcess(PROCESS_QUERY_INFORMATION  ¦   PROCESS_VM_READ,0,pid);  BOOL   t=::GetProcessTimes(h1,&time1,&time2,&time3,&time4);  FileTimeToSystemTime(&time1,&systime); }
    随便建工程加个按钮,粘上上面代码.可以得到正确的时间.
      

  4.   

    不知楼主用什么方法得到的m_hwnd[i].
    我认为:
    楼主需要确定m_hwnd[i]是否正确,或者是得到的pid是否正确.
    确定方法是用SPY看一看m_hwnd[i],或是用任务管理器看一看pid.我给的代码,经过单步调试,pid是正确的,t返回的是1.