CreateProcess调用一个bat,
我想取道这个bat的句柄(HWND类型的),怎么取?

解决方案 »

  1.   

    或者其他方法能启动另外一个进程,并且能够得到它的HWND类型的句柄也可以
      

  2.   

    函数功能:该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。    函数型:HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName);    参数:    IpClassName :指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobafAddAtom函数产生的全局成员。该成员为16位,必须位于IpClassName的低 16位,高位必须为 0。    IpWindowName:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为空,则为所有窗口全匹配。    返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄;如果函数失败,返回值为NULL。    若想获得更多错误信息,请调用GetLastError函数。    备注:Windows CE:若类名是一个成员,它必须是从 RegisterClass返回的成员。
      

  3.   

    但是我是调用一个bat啊。类名写什么?窗口名(窗口标题)又是什么?(应该写..cmd.exe)但是这个不能保证是我调起来的啊。又可能是刚好打开了其他的cmd窗口呢。
      

  4.   

    对不起,错了,呵呵
    返回bat的句柄?窗口句柄?呵呵,Bat就是控制台命令的集合,它有窗口吗?呵呵,除非bat文件中调用了或者启动了其他有窗口的进程!
    HWND——》 Handle to a window.
      

  5.   

    那么这么说吧,我想让这个调用得bat窗口隐藏。
    但是我又不想在第6个参数用CREATE_NO_WINDOW
    BOOL CreateProcess(
      LPCTSTR lpApplicationName,                 // name of executable module
      LPTSTR lpCommandLine,                      // command line string
      LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
      LPSECURITY_ATTRIBUTES lpThreadAttributes,  // SD
      BOOL bInheritHandles,                      // handle inheritance option
      DWORD dwCreationFlags,                     // creation flags
      LPVOID lpEnvironment,                      // new environment block
      LPCTSTR lpCurrentDirectory,                // current directory name
      LPSTARTUPINFO lpStartupInfo,               // startup information
      LPPROCESS_INFORMATION lpProcessInformation // process information
    );那么还有其他方法让那个cmd窗口隐藏吗?
      

  6.   

    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;
    si.cb = sizeof(si);
    ZeroMemory(&si, sizeof(si)); 
    CreateProcess(sBatPath, NULL,NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi);
    WaitForSingleObject(pi.hProcess, INFINITE);
      

  7.   

    因为第6个参数我想用CREATE_NEW_CONSOLE, 但CREATE_NEW_CONSOLE和CREATE_NO_WINDOW
    好像不能同时用,有了前者,就无法隐藏。所以我想用ShowWindow的方法来隐藏,这样要HWND
      

  8.   

    用CREATE_NO_WINDOW是可以隐藏的,但是用CREATE_NEW_CONSOLE后,
    好像
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;都没有用。就是隐藏不了?
      

  9.   

    单用
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;
    好像就是不行吗!不管第6个参数怎么设置。
    关键是CREATE_NO_WINDOW就可以。没CREATE_NO_WINDOW就不可以。
      

  10.   

    调用批处理,除了指定CREATE_NO_WINDOW,那个cmd窗体是没办法消除的。
      

  11.   

    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;
    si.cb = sizeof(si);
    ZeroMemory(&si, sizeof(si));
    ============>
    ZeroMemory( &si, sizeof(si) );
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;
    si.cb = sizeof(si);可以!!!
    谢谢。结贴