没做过,只能提供个思路:
1 先取得所有打开我QQ窗口的进程句柄.
2 取得进程句柄后,用GetProcessTimes获得进程的建立时间.第1的解决方法可用EnumProcesses的方法取得进程,也可用FindWindow的方法取得QQ窗口,网上介绍的地方挺多的,有现成的例子。
1 先取得所有打开我QQ窗口的进程句柄.
2 取得进程句柄后,用GetProcessTimes获得进程的建立时间.第1的解决方法可用EnumProcesses的方法取得进程,也可用FindWindow的方法取得QQ窗口,网上介绍的地方挺多的,有现成的例子。
解决方案 »
- 请教大家,如何把动态生成的多个控件都消息映射到同一处理函数?
- CreateWindow在什么情况下返回0??
- 收到的邮件是乱码怎么办?
- 程序中使用QueueUserAPC(),为什么编译时会出现QueueUserAPC' : undeclared identifier?
- 怎样实现在单文档程序中,程序运行后,先显示一个对话框,在显示单文档程序界面
- 如何在DOC和VIEW之间传递数组变量的值,高手帮帮忙
- 怎么解决?(急急急急)
- F5无法正常调试启动,但Ctrl+F5却可以正常
- 请问如何隐藏Menu?
- 哪位对剪贴板的使用有研究,大家来讨论一下,只要有独到见解,多多给分。
- 请问如何获得stl格式文件中部分三角片的轮廓?
- CString 在MFC(exe)中使用可以,但是在Win32 Dynamic-Link程序中使用出错?
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); 就不成功
请问这是怎么回事啊 ??
OpenProcess( PROCESS_QUERY_INFORMATION ¦ PROCESS_VM_READ, 0, pid);
{
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); }
随便建工程加个按钮,粘上上面代码.可以得到正确的时间.
我认为:
楼主需要确定m_hwnd[i]是否正确,或者是得到的pid是否正确.
确定方法是用SPY看一看m_hwnd[i],或是用任务管理器看一看pid.我给的代码,经过单步调试,pid是正确的,t返回的是1.