一个有关EnumWindows();函数的问题!

project1.cpp
//----------------------------
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
// 声明全局的property名和property value
LPCTSTR g_szPropName = "prop name";
HANDLE g_hValue = (HANDLE)1;
// 定义枚举窗口回调函数
BOOL CALLBACK EnumWndProc(HWND hwnd, LPARAM lParam)
{
HANDLE h = GetProp(hwnd, g_szPropName);
if( h == g_hValue)
{
*(HWND*)lParam = hwnd;
return false;
}
return true;
}

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
HWND hWnd = NULL;
EnumWindows(EnumWndProc, (LPARAM)&hWnd);
if(IsWindow(hWnd))
{
ShowWindow(hWnd, SW_NORMAL);
SetForegroundWindow(hWnd);
return FALSE;
}

Application->CreateForm(__classid(TForm1), &Form1);
SetProp(hWnd, g_szPropName, g_hValue);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------
出现下面的错误:

[C++ Error] Project1.cpp(29): E2034 Cannot convert 'int (__stdcall *)(void *,long)' to 'int (__stdcall *)()'
[C++ Error] Project1.cpp(29): E2342 Type mismatch in parameter 'lpEnumFunc' (wanted 'int (__stdcall *)()', got 'int (__stdcall *)(void *,long)')
[C++ Error] Project1.cpp(54): E2451 Undefined symbol 'exception'

怎么解决呀?
[2074 byte] By [yangyaoxing-sihan] at [2008-1-9]
# 1
你是缺少输入参数
proton-欲速则不达! at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 2
EnumWindows((int (__stdcall *)())EnumWndProc, (LPARAM)&hWnd);
# 3

EnumWindows(EnumWndProc, (LPARAM)&hWnd);

EnumWindows((WNDENUMPROC )EnumWndProc, (LPARAM)&hWnd);
keiy at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 4
错误是没有了,但我本来是要通过写这个来实现只能运行一个程序的,可好象不能实现啊!
yangyaoxing-sihan at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 5
指运行一个程序的话

在 WINMAIN 函数里面写

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{

HANDLE hMutex=CreateMutex(NULL,TRUE,"d93kdujkdjf9i3hscb"); // 随便填一些不会重复的
if( hMutex==NULL || GetLastError() == ERROR_ALREADY_EXISTS)
{
// MessageBox(NULL,"系统中存在一个正在运行的副本","",MB_OK);
CloseHandle(hMutex);
return 0;
}
joyous-NULL at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 6
禁止程序的第二个实例的运行的更多方法:
http://community.Codefund.cn/Expert/topic/4959/4959655.xml?temp=.7439691
keiy at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 7
这个方法我知道啊,但是执行的时候,只能禁止程序的再次运行,却不能激活啊!
yangyaoxing-sihan at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...