首页
社区
课程
招聘
[旧帖] [求助]这个是挂起进程的程序,不知道vc6为什么报错 0.00雪花
发表于: 2015-7-28 16:19 1549

[旧帖] [求助]这个是挂起进程的程序,不知道vc6为什么报错 0.00雪花

2015-7-28 16:19
1549
#include "tlhelp32.h"
#include "windows.h"
#include "stdio.h"
void SuspendProcess(DWORD dwProcessId, BOOL bSuspend)//传入PID, 选择挂起或恢复
{
  HANDLE hSnapshot;
  hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,dwProcessId);

  if(hSnapshot != INVALID_HANDLE_VALUE)
  {
    THREADENTRY32 te;
    ZeroMemory(&te,sizeof(te));
    te.dwSize = sizeof(te);
    BOOL bOK = Thread32First(hSnapshot, &te);
    for(;bOK;bOK = Thread32Next(hSnapshot, &te))
    {
      if(te.th32OwnerProcessID == dwProcessId)
      {
        HANDLE hThread = OpenThread(THREAD_SUSPEND_RESUME,FALSE,te.th32ThreadID);
        if(hThread != NULL)
        {
          if(bSuspend)
          {
            SuspendThread(hThread);
          }
          else
            ResumeThread(hThread);
        }
        CloseHandle(hThread);
      }
    }

  }
  CloseHandle(hSnapshot);
}
int  main(void)
{
  SuspendProcess(2472,TRUE);
  return 0;
}
问题一:
红字的地方说出错了
error C2146: syntax error : missing ';' before identifier 'WINAPI'
error C2501: 'HANDLE' : missing storage-class or type specifiers
fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
问题二:
绿色的地方如果不加这个判断没问题吧,本来就指定PID了,程序原作者说不加会挂起系统所有线程
初学api希望能指点指点

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 9941
活跃值: (2143)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
问题一:差头文件
问题二: 实践一下就好了,看看他到底有没有枚举到别的进程

然后看一下参数意义就好了

指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。
2015-7-28 17:16
0
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,第一个问题解决办法好奇葩,把include "tlhelp32.h"放到最后包含就好了,就换了下位置,为什么啊?
第二个问题看了msdn,原文
th32ProcessID
[in] Specifies the process identifier. This parameter can be zero to indicate the current process. This parameter is used when the TH32CS_SNAPHEAPLIST or TH32CS_SNAPMODULE value is specified. Otherwise, it is ignored.
2015-7-28 20:23
0
游客
登录 | 注册 方可回帖
返回
//