Форум: "WinAPI";
Текущий архив: 2012.01.22;
Скачать: [xml.tar.bz2];
ВнизGUI & Console Найти похожие ветки
← →
uinor (2009-09-24 22:09) [0]Понимаю, что наркоманство, но требуется реализовать оба режима (GUI & Console) в одной программе, при этом основным режимом является GUI, но в случае, если есть параметры командной строки, то выводим все в консоль.
Своя консоль - это легко. Требуется сделать вывод в родительскую.
Реализовал следующим образом (понимаю, что минимум Windows XP):var
ConsoleOutput: Boolean;
AttachConsole: function(dwProcessId: Cardinal): Boolean; stdcall;
procedure WriteConsole(const AOutputStr: string);
begin
if WriteLog then
WriteLn(AOutputStr)
else
... skipped ...
end;
begin
if (ParamCount > 0) then
begin
// Пробуем наладить консоль
ConsoleOutput := False;
AttachConsole := GetProcAddress(GetModuleHandle("kernel32.dll"), "AttachConsole");
if (@AttachConsole <> nil) then
ConsoleOutput := AttachConsole($FFFFFFFF);
WriteLog("Console Mode!");
end else
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.Title := "Requte";
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
end;
end.
Все нормально. Но есть небольшая проблема - когда мы выполняем cmd myApp.exe >myApp.log получаем i/o exception на WriteLn.
Интуитивно, я понимаю, что надо решать как-то иначе, уж слишком в лоб решение. Подскажите?
← →
uinor (2009-09-24 22:10) [1]
procedure WriteLog(const AOutputStr: string);
begin
if (ConsoleOutput) then
WriteLn(AOutputStr)
else
... skipped ...
end;
Поправочка. Приношу свои извинения, код правил прямо здесь.
← →
Leonid Troyanovsky © (2009-09-25 08:06) [2]
> uinor (24.09.09 22:09)
> Все нормально. Но есть небольшая проблема - когда мы выполняем
> cmd myApp.exe >myApp.log получаем i/o exception на WriteLn
Похоже на косяк by M$.
> Интуитивно, я понимаю, что надо решать как-то иначе
Правильно понимаешь.
Ничего лучше, чем написать два приложения не придумали.
И МС так делает.
В крайнем случае 3: - сервер и 2 клиента.
--
Regards, LVT.
← →
uinor (2009-09-25 08:17) [3]@Leonid Troyanovsky
Целиком с вами согласен.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2012.01.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c