请问各位,使用CreateProcess可以启动一个exe的快捷方式吗?如果可以,CreateProcess的参数如何配置。
若不行,API中有其他的方式来启动exe快捷方式吗?请各位赐教,谢谢!!!

解决方案 »

  1.   

    我的程序:#include "stdafx.h"
    #include <windows.h>
    #include <shellapi.h>
    HANDLE launchViaShellExecute(LPCTSTR program, LPCTSTR args);int main(int argc, char* argv[])
    {
    printf("Hello World!\n");
    char pragram[32];
    memset(pragram,0,sizeof(pragram));
    strcpy(pragram,"e:\\ildasm.exe");   //为快捷方式
    char args[4];
    memset(args,0,sizeof(args));
    strcpy(args,""); launchViaShellExecute(pragram,args);

    return 0;}HANDLE launchViaShellExecute(LPCTSTR program, LPCTSTR args)
    {
    HANDLE hProcess = NULL;
        SHELLEXECUTEINFO shellInfo;
        ::ZeroMemory(&shellInfo, sizeof(shellInfo));
        shellInfo.cbSize =sizeof(shellInfo);
    //shellInfo.lpVerb = "explore";
        shellInfo.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS;
        shellInfo.lpFile = program;
        shellInfo.lpParameters = args;
        if(::ShellExecuteEx(&shellInfo))
    {
            hProcess = shellInfo.hProcess;
    }
    return hProcess;
    }可是运行后仍然不能够启动该快捷方式,ShellExecuteEx的参数设置有问题吗?
      

  2.   

    用system就可以,函数原型如下:
    int system( const char *command );
    直接把路经幢给他就可以,记得包含<process.h>
      

  3.   

    system 也不能用啊.报"e:\ildasm.exe 不是内部或外部命令,也不是可运行程序或批处理文件"的错误信息
      

  4.   

    我晕!你就没看出来"e:\ildasm.exe"应该改为"e:\\ildasm.exe"
      

  5.   


    我晕!你就没看出来"e:\ildasm.exe"应该改为"e:\\ildasm.exe"
    =========================================================改什么,程序里面路径是"e:\\ildasm.exe"这是毫无疑问的。
    运行时抛的异常肯定是报"e:\ildasm.exe"这样的路径,因为没有转意字符了。
    不知道你指的是什么地方要改,我也晕~~~
      

  6.   

    strcpy(pragram,"e:\\ildasm.exe"); 改为 strcpy(pragram,"e:\\ildasm.exe.lnk");就OK了~呵呵~
    不然shell将 link文件看成是 EXE了~ 当然会失败;
      

  7.   

    如果快捷方式有参数,是否直接在shellInfo.lpParameters 添加参数值即可