EnumWindows,回调函数

tdjdyq 2007-09-23 10:15:16
//---------------------------------------------------------------------------

#include <vcl.h>
#include "Unit1.h"
#include <IniFiles.hpp>
#include <tlhelp32.h>
#include <Registry.hpp>
#include <stdio.h>

//---------------------------------------------------------------------------

#pragma argsused
void main(int argc, char* argv[])
{
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 *pProcInfo=new PROCESSENTRY32;
pProcInfo->dwSize=sizeof(PROCESSENTRY32);
Process32First(hSnapshot,pProcInfo);
HWND h_QQMain = NULL;
DWORD bOKToKill = FALSE;
do
{
if(strcmp("calc.exe",pProcInfo->szExeFile)==0)
{
h_QQMain=(HWND)OpenProcess(PROCESS_ALL_ACCESS,0,pProcInfo->th32ProcessID);
HWND hCurWindow;
hCurWindow = GetWindow(h_QQMain,GW_OWNER);
SendMessage(hCurWindow, WM_CLOSE, 0, 0); //为什么不能关闭,QQ.exe
EnumWindows(EnumWindowsProc,0);
}
}while(Process32Next(hSnapshot,pProcInfo));
}


BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lparam)
{

return true;
}

为什么我这段代码编译不过呢?提示错误:
[C++ Error] EnumProc.cpp(30): E2034 Cannot convert 'int (__stdcall *)(void *,long)' to 'int (__stdcall *)()'
[C++ Error] EnumProc.cpp(30): E2342 Type mismatch in parameter 'lpEnumFunc' (wanted 'int (__stdcall *)()', got 'int (__stdcall *)(void *,long)')

说EnumWindowsProc声明有问题呢?为什么
...全文
109 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gavin001 2007-09-24
  • 打赏
  • 举报
回复
定义在后,调用之前也没声明,当然编译不过去
你这程序好像是BC的吧
kirklin 2007-09-23
  • 打赏
  • 举报
回复
把它写到MAIN上面去,或者加函数原型

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧