关于createprocess的使用
您好!这是我的代码,C语言的,运行到点击“开始登陆”时,就弹出“内存不能为read”,我不知道不是代码的问题,或者是缺少dll文件?帮我看看,一点小分,不成敬意……:#i...
您好!这是我的代码,C语言的,运行到点击“开始登陆”时,就弹出“内存不能为read”,我不知道不是代码的问题,或者是缺少dll文件?帮我看看,一点小分,不成敬意……:
#include "stdafx.h"
#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
int ret=MessageBox(NULL,TEXT("你好!我是丁丁,想聊天吗?"),TEXT("问好"),MB_YESNO|MB_ICONQUESTION);
if(IDYES==ret)
{
int ret1=MessageBox(NULL,TEXT("好,要现在登录QQ吗"),TEXT("询问"),MB_YESNO|MB_ICONQUESTION);
if(IDYES==ret1)
{
int ret2=MessageBox(NULL,TEXT("开始登陆……"),TEXT("稍等"),MB_OK);
if(IDOK==ret2)
{
CreateProcessA(NULL,"D:\\QQ\\Bin\\QQ.exe", NULL, NULL,NULL, NULL, NULL,NULL, NULL,NULL);
}
}
}
return 0;
} 展开
#include "stdafx.h"
#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
int ret=MessageBox(NULL,TEXT("你好!我是丁丁,想聊天吗?"),TEXT("问好"),MB_YESNO|MB_ICONQUESTION);
if(IDYES==ret)
{
int ret1=MessageBox(NULL,TEXT("好,要现在登录QQ吗"),TEXT("询问"),MB_YESNO|MB_ICONQUESTION);
if(IDYES==ret1)
{
int ret2=MessageBox(NULL,TEXT("开始登陆……"),TEXT("稍等"),MB_OK);
if(IDOK==ret2)
{
CreateProcessA(NULL,"D:\\QQ\\Bin\\QQ.exe", NULL, NULL,NULL, NULL, NULL,NULL, NULL,NULL);
}
}
}
return 0;
} 展开
展开全部
对于CreateProcess函数的后两个参数你不能简单的定义为NULL,你可以参看MSDN对这个函数的说明,倒数第二个参数必须要有你提供。它是一个STARTUPINFO结构体的指针,这个结构体对象一定要有你自己提供
最后一个参数你也必须自己提供,它是一个PROCESS_INFORMATION类型的指针
也就是:
STARTUPINFO st;
PROCESS_INFORMATION pi:
eroMemory(&si,sizeof(si));
si.cb=sizeof(si);
ZeroMemory(&pi,sizeof(pi));
然后调用函数CreateProcess("D:\\QQ\\Bin\\QQ.exe", NULL, NULL,NULL, NULL, NULL,NULL, NULL,&si,&pi);
或者CreateProcess(NULL,"D:\\QQ\\Bin\\QQ.exe", NULL, NULL,NULL, NULL, NULL,NULL, &si,&pi)
这样就可以了。
这样虽然可以正常的运行,但是最好的习惯是打开一个进程之后,我们要将该程序与进程断开连系,调用CloseHandle函数实现。
最后一个参数你也必须自己提供,它是一个PROCESS_INFORMATION类型的指针
也就是:
STARTUPINFO st;
PROCESS_INFORMATION pi:
eroMemory(&si,sizeof(si));
si.cb=sizeof(si);
ZeroMemory(&pi,sizeof(pi));
然后调用函数CreateProcess("D:\\QQ\\Bin\\QQ.exe", NULL, NULL,NULL, NULL, NULL,NULL, NULL,&si,&pi);
或者CreateProcess(NULL,"D:\\QQ\\Bin\\QQ.exe", NULL, NULL,NULL, NULL, NULL,NULL, &si,&pi)
这样就可以了。
这样虽然可以正常的运行,但是最好的习惯是打开一个进程之后,我们要将该程序与进程断开连系,调用CloseHandle函数实现。
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询