CreateProcess API函数的妙用

原创 2007年09月22日 14:24:00

我们可以利用CreateProcess API函数来创建相应的进程,该函数的原型如下:
    CreateProcess( 
             LPCWSTR lpszImageName, //指向可执行的模块的指针
             LPCWSTR lpszCmdLine, //指向可执行命令行字符串的指针
            LPSECURITY_ATTRIBUTES lpsaProcess, //CE 不支持
            LPSECURITY_ATTRIBUTES lpsaThread//CE 不支持
            BOOL fInheritHandles//CE 不支持
            DWORD fdwCreate, //创建标志
            LPVOID lpvEnvironment//CE 不支持
            LPWSTR lpszCurDir//CE 不支持
            LPSTARTUPINFOW lpsiStartInfo//CE 不支持
            LPPROCESS_INFORMATION lppiProcInfo //指向进程信息结构体的指针
         );
       该函数最重要的两个参数是lpszImageName和lpszCmdLine,下面的几个应用也主要是通过设置这两个参数来达到目的。(以下的程序在Pocket PC 2003 SE上通过测试)
1、打开指定的URL
   TCHAR szAppName[_MAX_PATH] = TEXT("iexplore.exe");//IE浏览器程序
  TCHAR szCmdLine[_MAX_PATH] = TEXT("http://www.cnblogs.com");
  CreateProcess(szAppName,szCmdLine, NULL, NULL,FALSE, 0, NULL, NULL, NULL, NULL);

2、打开指定的文件夹
   TCHAR szAppName[_MAX_PATH] = TEXT("fexplore.exe");//资源管理器程序
  TCHAR szCmdLine[_MAX_PATH] = TEXT(//Windows//);
  CreateProcess(szAppName,szCmdLine, NULL, NULL,FALSE, 0, NULL, NULL, NULL, NULL);

3、打开帮助文件
    PROCESS_INFORMATION pi;
   TCHAR szAppName[_MAX_PATH] = TEXT("peghelp.exe");//系统帮助程序,PC上是才c:/WINDOWS目下的winhlp32.exe
  TCHAR szCmdLine[_MAX_PATH] = TEXT("myhelp.html");//自己制作的帮助文档,甚至是系
//统原有的帮助文件,如wince.htm、bluetooth.htm等等。myhelp.html应该放在/Windows目录下
  CreateProcess(szAppName,szCmdLine, NULL, NULL,FALSE, 0, NULL, NULL, NULL, &pi);
通过以上的方式,可以在自己的应用程序里打开相应的帮助文件。
    从以上的3种应用可以看出,只要知道系统自带的应用程序名,就可以通过设定szAppName和szCmdLine相应的值,来调用相应的程序,来达到自己想要的目的。只要认真挖掘,一定可以发现更多的应用。  

 

using System;
using System.Runtime.InteropServices;

namespace Streamsea.CommModel
{
/// <summary>
/// CreateProcessEx 的摘要说明。
/// </summary>
public class CreateProcessEx
{
/// <summary>
/// 进程消息
/// </summary>
public class ProcessInfo
{
/// <summary>
///
/// </summary>
public IntPtr hProcess;
/// <summary>
///
/// </summary>
public IntPtr hThread;
/// <summary>
///
/// </summary>
public Int32 ProcessId;
/// <summary>
///
/// </summary>
public Int32 ThreadId;
}

[DllImport("CoreDll.DLL", SetLastError=true)]
private extern static
int CreateProcess( String imageName,
String cmdLine,
IntPtr lpProcessAttributes,
IntPtr lpThreadAttributes,
Int32 boolInheritHandles,
Int32 dwCreationFlags,
IntPtr lpEnvironment,
IntPtr lpszCurrentDir,
byte [] si,
ProcessInfo pi );

/// <summary>
/// 创建一个进程
/// </summary>
/// <param name="ExeName">程序名称</param>
/// <param name="CmdLine">命令行语句</param>
/// <returns></returns>
public static bool CreateProcess(string ExeName,string CmdLine)
{
ProcessInfo pi = new ProcessInfo();
byte [] si = new byte[128];

return CreateProcess(ExeName, CmdLine, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero, si, pi) != 0;
}
}
}  

相关文章推荐

有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。

1.CreateProcess因为使用复杂,比较少用。2.WinExec主要运行EXE文件。如:WinExec('Notepad.exe Readme.txt', SW_SHOW);3.ShellEx...

WIN32API函数CreateProcess创建一个新的进程和它的主线程,新进程运行指定的可执行文件

#include //CString的头文件 #include //屏蔽窗口 #pragma comment(linker,"/subsystem:windows /ENTRY:mainCRTStar...

三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。CreateProcess

有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。CreateProcess因为使用复杂,比较少用。     WinExec主要运行EXE文...

思路:如何跳过CreateProcess调用底层创建进程函数

论坛近日有人在问如何跳过CreateProcess调用底层的NtCreateProcess。 我想说的是不能单纯看这个问题,首先不同NT内核版本CreateProcess进入 底层的路径是不同的:...
  • mydo
  • mydo
  • 2012年10月28日 19:25
  • 4310

Windows中CreateProcess函数用法(转)

1.函数说明: WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。 2.函数原型: BOOL CreateProcess (  ...

Windows中CreateProcess()函数的使用说明

1.函数原型如下: BOOL WINAPI CreateProcess(   __in          LPCTSTR lpApplicationName,//程序的名字及所在目录   __in_o...

EVALUATE宏表函数妙用

  • 2013年03月08日 16:05
  • 89KB
  • 下载

CreateProcess函数详解及示例

WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。 函数原型: BOOL CreateProcess ( LPCTSTR lpAp...
  • l1905
  • l1905
  • 2013年07月25日 18:04
  • 1365

CreatePipe、CreateProcess函数

0x01.CreatePipe函数管 道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。一个进程在向管道写入数据后,另 一进程就可以从管...

19.VC(custom)-CreateProcess函数详解

CreateProcess 说明: WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。 函数原型: BOOL CreateProcess...
  • hgy413
  • hgy413
  • 2011年02月22日 21:27
  • 21900
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CreateProcess API函数的妙用
举报原因:
原因补充:

(最多只允许输入30个字)