Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с потоками, stdin,stdout 
:(
    Опции темы
Andy_
Дата 11.11.2004, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.11.2004

Репутация: нет
Всего: нет



Так как раньше я писал только консольные приложения у меня возникла проблема при работе со своими функциями(dll) из GUI(.NET) приложения.

Заключается она в след.:

Как в среде .NET отловить stdin поток если происходит вызов функции из dll т.е. этот поток идёт от этой dll.

Например есть длл на С:

#include "stdafx.h"

extern "C" __declspec(dllexport) int Test();

extern "C" __declspec(dllexport) int Test()
{

fprintf(stdout,"Hello users!\n");

return 1;
}

Далее я подгружаю её в свою консольную программу на C#:

using System;
using System.Runtime.InteropServices;

namespace LoadLib
{

class Class1
{
[DllImport ("mydll.dll")]
public static extern int Test();

static void Main(string[] args)
{
try
{

Test(); //Вызываем функц. из длл и получаем stdin на консоль


}
catch(System.EntryPointNotFoundException e)
{
Console.WriteLine(e.Message);
}
}
}
}

В результате получаю на консоль вывод "Hello users!", т.е. всё ок!

Вопрос:

Как мне поймать этот поток в моём GUI(.NET) приложении и перевести его, например в richTextBox или в MessageBox????

Я рассматривал класс System.IO.Stream, но там что то мне сложно сорентироваться.

Заранее огромное пасибо за ответ.
PM MAIL   Вверх
stab
Дата 12.11.2004, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



Думаю стоит покапать в сторону System.Console. Там есть методы SetError, SetIn и SetOut, которые позволяют установить на поток свой System.IO.TextReader или System.IO.TextWriter.

Добавлено @ 03:06
з.ы. в MSDN, кстати, примеры есть в топиках про SetIn, SetOut, ...


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0382 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.