2013-04-18 113 views
3

如果我需要重新加载它,我使用RestartAPI来重新启动我的应用程序。它可以正常运行,直到我启动任何Windows对话框(例如打开对话框),并以Open按钮被点击结束!在这种情况下,如果我以后选择重新启动新应用程序(重新启动后)将无法打开任何文件。如果我点击取消按钮,新的重新启动的应用程序将工作得很好。在某些情况下自我重新启动的应用程序崩溃

我花了很长时间才发现两次重新启动之间的区别在于打开对话框与某些与应用程序重新启动完全无关的打开对话框。请注意,我已经消除了单击“打开”按钮后执行的代码,因此无法通过“打开”按钮刚刚启动的一些内存损坏代码导致该代码。

单击打开按钮一次就足够了(所以我可能5次单击取消比一次打开和比如3次取消),任何尝试重新启动应用程序,但是“迟到”将导致新的实例不会能够打开任何文件(甚至没有std::ifstream)。

一些细节:

  • Visual Studio 2010中
  • 的Windows 7 64位(但有32位XP是一样的)
  • 对话是在一个单独的线程
  • 推出我用快板5.0对于图形但不应相关
  • 该对话框由GetOpenFileName函数启动

回答

-1

我不知道RestartAPI,但你可以创建临时批处理文件,这将重新启动过程没有任何问题。

+0

似乎很难相信他们会引入一个看起来很复杂的API,可以使用批处理文件轻松完成某些工作。 –

+0

只有注射,这是不安全的。 – Nika

+0

你可以发布一些链接或什么?无论如何,我知道有一种方法可以注册自Vista以来的重新启动过程,但是我的代码也必须与Windows XP一起工作......以及您的意思是“只有注入,这是不安全的。” ? – Aros

相关问题