运行"创建新任务" WINAPI

时间:2014-04-17 18:18:39

标签: winapi

我需要运行"创建新任务"我的应用程序中的程序,与从任务管理器运行的程序相同。

2 个答案:

答案 0 :(得分:1)

有一个CreateProcess () API。

我建议您查看文档here。它允许您按名称加载应用程序,其余的由Windows负责。

答案 1 :(得分:0)

我假设您正在引用“运行”对话框?此代码将打开Windows运行对话框。 警告:它通过序号访问Windows API,而不是通过名称访问。这通常是做未记录的事情的标志,在未来的Windows版本中可能会或可能不会。

// MS Run dialog
typedef void (__stdcall* lpfnMSRun)(HWND, HICON, LPCSTR, LPCSTR, LPCSTR, int);
static lpfnMSRun MSRun = NULL;

bool DisplayRunDialog()
{
  if ((MSRun == NULL) && (emergeLibGlobals::GetShell32DLL()))
  {
    MSRun = (lpfnMSRun)GetProcAddress(emergeLibGlobals::GetShell32DLL(), (LPCSTR) 61);
  }

  if (MSRun)
  {
    MSRun(NULL, NULL, NULL, NULL, NULL, 0);
    return true;
  }

  return false;
}

关于此问题的几个注意事项 - emergeLibGlobals::GetShell32DLL()是一个内部方法,它在shell32.dll上调用LoadLibrary并返回其HMODULE。您可以直接致电LoadLibrary。此外,如果您的编译器支持C ++ 11,您可以全面替换NULL nullptr

This CodeProject article声称有记录的方式来做同样的事情,但我没有尝试过,所以我无法保证它能够正常工作。