zoukankan      html  css  js  c++  java
  • 使用createprocess()创建进程打开其他文件方法

    #include "stdafx.h"
    #include "windows.h"
    #include <iostream>
    #include "shellapi.h"
    #include <stdlib.h>
    using namespace std;

    int _tmain(int argc, _TCHAR* argv[])
    {
    //system("dir");
    //system("pause");

    //打开声音设备
    //::ShellExecute(NULL,_T("OPEN"),_T("rundll32.exe"),_T("shell32.dll Control_RunDLL mmsys.cpl,,1"),NULL,SW_SHOW);

    //打开鼠标设备
    //::ShellExecute(NULL,_T("OPEN"),_T("rundll32.exe"),_T("shell32.dll Control_RunDLL main.cpl,,4"),NULL,SW_SHOW);

    打开系统设备
    //::ShellExecute(NULL,_T("OPEN"),_T("rundll32.exe"),_T("shell32.dll Control_RunDLL sysdm.cpl,,1"),NULL,SW_SHOW);


    WCHAR tstr[MAX_PATH] = TEXT("c:\windows\system32\notepad.exe e:\11.txt");//打开指定的11.txt文件(这里不能把字符串直接拷贝到函数中执行,会崩溃,参数是指向地址)

    STARTUPINFO si;
    memset(&si,0,sizeof(STARTUPINFO));//初始化si在内存块中的值(详见memset函数)
    si.cb=sizeof(STARTUPINFO);
    si.dwFlags=STARTF_USESHOWWINDOW;
    si.wShowWindow=SW_SHOW;
    PROCESS_INFORMATION pi;//必备参数设置结束
    if(!CreateProcess(NULL,tstr,
    NULL,
    NULL,
    FALSE,
    0,
    NULL,
    NULL,
    &si,
    &pi
    )
    //创建一个新的txt文件
    // CreateProcess(TEXT("c:\windows\system32\notepad.exe"),
    // NULL,
    // NULL,
    // NULL,
    // FALSE,
    // 0,
    // NULL,
    // NULL,
    // &si,
    // &pi
    // )


    ){
    cout<<"CreateFail!"<<endl;
    exit(1);
    }else{
    cout<<"Success!"<<endl;
    }
    //不使用的句柄最好关掉
    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);
    return 0;

    DWORD dwErr = GetLastError();
    return 0;
    }

  • 相关阅读:
    DTO vs. Assembly(转载)
    DDD:整理了一些关于验证方面的文章
    幸福框架:模块化开发
    .NET:异常以及异常处理框架探析(转载)
    Azure 基础:Queue Storage
    Azure 基础:File Storage
    Azure 基础:Blob Storage
    Azure 基础:Table storage
    用 IIS 搭建 mercurial server
    Azure 基础:使用 powershell 创建虚拟网络
  • 原文地址:https://www.cnblogs.com/lisuyun/p/4893438.html
Copyright © 2011-2022 走看看