rt
创建一个任务(task)这个函数,需要在lib文件中调用的。
要怎样写呢?
本人在网上没有找到,可能关键字不对。

解决方案 »

  1.   

    用了
    STARTUPINFO   startInfo;   
    PROCESS_INFORMATION   pi ;    ZeroMemory(   &startInfo,   sizeof(startInfo)   );   
    startInfo.cb   =   sizeof(startInfo);    ZeroMemory(   &pi,   sizeof(pi)   );   
    if(   !CreateProcess(   (LPWSTR)"D:\proc123.exe",   //   No   module   name   (use   command   line).     
    (LPWSTR)"",   //   Command   line.     
    NULL,                           //   Process   handle   not   inheritable.     
    NULL,                           //   Thread   handle   not   inheritable.     
    FALSE,                         //   Set   handle   inheritance   to   FALSE.     
    0,                                 //   No   creation   flags.     
    NULL,                           //   Use   parent's   environment   block.     
    NULL,                           //   Use   parent's   starting   directory.     
    &startInfo,                             //   Pointer   to   STARTUPINFO   structure.   
    &pi   )                           //   Pointer   to   PROCESS_INFORMATION   structure.   
    )     
    {   
    AfxMessageBox(   _T("CreateProcess   failed."  ),0,0 );  
    return false; }   
    return true;
    这是一个CreateProcess的通用的代码,在vc/mfc中调用,可总是走到"CreateProcess   failed."这里面,  
    有2个问题:
    (1)STARTUPINFO   startInfo;   声明这个结构体的时候,里面的LPWSTR类型的自动总显示<错误的指针>;
    (2)CreateProcess()第一个参数是一个带有路径exe文件,这个exe指的什么?我在vc/mfc中加入的CreateProcess,那么我就是要将这个项目的exe加在这里吗?
      

  2.   

    前两个参数使用这种类型:
    LPCTSTR
    LPTSTR
    路径"D:\\proc123.exe“
      

  3.   

    不好意思,我不是要参数的类型,而是具体应该写什么。CreateProcess()第一个参数是一个带有路径exe文件,这个exe指的什么?我在vc/mfc中加入的CreateProcess,那么我就是要将这个项目的exe加在这里吗?
    另外,STARTUPINFO  startInfo;  声明这个结构体的时候,里面的LPWSTR类型的自动总显示 <错误的指针>; 好像是因为这个所以我在创建task的时候总是不能创建成功。要怎样修改呢???
      

  4.   

    就是你要启动的进程的PE文件,进程就是PE文件的一次执行
      

  5.   

    你是说exe文件是指我要启动的进程的PE文件??但是我所要启动的,只是一段封装在lib文件的程序呀?
    bool CreatTask(TaskEntry usractTask)
    {
    //这里是上面的那段程序
    }
    usractTask这个参数是lib文件中定义的一个task函数;
    就是那种usractTask
    static void usractTask(void)
    {
    ……
    while(1)
    {
    ……
    }
    ……
    }就是这种。
      

  6.   

    线程开了,但是不能调用我想调用的那个函数呀?
    CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)usractTask, (LPVOID)1, 0, NULL);需要调用usractTask这个函数,这个函数是在lib文件中的;
    static void usractTask(void)
    {
    ……
    while(1)
    {
    ……
    }
    ……
    }c++里好像没有直接task_create的那种库函数?
      

  7.   

    你的意思是直接调用静态连接库Lib里面的一个函数?
      

  8.   

    LZ 是从嵌入式 转型MFC的?
      

  9.   

    现在用 CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)usractTask, (LPVOID)1, 0, NULL);貌似是可以这样写。
    但是总是出现计算机死机的情况,具体是当我执行CreateThread的时候,计算机会死好一会。
    而且之后每动一下(即使ALT+Tab)也会死,算是不能正常执行程序了。
    不知道怎么回事。