окно cmd.exe в форме Form1... как?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
окно cmd.exe в форме Form1... как? - 2007-08-27 16:26:31.356666
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
Доброго времени суток, уважаемые….. Имеем: 1. окно Form1 Хотим получить: в ОКНЕ Form1 стандартную виндовую сомандную консоль (cmd.exe). (уточню задачу во избежании недоразумений…. требуется поместить окно консоли В окно Form1… ) заранее спсб за грамотные ответы….
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-27 17:11:48.680000
|
|
|
TeNbOK
Сообщений: 154
Оценки: 0
Присоединился: 2007-08-21 11:04:41.766666
|
Скорее всего придется написать обработчик, так сказать, свой интерпретатор…. поместить цмд-окошко в твою форму не выйдет, разве что через инет-компоненты попробуй… хотя скорее всего тоже не выйдет :))
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-27 17:43:33.083333
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
надеюсь это как-то поможет http://www.rsdn.ru/Forum/?mid=102880 Напрямую запихнуть - врядли
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-27 18:08:42.820000
|
|
|
Kill_em_all
Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
|
quote:
Скорее всего придется написать обработчик, так сказать, свой интерпретатор…. При помощи пайпов (pipes) можно перенаправить ввод/вывод командной строки. Подкрепить примером не смогу(сам не пробовал), но на каком-то форуме видел вопрос с перенаправлением. Даже по-моему на исходниках.ру
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-27 18:22:25.080000
|
|
|
redsh
Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
|
Запускаешь прогу через CreateProcess, в STARTUPINFO: si.dwFlags = STARTF_USESTDHANDLES; si.hStdError = GetStdHandler(STD_ERROR_HANDLE); потом CreatePipe(&hIn, &si.hStdOutput, 0, 0); CreatePipe(&si.hStdInput, &hOut, 0, 0); дальше все просто: for (;;) { DWORD code; if (!GetExitCodeThread(pi.hThread, &code)) // pi это структура return -1; // PROCESS_INFORMATION if (code == STILL_ACTIVE) { // Читаем с помощью hIn // Пишем с помощью hOut } else break; } CloseHandle(si.hStdInput); CloseHandle(hOut); CloseHandle(si.hStdOutput); CloseHandle(hIn); Выдрал из какого-то FAQ-а, может на что сгодиться
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-27 19:56:59.510000
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
за ответы спасибо…. но к сожелению, все не то(((( 20 часов уже бадаю эту траблу результат нулевой….. пайпы… это конечно хорошо… но задача по другому стоит…..
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-27 22:32:05.090000
|
|
|
int21h
Сообщений: 105
Оценки: 0
Присоединился: 2007-08-25 12:05:16.730000
|
Я непойму для каких целей тебе этот фрейм нужен ? Кинул бы на форму текстбокс с кнопкой и всё …
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-27 23:11:44.480000
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
уважаемый … int21h … прошу Вас перечитать внимательно 1й пост и впредь воздержаться от подобных вопросов…
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 00:50:59.940000
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
quote:
ORIGINAL: Mkey уважаемый … int21h … прошу Вас перечитать внимательно 1й пост и впредь воздержаться от подобных вопросов… Ну реально, не всегда то, что спрашивает вопрошающий, соответствует его желанию. Без обид. Статистика. Может как-то можно обойти. В принципе, хочется услышать зачем это можно использовать.
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 03:06:40.390000
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
прога-шпора….. с регулировкой видимости и куча ещё всяких настроек…. в принципе все продумано…. во время сдачи тестов на компе остается время…. вот хотелось бы без палева по компу полазить….. ссылку в личку закинул…
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 03:10:33.350000
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
quote:
Может как-то можно обойти. обойти в моем случае усложнить….. цель упростить…
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 09:49:20.616666
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
Погоди, ты решил поуправлять cmd-окном? И для этого хочешь его в свою форму пихнуть? Ну не знаю… Может попробовать поработать с ним как с внешним. Или не с ним. В принципе, можно взять любой файл менеджер типа фар или тотал командер, и порулить им. Там командная строка тоже поддерживается.
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 13:49:48.840000
|
|
|
5_nix
Сообщений: 231
Оценки: 0
Присоединился: 2007-02-26 00:43:17.386666
|
Может через ShellExecute , например так:
uses ..., ShellAPI;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, nil, 'C:\WINDOWS\system32\cmd.exe', nil, nil, SW_SHOW);
end; Это конечно не в форме, но всеравно из программы вызывается.
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 13:56:34.290000
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
quote:
ORIGINAL: 5_nix Может через ShellExecute , например так:
uses ..., ShellAPI;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, nil, 'C:\WINDOWS\system32\cmd.exe', nil, nil, SW_SHOW);
end; Это конечно не в форме, но всеравно из программы вызывается. Ну ему потом надо с этим хэндлом играть. вызывать его в других функциях. Я не уверен, что досковое окно будет адекватно себя вести. Хотя пробовать надо.
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 14:06:26.656666
|
|
|
5_nix
Сообщений: 231
Оценки: 0
Присоединился: 2007-02-26 00:43:17.386666
|
Перед тем как отписать, я сначала это чудо накатал и попробовал. Вывод: cmd запускается, команды выполняются; следовательно код работоспособный. Вопрос в другом, подходит ли это автору…
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 15:01:06.370000
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
quote:
ORIGINAL: 5_nix Перед тем как отписать, я сначала это чудо накатал и попробовал. Вывод: cmd запускается, команды выполняются; следовательно код работоспособный. Вопрос в другом, подходит ли это автору… Да при чем тут вызов внешнего приложения. ему окно его обрабатывать надо
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 15:27:14.356666
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
цитирую кусок из 1го поста…. quote:
(уточню задачу во избежании недоразумений…. требуется поместить окно консоли в окно Form1… ) все что мне надо "привязать" консоль к форме…. и ввод-вывод делать в этой консоли… отдельно болтающееся окно консоли мне не подходит….. вот вам пример http://slil.ru/24787881
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 16:20:58.333333
|
|
|
redsh
Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
|
Скажи поподробнее что чего ты хочешь добиться? В общем случае ты *не сможешь* запихнуть консоль в свою форму как контрол, ведь она работает в другом процессе. Если ты хочешь, например, получить окно с несколькими контролами и консолью, то тебе лучше внедрить dll-ку в cmd.exe с помощью хуков или шеллкода, перехватить WndProc и работать с окном консоли как со своим (создавать контролы и т.д.). В любом случае такие вещи лучше писать на Си! Альтернативный вариант - сделать дырку в форме с помощью SetWindowRgn и таскать консоль за своей формой с помощью MoveWindow чтобы позиция консоли относительно формы не менялась (ну там скрывать, показывать и т.д.). Это конечно, крутое извращение, но работать (наверное) будет.
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 17:39:18.360000
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
quote:
Если ты хочешь, например, получить окно с несколькими контролами и консолью да….. quote:
В любом случае такие вещи лучше писать на Си! да хоть в машинных кодах… пример прошу….
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 17:41:00.316666
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
quote:
Альтернативный вариант - сделать дырку в форме с помощью SetWindowRgn и таскать консоль за своей формой с помощью MoveWindow чтобы позиция консоли относительно формы не менялась (ну там скрывать, показывать и т.д.). Это конечно, крутое извращение, но работать (наверное) будет. ответ - пост 11
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 18:04:13.610000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
имхо, тут два варианта. либо забивая на вендовый эмулятор терминала писать собственный, либо играться с окошком cmd.exe, заставляя его отображаться там, где надо. что проще – это ещё вопрос. мне кажется что эмулятор написать проще. в создании собственного терминала один существенный минус. насколько я знаю венда не предоставляет способа создать канал IPC типа *nix'ового pseudo-terminal'а. придётся пользоваться pipe'ами, а это может не понравиться отдельным приложениям, которые будут выполнятся с перенаправлением io в pipes. если же моё "имхо" насчёт двух вариантов неверно, то значит есть ещё один способ – выковырять из cmd.exe способ, которым он создаёт окошко. даже наверное это можно и, наверное даже, впоследствии использовать это будет несложно, но… такой геморрой мне видится на этом пути, что наверное проще всё-таки выбирать из первых двух вариантов. а вообще, половина всего сказанного – это домыслы основанные на косвенных данных. решил было их проверить, и мне сильно понравилась первая ссылка в "гугль://windows+terminal+emulator+console". посмотри что это. отпишись. мне честно говоря тоже интересно: 1. как эта хрень работает – какой и перечисленных мною способов использует 2. работают ли в ней всяческие псевдографические far'ы и тп.
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 19:02:11.106666
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
Тяжело будет "играться с окошком cmd.exe". Тупо запускаем Spy++ и пытаемся искать окно. Ну хэндл она показывает, авот захватить не может: quote:
The specified window cannot be spied upon. Windows will not allow access to the message stream for this window Это сцепифика командных окон. В ФАРЕ та же фигня. Я когда играл буфером обмена, в свое время, заметил, что половина мессагов не проходят. Скажем wm_past не пройдет командному окну. А программно нажать Ctrl+V - можно. т.е. сможет-ли автор заставить "клеяться" Cmd окно к своей форме - большой вопрос. ИМХО, третий путь более верный Нада пробовать
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 19:28:13.703333
|
|
|
redsh
Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
|
Пробовал перехватить WinProc консоли - не получается: SetWindowLong возвращает 0 (GWL_WNDPROC - ERROR_INVALID_INDEX, сцуко). С GUI-шными прогами, естественно, всё впорядке, короче, вот прожектик на VS: http://redsh.iplot.ru/stuff/cmdglyph.zip Пробовал управлять окошком консоли посредством танцев с бубном и функции AttachThreadInput - не получается, видите ли, "Cannot attach to system thread". Других способов я пока не припомню. Но в любом случае чтобы воткнуть окно консоли в форму, придётся внедряться в процесс (или внедрять процесс cmd.exe в свой), а это жуткий гемморой (смотри мой прожектик). Так что, помоему, всё таки лучше юзать пайпы…
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 19:43:10.153333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: redsh Пробовал перехватить WinProc консоли - не получается: SetWindowLong возвращает 0 (GWL_WNDPROC - ERROR_INVALID_INDEX, сцуко). насколько я понимаю вопрос – окно консоли, оно "не совсем" окно… в винде ведь есть консольное приложение, есть gui'шное. кстати, вовсе не факт, что cmd вообще создаёт окна. да! точно, скорее всего он этого не делает, этим занимается кто-то ещё. не думаю что ядро, но… почему бы и нет? если вендовая графика в ядре, то почему бы окну консоли не быть там. короче не знаток я венды, не знаю, гадать не хочу. но собственно я ведь дал ссылку. там программа которая, как заявлено, создаёт эти консоли пачками в виде табов. почему бы не посмотреть как она это делает?
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 20:30:05.070000
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
alexbozhko, redsh, rgo - спасибо за советы буду ковИряться….
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 22:13:09.660000
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
quote:
ORIGINAL: Mkey alexbozhko, redsh, rgo - спасибо за советы буду ковИряться…. Там все же глянь по ветке с rsdn. Там линк на какой-то рабочий компонент пак. Линк, вроде, живой. То или не то - не уверен, но похоже.
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 22:25:48.590000
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
quote:
ORIGINAL: rgo quote:
ORIGINAL: redsh Пробовал перехватить WinProc консоли - не получается: SetWindowLong возвращает 0 (GWL_WNDPROC - ERROR_INVALID_INDEX, сцуко). насколько я понимаю вопрос – окно консоли, … в винде ведь есть консольное приложение, есть gui'шное. кстати, вовсе не факт, что cmd вообще создаёт окна. да! точно, скорее всего он этого не делает, этим занимается кто-то ещё. не думаю что ядро, но… почему бы и нет? если вендовая графика в ядре, то почему бы окну консоли не быть там. короче не знаток я венды, не знаю, гадать не хочу. но собственно я ведь дал ссылку. там программа которая, как заявлено, создаёт эти консоли пачками в виде табов. почему бы не посмотреть как она это делает? В том-то и проблема. оно "не совсем" окно" Похоже, что вот родительское окно, как-раз и окно Хэндл у него есть А внутри нечто без хэнла Поэтому спай ++ его и зацепить не может. Ну это так, догадка.
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 22:29:50.566666
|
|
|
girlwap
Сообщений: 181
Оценки: 0
Присоединился: 2007-08-28 17:57:48.130000
|
А зачем тебе это надо. Ведь это всё равно невозможно. правильно тебе люди говорят.
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 22:33:11.230000
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
quote:
ORIGINAL: girlwap А зачем тебе это надо. Ведь это всё равно невозможно. правильно тебе люди говорят. Возможно все. Возможно и свою винду написать. Которая "правильно" с CMD работать будет Вопрос в том как это сделать "меньшей кровью".
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 22:38:49.913333
|
|
|
girlwap
Сообщений: 181
Оценки: 0
Присоединился: 2007-08-28 17:57:48.130000
|
quote:
ORIGINAL: alexbozhko quote:
ORIGINAL: girlwap А зачем тебе это надо. Ведь это всё равно невозможно. правильно тебе люди говорят. Возможно все. Возможно и свою винду написать. Которая "правильно" с CMD работать будет Вопрос в том как это сделать "меньшей кровью". Конечно возможно написать свою OC но только зачем это надо
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-28 23:10:15.270000
|
|
|
Yashin
Сообщений: 964
Оценки: 0
Присоединился: 2007-05-09 20:18:01.153333
|
не понял, а чем тебе пайпы то не нравятся? делаешь только вывод на свое окно со своим шрифтом, так еще и с цветами поиграться можно будет. Ну а если так очень надо - делаешь fixedsys с черным фоном и белым текстом.
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-08-29 09:33:16.696666
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
quote:
не понял, а чем тебе пайпы то не нравятся? ответ на Ваш вопрос в 6 и 11 посте..
|
|
|
RE: окно cmd.exe в форме Form1... как? - 2007-09-01 18:51:49.340000
|
|
|
Mkey
Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
|
тему можно закрыть…. вопрос решен….. http://forum.antichat.ru/threadnav39636-58-10.html
|
|
|
|
|