C++ 从VS10应用程序查找/终止进程(VC6应用程序)?

C++ 从VS10应用程序查找/终止进程(VC6应用程序)?,c++,visual-studio-2010,visual-c++-6,C++,Visual Studio 2010,Visual C++ 6,有一点问题,通过问它来思考,应该可以为我指明正确的方向。我有一个.dll,我已经从VC6移动到VisualStudio2010。这个应用的要点是找到两个特定应用程序的过程,它们是定制的C++ VC6并终止它们-简单的。 在移动到Visual Studio 2010后,所需的唯一更改是更改方法以在重载时返回流的引用,并稍微修改boost智能指针,以便使用新字符串等创建它。该代码似乎是正确的 但是,现在我在使用这个.dll时遇到两个错误 一个应该终止的应用程序给出了一个错误:这个应用程序请求运行时以

有一点问题,通过问它来思考,应该可以为我指明正确的方向。我有一个.dll,我已经从VC6移动到VisualStudio2010。这个应用的要点是找到两个特定应用程序的过程,它们是定制的C++ VC6并终止它们-简单的。 在移动到Visual Studio 2010后,所需的唯一更改是更改方法以在重载时返回流的引用,并稍微修改boost智能指针,以便使用新字符串等创建它。该代码似乎是正确的

但是,现在我在使用这个.dll时遇到两个错误

一个应该终止的应用程序给出了一个错误:这个应用程序请求运行时以一种不寻常的方式终止它

b第二个应用程序没有终止,而是给出了一个错误:调用了纯虚拟函数

除了上面的小代码更改之外,我现在还不会粘贴任何代码,因为有大约8个类没有任何更改。在VC6中查找和终止/终止进程的方法肯定与在VisualStudio10中相同,对吗

让VC10.dll终止VC6应用程序或导致这些错误不应该有问题

或者这可能是我的计算机所独有的,即不是由.dll引起的,而是由于我的计算机上安装了不同的windows API,就像我安装的VS10一样

这件事有点困惑

停止该进程的代码是:

HANDLE processHandle = ::OpenProcess( PROCESS_ALL_ACCESS, FALSE, processId_ );
   if( processHandle != NULL ) 
   {
         ::EnumWindows( (WNDENUMPROC)stopProcessWindowEnumerator, processId_ );

    if( ::WaitForSingleObject( processHandle, 1000 ) != WAIT_OBJECT_0 )
    {
      ::TerminateProcess( processHandle, 0 );
      ::WaitForSingleObject( processHandle, 1000 );
    }
  }
WindowEnumerator的代码:

BOOL CALLBACK RunningProcess::stopProcessWindowEnumerator( HWND hWnd, LPARAM lParam )
{
  DWORD processIdToStop = (DWORD)lParam;

  DWORD enumeratedWindowsProcessId;
  ::GetWindowThreadProcessId(hWnd, &enumeratedWindowsProcessId);

  if( processIdToStop == enumeratedWindowsProcessId )
  {
    ::PostMessage( hWnd, remoteCloseMessage, 0, 0);
    return FALSE;
  }

  return TRUE;
}

调用的纯虚拟函数通常是代码中错误的指示器。它通常发生在从ctor或dtor的上下文中调用虚函数时,或者在已破坏的对象上调用虚函数时

<>很可能这个bug一直潜伏在你的代码中,但是没有被触发或者没有后果,VC6被称为实现不值得称为标准C++的东西。
对于另一个错误,我不知道,但是您确定您请求它终止的方式不是一种不同寻常的方式吗?

我怀疑您的接口定义。不看定义很难猜测。请仔细阅读以下文章,这些文章可以帮助您找出问题所在


请注意,被终止的应用程序是用VC6编写的,但尚未迁移到VS10。VS10只是终止了进程。上面添加的代码显示了进程是如何终止的。谢谢。我唯一的问题是。。。该错误是否仅仅是由于应用程序试图终止发出错误的应用程序的进程而导致的?在VC6应用程序中,绝对没有修改过提到虚拟函数错误的代码。WindowEnumerator中有什么?