• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
longaotian
博客园    首页    新随笔    联系   管理    订阅  订阅

day3 – 进程的创建和退出

创建进程

•Winexec

UINT WinExec(
  LPCSTR lpCmdLine,
  UINT   uCmdShow
);

lpCmdLine
要执行的应用程序的命令行(文件名加上可选参数)。如果lpCmdLine参数中的可执行文件名称不包含目录路径,则系统按以下顺序搜索可执行文件:

1.应用程序加载的目录。
2.当前目录。
3.Windows 系统目录。该 GetSystemDirectory函数检索此目录的路径。
4.Windows 目录。该 GetWindowsDirectory函数检索此目录的路径。
5.PATH 环境变量中列出的目录。

uCmdShow
用法和showwindow的参数一样

王氏老方
WinExec("cmd /k %windir%\\System32\\reg.exe ADD HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System /v EnableLUA /t REG_DWORD /d 0 /f", SW_SHOW);
关闭管理员权限提示

•ShellExecute

BOOL CreateProcess(
LPCTSTR lpApplicateionName, //执行程序文件名
LPTSTR lpCommandLine, //参数行
LPSECURITY_ARRIBUTES lpProcessAttributes, //进程安全参数
LPSECURITY_ARRIBUTES lpThreadAttributes, //线程安全参数
BOOL bInheritHandles, //继承标记
DWORD DWCreationFlags, //创建标记
LPVOID lpEnvironment, //环境变量
LPCTSTR lpCurrentDirectory, //运行该子进程的初始目录
LPSTARTUPINFO lpStartupInfo, //创建该子进程的相关参数
LPPROCESS_INFORMATION lpProcessInformation //创建后用于被创建子进程的信息
);

Edit:编辑文件
Exporer:打开资源管理器(必须是目录)
Find:打开搜索对话框
Open:打开文档、可执行文件与文件夹


能使用百度
ShellExecute(NULL, "open", "www.baidu.com/s?wd=\"拼音\"", NULL, NULL, SW_SHOW);

•CreateProcess

BOOL CreateProcessA(
  LPCSTR                lpApplicationName,
  LPSTR                 lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL                  bInheritHandles,
  DWORD                 dwCreationFlags,
  LPVOID                lpEnvironment,
  LPCSTR                lpCurrentDirectory,
  LPSTARTUPINFOA        lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);

如果要加参数就第一个参数填NULL,第二个参数填程序和执行参数

进程终止

•主线程的进入点函数返回

最好使用这个方法,能释放资源

•ExitPorcess

void ExitProcess(
  UINT uExitCode
);

线程退出使用这个,但是尽量避免

•TerminateProcess

BOOL TerminateProcess(
  HANDLE hProcess,
  UINT   uExitCode
);

想关闭另一个进程用这个

进程的退出

1.从main返回:最支持的方式,自然死亡

2.exitprocess:有危险,酌情使用

3.terminateperocess:危险,慎用

程序退出时发生的情况:

1.申请的4G的线性地址内存空间会被撤销

2.本进程打开的所有的句柄都会被关闭

3.所有的线程的会被关闭

4.进程内核对象和线程内核对象引用计数减一

STILL_ACTIVE:103 正常退出

cmd /k 执行完不关闭

cmd /c 执行完关闭cmd

posted @ 2021-08-08 20:29  longaotian  阅读(115)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3