VC++中用加载一个程序

三个SDK函数 winexec, shellexecute,createprocess可以使用。

WinExec最简单,两个参数,前一个指定路径,后一个指定显示方式.

CreateProcess最复杂,一共有十个参数,不过大部分都可以用NULL代替,它可以
    指定进程的安全属性,继承信息,类的优先级等等.来看个很简单的 Example:
       STARTUPINFO stinfo;   //启动窗口的信息
       PROCESSINFO procinfo;  //进程的信息

     CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE, NORMAL_PRIORITY_
       CLASS,NULL,NULL, &stinfo,&procinfo);

ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。

有几个API函数都可以实现这些功能,但是在大多数情况下ShellExecute是更多的被使用的,同时它并不是太复杂。下面举例说明它的用法。

  • 开始一个新的应用程序

   ShellExecute(Handle, ''open'', PChar(''c:/test/app.exe''), nil, nil, SW_SHOW);

  • 打开记事本,并打开一个文件(系统能识别记事本应用程序的路径,因此我们不必使用绝对路径)

   ShellExecute(Handle, ''open'', PChar(''notepad''), PChar(''c:/test/readme.txt''), nil, SW_SHOW);

            ShellExecute(this->m_hWnd,"open","notepad.exe","log.txt","",SW_SHOW );

  • 打印一个文档

   ShellExecute(Handle, ''print'', PChar(''c:/test/test.doc''), nil, nil, SW_SHOW);

   注意:可能你会看到word暂时的被打开,但它会自动关闭。

  • 打开一个HTML页面

   ShellExecute(Handle, ''open'', PChar(''http://www.festra.com/''), nil, nil, SW_SHOW);

  • 你能通过一个已经注册的文件类型来打开应用程序

   ShellExecute(Handle, ''open'', PChar(''c:/test/readme.txt''), nil, nil, SW_SHOW);

  • 用windows Explorer 打开一个目录

   ShellExecute(Handle, ''explore'', PChar(''c:/windows)'', nil, nil, SW_SHOW);

  • 运行一个DOS命令并立即返回

   ShellExecute(Handle, ''open'', PChar(''command.com''), PChar(''/c copy file1.txt file2.txt''), nil, SW_SHOW);

  • 运行一个DOS命令并保持DOS窗口存在

   ShellExecute(Handle, ''open'', PChar(''command.com''), PChar(''/k dir''), nil, SW_SHOW);


你可能感兴趣的:(VC++中用加载一个程序)