Click here to Skip to main content
15,886,919 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: COM usage issue Pin
Richard MacCutchan21-Feb-18 21:28
mveRichard MacCutchan21-Feb-18 21:28 
GeneralRe: COM usage issue Pin
Fedrer21-Feb-18 21:35
Fedrer21-Feb-18 21:35 
GeneralRe: COM usage issue Pin
Richard MacCutchan21-Feb-18 21:56
mveRichard MacCutchan21-Feb-18 21:56 
GeneralRe: COM usage issue Pin
Fedrer21-Feb-18 23:51
Fedrer21-Feb-18 23:51 
GeneralRe: COM usage issue Pin
CPallini22-Feb-18 0:30
mveCPallini22-Feb-18 0:30 
QuestionCleaver macro (string concatenation?) or function to optimize size of array by turning it into a struct/linked list? Pin
arnold_w19-Feb-18 22:16
arnold_w19-Feb-18 22:16 
AnswerRe: Cleaver macro (string concatenation?) or function to optimize size of array by turning it into a struct/linked list? Pin
leon de boer20-Feb-18 7:53
leon de boer20-Feb-18 7:53 
QuestionHow to redirect WriteFile func writes to console Pin
Łukasz Gęsieniec18-Feb-18 19:13
Łukasz Gęsieniec18-Feb-18 19:13 
I have a problem with redirect console app output and input. The problem is that any example I found does not work for me. I want to develop WPF GUI for a console app. This is the example code to redirect output:
ProcessStartInfo start = new ProcessStartInfo();<br />
start.FileName = "C:\\myapp.exe"; // Specify exe name.<br />
start.UseShellExecute = false;<br />
start.RedirectStandardOutput = true;<br />
using (Process process = Process.Start(start))<br />
{<br />
    using (StreamReader reader = process.StandardOutput)<br />
    {<br />
        string result = reader.ReadToEnd();<br />
        Console.Write(result);<br />
    }<br />
}

So I did some reverse engineering on the console app and I found that this app is compiled using Microsoft Visual C 6.0. The app uses WriteFile to output to the console and first argument passed to the function equals 7.
I wrote the example code:
#include "stdafx.h"<br />
#include <windows.h><br />
<br />
int main()<br />
{<br />
    AllocConsole();<br />
    HANDLE hStdout;<br />
    HANDLE hStdout2 = (HANDLE)0x00000007;<br />
    char s[] = "Hello world !\r\n";<br />
    char s2[] = "Hello world !CONOUT\r\n";<br />
    char s3[] = "test\r\n";<br />
    DWORD dwBytesWritten;<br />
<br />
    HANDLE hScreenBuffer = CreateFileA("CONOUT$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);<br />
<br />
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE); // hStdout equals 7 after this call<br />
    WriteFile(hStdout2, s3, (DWORD)strlen(s3), &dwBytesWritten, NULL);  //prints always to console <br />
    WriteFile((HANDLE)0x00000007, s3, (DWORD)strlen(s3), &dwBytesWritten, NULL);    //prints always to console <br />
    WriteFile(hStdout, s, (DWORD)strlen(s), &dwBytesWritten, NULL);     //can be redirected; example TestCON.exe > test.txt<br />
    WriteFile(hScreenBuffer, s2, (DWORD)strlen(s2), &dwBytesWritten, NULL);//prints always to console <br />
<br />
    FreeConsole();<br />
<br />
    return 0;<br />
}

I do not understand why this: WriteFile(hStdout, s, (DWORD)strlen(s), &dwBytesWritten, NULL); (hStdout equals 7 checked by debuger) is redirected using my above example code or TestCON.exe > test.txt but this WriteFile((HANDLE)0x00000007, s3, (DWORD)strlen(s3), &dwBytesWritten, NULL); is printed always on the console.
Any suggestions how can I redirect any output to my GUI app?
AnswerRe: How to redirect WriteFile func writes to console Pin
leon de boer18-Feb-18 19:59
leon de boer18-Feb-18 19:59 
GeneralRe: How to redirect WriteFile func writes to console Pin
Łukasz Gęsieniec18-Feb-18 20:10
Łukasz Gęsieniec18-Feb-18 20:10 
GeneralRe: How to redirect WriteFile func writes to console Pin
leon de boer18-Feb-18 21:06
leon de boer18-Feb-18 21:06 
GeneralRe: How to redirect WriteFile func writes to console Pin
leon de boer18-Feb-18 22:45
leon de boer18-Feb-18 22:45 
GeneralRe: How to redirect WriteFile func writes to console Pin
Łukasz Gęsieniec19-Feb-18 0:34
Łukasz Gęsieniec19-Feb-18 0:34 
GeneralRe: How to redirect WriteFile func writes to console Pin
leon de boer19-Feb-18 5:48
leon de boer19-Feb-18 5:48 
GeneralRe: How to redirect WriteFile func writes to console Pin
leon de boer19-Feb-18 6:19
leon de boer19-Feb-18 6:19 
GeneralRe: How to redirect WriteFile func writes to console Pin
Łukasz Gęsieniec19-Feb-18 9:06
Łukasz Gęsieniec19-Feb-18 9:06 
GeneralRe: How to redirect WriteFile func writes to console Pin
Łukasz Gęsieniec19-Feb-18 19:53
Łukasz Gęsieniec19-Feb-18 19:53 
GeneralRe: How to redirect WriteFile func writes to console Pin
leon de boer19-Feb-18 20:14
leon de boer19-Feb-18 20:14 
GeneralRe: How to redirect WriteFile func writes to console Pin
Łukasz Gęsieniec19-Feb-18 22:34
Łukasz Gęsieniec19-Feb-18 22:34 
GeneralRe: How to redirect WriteFile func writes to console Pin
leon de boer20-Feb-18 6:18
leon de boer20-Feb-18 6:18 
GeneralRe: How to redirect WriteFile func writes to console Pin
leon de boer20-Feb-18 6:33
leon de boer20-Feb-18 6:33 
GeneralRe: How to redirect WriteFile func writes to console Pin
Łukasz Gęsieniec20-Feb-18 23:32
Łukasz Gęsieniec20-Feb-18 23:32 
GeneralRe: How to redirect WriteFile func writes to console Pin
leon de boer21-Feb-18 7:12
leon de boer21-Feb-18 7:12 
GeneralRe: How to redirect WriteFile func writes to console Pin
Łukasz Gęsieniec21-Feb-18 19:57
Łukasz Gęsieniec21-Feb-18 19:57 
GeneralRe: How to redirect WriteFile func writes to console Pin
leon de boer22-Feb-18 14:19
leon de boer22-Feb-18 14:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.