1

Тема: ActiveX: Встречал ли кто-нибудь ActiveX волшебный который бы умел…

...рисовать GUI со встраиваемым командным процессором.  Как бы вам объяснить. Ну вот например есть Wget, к нему есть GUI, который создает на своей форме окно, и в это окно впихивает wget. Или например Console2, прога которая создает табы, а в табах крутятся cmd.exe -  процессы.

Ну вот посмотрите например

Хотелось бы писать скрип задействовав, консольные проги, и не плодить пачку черных окон.

Нас невозможно сбить с пути, нам пофигу куда идти.

2

Re: ActiveX: Встречал ли кто-нибудь ActiveX волшебный который бы умел…

DnsIs, ActiveX для сего не нужен. Достаточно запустить cmd.exe и общаться с ним посредством записи в его StdIn и чтения StdOut и StdErr. Записываемое и прочитанное выводить в EditBox.

3

Re: ActiveX: Встречал ли кто-нибудь ActiveX волшебный который бы умел…

Про такое знаю. Мне так не нравится почему то. Получается, что его нужно запустить скрытым окном, что бы не мешался.
Возьмем к примеру WSH.
Метод .Run, позволяет запустить прогу не отображая окно, но не имея StdIn, StdOut и StdErr
Метод .Exec напротив.
Как быть?

Нас невозможно сбить с пути, нам пофигу куда идти.

4

Re: ActiveX: Встречал ли кто-нибудь ActiveX волшебный который бы умел…

DnsIs пишет:

...
Метод .Run, позволяет запустить прогу не отображая окно, но не имея StdIn, StdOut и StdErr
Метод .Exec напротив.
Как быть?

Кажется, с точностью до наоборот. JScript: Проблема с WshScriptExec.Exec. Здесь я обсуждал проблему чтения большого объема из стандартного вывода консольного приложения. Приложение запускается фоном без окон. ИЛи это потому-то я запускал его из консоли же?

( 2 * b ) || ! ( 2 * b )

5

Re: ActiveX: Встречал ли кто-нибудь ActiveX волшебный который бы умел…

Rumata пишет:

ИЛи это потому-то я запускал его из консоли же?

Именно поэтому.
Отсюда решение - запускать скрипт в консоли, но в скрытом окне и использовать WshShell.Exec.

Забыл пароль и потерял e-mail.

6 (изменено: shiz, 2011-10-07 03:47:45)

Re: ActiveX: Встречал ли кто-нибудь ActiveX волшебный который бы умел…

Отсюда решение - запускать скрипт в консоли, но в скрытом окне

Для того чтобы осуществить сказанное можно:
1) создать ярлык на CScript.exe, указав в качестве аргумента путь к скрипту - это можно сделать стандартными средствами пользовательского интерфейса;
2) задать для этого ярлыка выполнение в скрытом окне - стандартными средствами пользовательского интерфейса этого сделать нельзя, но можно сделать программно, например с помощью простого скрипта, передав ему ярлык в качестве аргумента (перетащив на значок этого скрипта):

Set WshShell = CreateObject("WScript.Shell")
For Each Argument In WScript.Arguments
  Set WshShortcut = WshShell.CreateShortcut(Argument)
  WshShortcut.WindowStyle = 0
  WshShortcut.Save
Next

Консольные приложения, запущенные с помощью такого ярлыка, выполняются в невидимом окне, что нам и надо (в случае с CScript.exe), а вот неконсольные почему-то не хотят.

Забыл пароль и потерял e-mail.

7

Re: ActiveX: Встречал ли кто-нибудь ActiveX волшебный который бы умел…

shiz пишет:

а вот неконсольные почему-то не хотят.

shiz, мы можем задать начальное состояние окна, но никак не можем помешать тому, если после своего запуска приложение захочет сделать своё окно видимым.

Кроме создания ярлыка и метода «.Run()» есть также возможность запуска посредством метода «.Create()» класса «Win32_Process» WMI. Суть проблемы в том, что во всех этих случаях нет простого доступа ко входным/выходным потокам приложения.

P.S. Ну, вот ещё и про «.ShellExecute()» подзабыл .

8

Re: ActiveX: Встречал ли кто-нибудь ActiveX волшебный который бы умел…

alexii пишет:

мы можем задать начальное состояние окна, но никак не можем помешать тому, если после своего запуска приложение захочет сделать своё окно видимым.

Есть такое. Например, редактор простого текста Akelpad 2 (classic) напрочь пренебрегает значением WindowStyle при запуске хоть через ярлык, хоть через WshShell.Run - окно принимает развёрнутый или обычный вид в зависимости от того, каким было при закрытии.
Но это исключение, а не общий случай. Microsoft Notepad при запуске через WshShell.Run воспринимает значения WindowStyle 0, 1, 3, 7... а при запуске через ярлык 0 обрабатывается как и 1. Так что дело не в самих приложениях - они могут определить вид окна с которым запущены, но не способ, каким это сделано.

alexii пишет:

Кроме создания ярлыка и... во всех этих случаях нет простого доступа ко входным/выходным потокам приложения.

Ну, ярлык предлагалось создавать не на приложение, а на сам скрипт, точнее на CScript.exe, чтобы невидимым было его окно, а новые консольные окна при вызове WshShell.Exec не создавались.

Забыл пароль и потерял e-mail.