|
![]() | 作者: battle [battle]
![]() |
登录 |
HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPALL,NULL);获取进程 PROCESSENTRY32 info; info.dwSize = sizeof(info); // PROCESS process; Process32First(handle,&info); while(Process32Next(handle,&info)) send(Socket,(char*)&info,255,0); 发送,,这样发送每次只发送一个进程 请问怎样,获取所有进程,,一次性的全部发送过去? 谢谢 [此贴被 286(unique) 在 05月17日10时15分 编辑过] |
地主 发表时间: 04-05-16 11:38 |
![]() | 回复: 286 [unique] ![]() |
登录 |
HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPALL,NULL);获取进程 PROCESSENTRY32 info[1000]; info[0].dwSize = sizeof(info); // PROCESS process; Process32First(handle,&info[0]); int i=1; while(Process32Next(handle,&info[i])) i++; send(Socket,(char*)&info,255*i,0); |
B1层 发表时间: 04-05-17 10:14 |
![]() | 回复: battle [battle] ![]() |
登录 |
谢谢。。。。。。。。。。不过 我接受到 PROCESSENTRY32 info; recv((void*)&info,sizeof(info)); while(1) { char pro[255]; sprintf(pro,"%d",info.th32ProcessID); m_list.InsertItem(0,info.szExeFile); m_list.SetItemText(0,0,info.szExeFile); m_list.SetItemText(0,1,pro); return; } 添加也只显示一条进程,,,怎么全部显示出来。。在次感谢!! |
B2层 发表时间: 04-05-17 11:31 |
![]() | 回复: 286 [unique] ![]() |
登录 |
发送时就把个数发过去. recv((void*)&info,sizeof(info)*N); //N几个数. |
B3层 发表时间: 04-05-17 13:29 |
![]() | 回复: battle [battle] ![]() |
登录 |
怎么会出现这种情况![]() |
B4层 发表时间: 04-05-17 13:55 |
![]() | 回复: battle [battle] ![]() |
登录 |
我晕啊。。喊 烫啊。。CPU要烧了。。呵呵 |
B5层 发表时间: 04-05-17 13:56 |
![]() | 回复: battle [battle] ![]() |
登录 |
我晕啊。。喊 烫啊。。CPU要烧了。。呵呵 |
B6层 发表时间: 04-05-17 13:58 |
![]() | 回复: 286 [unique] ![]() |
登录 |
“烫”表示该段内存未被初始化。 可能是你的N的判断出错,或在发送时出错,或在接收时出错。 |
B7层 发表时间: 04-05-17 15:41 |
![]() | 回复: NetDemon [netdemon] ![]() |
登录 |
![]() ![]() ![]() |
B8层 发表时间: 04-05-17 16:12 |
![]() | 回复: battle [battle] ![]() |
登录 |
还是搞不定,,还是 烫 ................. |
B9层 发表时间: 04-05-17 16:29 |
![]() | 回复: battle [battle] ![]() |
登录 |
BOOL path; while(path) { char pro[255]; PROCESSENTRY32 info; path = sock.Receive((void*)&info,sizeof(info)); sprintf(pro,"%d",info.th32ProcessID); m_list.InsertItem(0,info.szExeFile); m_list.SetItemText(0,0,info.szExeFile); m_list.SetItemText(0,1,pro); }成功接受了所有进程。。但循环没结束,,程序越来越慢了。。。用什么办法搞定 谢谢了。。再次麻烦 |
B10层 发表时间: 04-05-17 23:43 |
![]() | 回复: 286 [unique] ![]() |
登录 |
在发送的数据中,自己定义一个结束标志就行了。 通过path = sock.Receive((void*)&info,sizeof(info));作这判断结束的方法的确不太合适。 |
B11层 发表时间: 04-05-18 09:01 |
![]() | 回复: battle [battle] ![]() |
登录 |
能不能具体点。。。。我很菜的呀!! |
B12层 发表时间: 04-05-18 12:24 |
![]() | 回复: hackgou [hackgou] ![]() |
登录 |
特务兄:下面是你二楼的代码while(1) { char pro[255]; sprintf(pro,"%d",info.th32ProcessID); m_list.InsertItem(0,info.szExeFile); m_list.SetItemText(0,0,info.szExeFile); m_list.SetItemText(0,1,pro); return; } while只会执行一次就return了。所以只显示一条进程,当然也接收了一条PROCESSENTRY32结构体。 至于10楼的 BOOL path; while(path) { char pro[255]; PROCESSENTRY32 info; path = sock.Receive((void*)&info,sizeof(info)); sprintf(pro,"%d",info.th32ProcessID); m_list.InsertItem(0,info.szExeFile); m_list.SetItemText(0,0,info.szExeFile); m_list.SetItemText(0,1,pro); } 检查一下path的返回值,根据sock的Receive方法在接收数据完成后的返回值来结束while,因为由于编译器不同Receive的返回值可能不一样,但是大多数会返回-1,这个值在windows下也被定义为:SOCKET_ERROR,而不是0,这就是while无法结束的原因。 |
B13层 发表时间: 04-05-18 21:50 |
![]() | 回复: battle [battle] ![]() |
登录 |
能不能弄个 例子出来看看。。。 |
B14层 发表时间: 04-05-19 18:58 |
![]() | 回复: yinjun [yinjun] ![]() |
登录 |
我不明白 |
B15层 发表时间: 04-05-22 13:23 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号