CreateProcess

wjx_0_2001 2010-07-29 12:36:15
PROCESS_INFORMATION pi;
STARTUPINFO si;

if(!CreateProcess("SetServer.exe", //为一对话框小程序
NULL,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi)
)
{
DWORD d=GetLastError(); //1400---无效的窗口句柄。 }
else
{

MessageBox("OK");
}
...全文
188 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjx_0_2001 2010-07-30
  • 打赏
  • 举报
回复
MyServiceStatus.dwServiceType = SERVICE_WIN32|SERVICE_INTERACTIVE_PROCESS;

还是不行
wjx_0_2001 2010-07-30
  • 打赏
  • 举报
回复
拼命改,拼命试…………

终于然它显示出来了

散分……

将会把结果公布出来……

先调试别的

多谢各位
wltg2001 2010-07-29
  • 打赏
  • 举报
回复
另外,要注意的是,上面的代码如果在UNICODE下编译可能会失败,因为它要求第二个参数是一个字符串变量,所以你可以写成:
TCHAR szAppName[]=_T("xxxx");然后调用。
wltg2001 2010-07-29
  • 打赏
  • 举报
回复
给你个MSDN上的例子:
#include <windows.h>
#include <stdio.h>

void main( VOID )
{
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
TEXT("MyChildProcess"), // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}

// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );

// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
wltg2001 2010-07-29
  • 打赏
  • 举报
回复
PROCESS_INFORMATION pi;
STARTUPINFO si;
========
这个两个都要初始化的。
xxd_qd 2010-07-29
  • 打赏
  • 举报
回复
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
  • 打赏
  • 举报
回复

PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo;
ZeroMemory(&ProcessInfo,sizeof(ProcessInfo));
ZeroMemory(&StartupInfo,sizeof(StartupInfo));
StartupInfo.cb = sizeof(StartupInfo);

if(CreateProcess(_T("abc.exe"),NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&StartupInfo,&ProcessInfo)==FALSE)
return;
xxd_qd 2010-07-29
  • 打赏
  • 举报
回复
si是输入参数,你没有事先给si赋值。
bulijun1987 2010-07-29
  • 打赏
  • 举报
回复
STARTUPINFO 参数初始化
wltg2001 2010-07-29
  • 打赏
  • 举报
回复
如果在win7下,好像没有什么好办法吧
wltg2001 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wjx_0_2001 的回复:]
相关参数初始化...
CreateProcess("SetServer.exe.....

在基于一个对话框的程序里,SetServer.exe是能够执行的。


但是,如果我把上述代码放在一个服务程序里,虽然在任务管理器里能看见SetServer.exe进程,但是其对话框窗口,且没能显示出来
[/Quote]
又是服务程序的事,如果不是在win7下的话,那么服务程序必须要设成交互式服务,也就是在用CreateService创建服务时,第五个参数:dwServiceType,要加上SERVICE_INTERACTIVE_PROCESS才行。
wjx_0_2001 2010-07-29
  • 打赏
  • 举报
回复
相关参数初始化...
CreateProcess("SetServer.exe.....

在基于一个对话框的程序里,SetServer.exe是能够执行的。


但是,如果我把上述代码放在一个服务程序里,虽然在任务管理器里能看见SetServer.exe进程,但是其对话框窗口,且没能显示出来

Eleven 2010-07-29
  • 打赏
  • 举报
回复
解决??
na_he 2010-07-29
  • 打赏
  • 举报
回复
解决了,呵呵。
wjx_0_2001 2010-07-29
  • 打赏
  • 举报
回复
多谢楼上两位

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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