小编The*_*End的帖子

CreateProcess()不会使用CREATE_NEW_CONSOLE标志创建一个新窗口 - C/C++

我一直在尝试使用Windows API创建一个使用CreateProcess()的进程.即使在浏览网页后,我也无法出于某种原因创建新的控制台.

我做的研究:

我使用MSDN示例代码作为我应该在函数中使用的参数的基础:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682512%28v=vs.85%29.aspx

我阅读了以下MSDN文章,了解有关如何创建新控制台窗口的信息:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682528%28v=vs.85%29.aspx

我也读了一个类似的SO问题来解决有同样问题的人:

CreateProcess不会在Windows 7下创建其他控制台窗口?

结果:

我已经编写了我将在下面发布的代码,其中包含创建新控制台所需的所有要求,但它的行为并不像预期的那样.我花了很长时间试图自己找到答案,但上面的文章是我通过谷歌找到的唯一相关的.会发生什么是创建过程,但它在我的C程序控制台中.我希望能够创建这个过程,而不会让我的程序控制台进入.

还有其他差异.如果我在do-while循环中打印了很多字符而没有Sleep()来减慢它的速度,则TerminateProcess()将失败并且拒绝访问,当我按下转义键时程序将崩溃.这也是不希望的行为.

这是我现在的C程序:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define WIN32_LEAN_AND_MEAN
#include <process.h>
#include <windows.h>

#define IS_PRESSED( vk ) ( GetAsyncKeyState( vk ) & 0x8000 )

typedef struct process
{
    PROCESS_INFORMATION p_info;
    STARTUPINFO s_info;
} process;

void win_error( char * message, int is_exit )
{

    char buffer[BUFSIZ] = { 0 };
    DWORD error_code = GetLastError( );

    FormatMessage
    (
        FORMAT_MESSAGE_FROM_SYSTEM,
        NULL,
        error_code,
        MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ),
        ( LPTSTR ) buffer, …
Run Code Online (Sandbox Code Playgroud)

c c++ winapi process batch-file

7
推荐指数
1
解决办法
7505
查看次数

标签 统计

batch-file ×1

c ×1

c++ ×1

process ×1

winapi ×1