Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

MDI Child в роли досовой консоли   Найти похожие ветки 

 
ssk ©   (2004-11-24 14:20) [0]

Всем привет! Кто-нибудь знает, как реализовать сабж или в принципе невозможно?

З.Ы. разного рода советы "кинь Memo & Edit" просьба не предлагать.


 
TUser ©   (2004-11-24 14:41) [1]


> З.Ы. разного рода советы "кинь Memo & Edit" просьба не предлагать.

А чего так?


 
Rem ©   (2004-11-24 14:43) [2]

О какой "досовой" консоли идет речь?

Вы уточните, что вам нужно: консольное приложение, которое, на самом деле, к DOS не имеет никакого отношения, или командная строка*, которая к DOS тоже никакого отношения не имеет?

* Платформа NT


 
Digitman ©   (2004-11-24 14:47) [3]

дурней не придумаешь - пытаться засандалить досову консоль в кач-ве доч.окна

никто не ограничивал пока еще назначение StdIn- и StdOut-дивайсов для ассоциированного с досовой консолью ввода/вывода


 
ssk ©   (2004-11-24 14:56) [4]

>дурней не придумаешь - пытаться засандалить досову консоль в кач-ве доч.окна

согласен на все 100%, но надо сделать именно так. это не я придумал такую прихоть. так что если есть идеи - предлагайте.

>Вы уточните, что вам нужно:

есть MDIChild. в нем нужно реализовать полную работу командной строки, как в NT


 
TUser ©   (2004-11-24 14:57) [5]


> это не я придумал такую прихоть.

Сделай [3] (или через пайпы) - пусть заказчик/начальник/препод думает, что это ДОС-консоль.


 
ssk ©   (2004-11-24 15:06) [6]

Спасибо за ответы. Буду разбираться дальше.


 
GuAV ©   (2004-11-29 18:21) [7]

Кое что получилось. А именно - запуздырить коммандную строку в обычное SDI окно.
IMHO, ещё немного поэкспериментировать и будет сабж.

function EnumThreadWndProc(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
begin
 SetParent(hWnd, lParam);
 Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 Wnd: HWND;
 SI: TStartupInfo;
 PI: TProcessInformation;
begin
 case SysUtils.Win32Platform of
   VER_PLATFORM_WIN32_WINDOWS: //  проверено в Win98
     begin
       FillChar(SI, SizeOf(SI), 0);
       SI.cb := SizeOf(SI);
       Win32Check(CreateProcess(nil, "COMMAND.COM",
          nil, nil, False, 0, nil, nil, SI, PI));
       try
         WaitForInputIdle(PI.hProcess, INFINITE);
         EnumThreadWindows(PI.dwThreadId,
           @EnumThreadWndProc, Handle);
       finally
         CloseHandle(PI.hThread);
         CloseHandle(PI.hProcess);
       end;
     end;
   VER_PLATFORM_WIN32_NT:  //  проверено в WinXP
     begin
       FillChar(SI, SizeOf(SI), 0);
       SI.cb := SizeOf(SI);
       Win32Check(CreateProcess(nil, "COMMAND.COM",
         nil, nil, False, 0, nil, nil, SI, PI));
       try
         WaitForInputIdle(PI.hProcess, INFINITE);
         repeat
           Wnd := FindWindow("ConsoleWindowClass", nil);
           Sleep(50);
         until Wnd <> 0;
         Windows.SetParent(Wnd, Handle);
       finally
         CloseHandle(PI.hThread);
         CloseHandle(PI.hProcess);
       end;
     end;
 end;
end;


 
GuAV ©   (2004-11-29 18:39) [8]

Для MDI идея такая - на каждую ком. строку создавать MDI Child окно, у самой командной строки убирать заголовок и границу и вставлять его в это MDI Child окно, сообщения для Child типа WM_GETMINMAXINFO, SIZE пересылать окну ком. строки. Короче делается.

Различия 9х и ХР: WaitForInputIdle - в 9х вернёт когда все окна созданы, в ХР почему-то раньше. В ХР одно окно  "ConsoleWindowClass", а в 9х несколько окон.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх









Память: 0.84 MB
Время: 0.056 c
14-1100888374
VID
2004-11-19 21:19
2004.12.12
Вопрос о настройке лок сети с выходом в инет.


3-1100244981
lightix
2004-11-12 10:36
2004.12.12
Сжать DBF


4-1098956217
Cheburek
2004-10-28 13:36
2004.12.12
Как создать виртуальный СD ? Как написать драйвер ?


1-1101891456
Victor!
2004-12-01 11:57
2004.12.12
Инсталлятор BDE


1-1101743824
NSerge
2004-11-29 18:57
2004.12.12
Сохранение в кодировке DOS(866)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский