Конференция "WinAPI" » Ввод команды в другое окно [D7, WinXP]
 
  • andrewson (22.11.11 02:14) [0]
    кто знает так подключится к процессу и ввести команду? очень нужно спасибо заранее.
    Окно имя известно тип и хендл не известны нужно вводить команду и нажать клавишу ентер но пользователь должен управлять другим окном не видя его .Помогите!
  • Германн © (22.11.11 05:01) [1]

    > кто знает так подключится к процессу и ввести команду?

    А что такое "команда" в данном контексте?
    "Хенде хох"?
    :)
  • Leonid Troyanovsky © (22.11.11 06:27) [2]

    > andrewson   (22.11.11 02:14)  

    > команду и нажать клавишу ентер но пользователь должен управлять
    > другим окном не видя его

    Невидимые окна не обязаны реагировать на пользовательский ввод.

    --
    Regards, LVT.
  • andrewson (22.11.11 19:44) [3]
    ну мне нужно ввести текстовую команду такого типа 'chat '+edt2.text+'(нажатие ентер)' прилагаю скрин (http://s017.radikal.ru/i409/1111/0b/18703a393a4f.jpg) окно видимое .
  • Сергей М. © (23.11.11 10:06) [4]

    > тип и хендл не известны


    Ну так выясни для начала)
    Или предлагаешь чтобы за тебя кто-то это сделал телапатически ?

    От этого ж и решение напрямую зависит..
  • andrewson (23.11.11 17:18) [5]
    клас TEXT_CONSOLE_LOG_WND  хендл 66966 имя XRAY Text Console Log
    Помогите мужики вся проблема в этом деле....
  • Омлет © (23.11.11 23:11) [6]
  • Омлет © (23.11.11 23:13) [7]
  • andrewson (23.11.11 23:17) [8]
    НЕ ПОНЯТНО ВЫ МНЕ ДЛЯ БЕЙСИКА И С++ СКИДУЕТЕ Я НА ДЕЛЬФИ ПИШУ МУЖИКИ ОБЬЯСТНИТЕ !!!!
  • Омлет © (23.11.11 23:26) [9]
    Вот тебе на Delphi: http://www.koders.com/delphi/fidDB05C6361540F62D532FC7C960D4111CE3AAEDB3.aspx
    Только консольный процесс ты должен запускать сам, чтобы перенаправить ввод.
  • andrewson (23.11.11 23:50) [10]
    тут такое дело просто всё єто целиком мне не катит всё єто дело должно у меня быть в 1 юните и выполнятся с нажатия клавиши
  • Германн © (24.11.11 00:51) [11]

    > andrewson   (23.11.11 23:50) [10]
    >
    > тут такое дело просто всё єто целиком мне не катит всё єто
    > дело должно у меня быть в 1 юните и выполнятся с нажатия
    > клавиши

    Тогда плюнь на это и займись чем нибудь простым.
  • Омлет © (24.11.11 01:00) [12]
    > andrewson   (23.11.11 23:50) [10]

    uses uZpRunConsoleApp;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     ExecuteConsoleApp('cmd', '', Memo1.Lines);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
     WriteLnToConsoleApp('help');
    end;

    procedure TForm1.Button3Click(Sender: TObject);
    begin
     StopConsoleApp;
    end;

  • Омлет © (24.11.11 01:01) [13]
    Если даже готовым кодом воспользоваться не можешь, рано тебе писать программы.
  • andrewson (24.11.11 18:13) [14]
    у меня вылет при нажатии на Button1
    компонент установил не понимаю в чём причина код вылета давать?
  • Омлет © (24.11.11 20:17) [15]

    > код вылета давать?

    давать.
  • andrewson (24.11.11 21:08) [16]
    при компиляции ругается а это дело
    http://s017.radikal.ru/i440/1111/cd/5a2717c27e5f.jpg
    а что нужно вводить сюда?
    ExecuteConsoleApp('cmd', '', Memo1.Lines);
    На место cmd название процесса или имя файла ?
  • andrewson (24.11.11 21:08) [17]
    при компиляции ругается а это дело
    http://s017.radikal.ru/i440/1111/cd/5a2717c27e5f.jpg
    а что нужно вводить сюда?
    ExecuteConsoleApp('cmd', '', Memo1.Lines);
    На место cmd название процесса или имя файла ?
  • Омлет © (24.11.11 22:11) [18]
    Это просто предупреждение о небезапасном типе (под .Net), лучше вообще в настройках проекта отключить сообщения на Unsafe type.

    > На место cmd название процесса или имя файла ?

    Полный путь до запускаемого консольного приложения. С параметрами, если они есть. Кстати, в этом модуле есть комментарии..

    Так что же вылетает при нажатии на кнопку?
  • andrewson (25.11.11 00:20) [19]
    А зачем тут memo1.lines что в него параметры запуска?
  • andrewson (25.11.11 00:27) [20]
    я вам скину исходник клавиша starttest помогите (http://ua-privod.at.ua/x-pai.rar)
  • Омлет © (25.11.11 09:24) [21]
    > andrewson   (25.11.11 00:20) [19]
    > А зачем тут memo1.lines что в него параметры запуска?


    function ExecuteConsoleApp(const aCommandLine: string;
     const aCurrentDir: string = '';
     const aAppOutput: TStrings = nil;
     const aOnNewText: TZpOnNewTextEvent = nil;
     const aOnNewLine: TZpOnNewTextEvent = nil;
     const aEnvironment: TStrings = nil;
     const aProcessPriority: TZpProcessPriority = ppNormal): Cardinal;
     {: Starts console application (without window).

       Parameters:
       ----------
       aCommandLine
           Command line (name+params) for the console application. It is
           recommended the name to include the full path to prevent unexpected
           errors.

       aCurrentDir
           Current dir for console application. If the parameter is empty string
           for current dir will be considered the dir of the invoking program.

       aAppOutput
           List with all texts returned from the application.

       aOnNewText
           Event, that is called for each text fragment, recevied from the
           application. When called the prameter "Sender" is nil.

       aOnNewLine
           Event, that is called for each new row received from the application.
           When called the prameter "Sender" is nil.

       aEnvironment
           List with environment variable definitions of the console application.
           Elements must be ANSI, not Unicode and in format 'name=value'.

       aProcessPriority
           Priority of execution for the console application.

       Return codes:
       -------------
         ExitCode of the appliccation or MAXDWORD, if the application did not close
       after internal timeout had occured (CTerminationWaitTime).
         In a case of fatal exception, invokes Exception from type EOSError.

       Notes:
       ------
       - If all three parameters for feedback (aAppOutput, aOnNewText, aOnNewLine)
         are missing, the procedure will be executed correctly, but there will be
         no information about the returned from the process messages.
       - After text is received from the console application, first aOnNewText (if
         set) is invoked with the received full text. After that if the text
         contains new lines, for each new line the following is repeated: it will
         be added to aAppOutput (if set) and aOnNewLine (if set) is called.
       - This procedure is not thread-safe! To be called once and wait until it
         finishes!
     }



    В aAppOutput попадает всё, что выводит консольное приложение. Т.е. ты перенаправляешь вывод в свой TStrings. Memo здесь только для демонстрации.

    Параметры запуска в aCommandLine.

    > я вам скину исходник

    Там, похоже, не хватает одной мелочи под названием Unit1.pas.
  • andrewson (25.11.11 09:39) [22]
    файл в архиве есть перекачайте
  • Омлет © (25.11.11 10:03) [23]
    Вау... Нет слов. Вот скажи, ты умышленно проставил все, какие мог, галочки в настройках проекта или был под препаратами? )

    Чтобы не вылетало, в настройках проекта, на вкладке Compiler сними галку "Complete boolean eval", сохрани проект и перекомпилируй.
  • andrewson (25.11.11 17:29) [24]
    заработало сейчас разбираюсь а если мне нужно параметы зппуска то просто нужно указать переменную или куда их записывать? ПРОСТО САМА СТРОКА ПАРАМЕТРОВ В зависимости от выбраніх параметров меняется извените за капс Клавиатура сломана
  • CRLF (25.11.11 17:44) [25]
    при сломе клавиатуры особенно пострадали знаки препинания
  • andrewson (25.11.11 18:02) [26]
    теперь другой вопрос сменил строку запуска так как мне нужно
    ExecuteConsoleApp('dedicated/xrengine.exe', param, mmo3.Lines);


    Под понятием param я имею ввиду параметры запуска которые генерируются следующим кодом
    param:=('-i -nosound -$sv_status -fsltx ..\fsgame_s1.ltx -start server('+edt7.text+'/'+gamemode+'/etimef=1/estime=9/vote='+vote1);
       begin
       param:=(param+'/psw='+edt9.text);
       end;
       param:=(param+'/warmup=0/fraglimit='+edt2.Text+'/public='+lan+'/ffire='+edt8.text+'/hname='+edt1.Text+'/maxplayers='+maxpalyers+'/spectr='+speac+'/portgs='+edt3.Text+'/portsv='+edt4.Text+') client(localhost/portcl='+edt5.Text+')');


    а в mmo3 я записую лог но при нажатии на клавишу вылетает не запуская само приложение вот пару скринов
    (http://i062.radikal.ru/1111/87/b14aea88f918.jpg) (http://s008.radikal.ru/i304/1111/c4/60ce28f61472.jpg)
  • andrewson (25.11.11 18:06) [27]
    CRLF у меня, просто, мало времени на эти нюансы. Лучше помогите новая проблема в сообщение №26
  • Омлет © (25.11.11 18:28) [28]

    > andrewson   (25.11.11 18:02) [26]

    Сообщение [21] ты пропустил что ли? Вся строка запуска вместе с параметрами идет первым параметром. Второй - это рабочая директория.

    Запускай так:
    ExecuteConsoleApp('dedicated/xrengine.exe '+ param, '', mmo3.Lines);


    А лучше - указывай полный путь до xrengine.exe.
  • andrewson (25.11.11 18:32) [29]
    спасибо у тебя есть какие то способы связи?(скайп,E-mail)Ответь может составишь команду тут еще есть не мало вопросов
  • Омлет © (25.11.11 18:32) [30]
    Я советую скачать/купить какой-нибудь самоучитель по Delphi и внимательно прочитать. Это сэкономит кучу времени в будущем.
  • Омлет © (25.11.11 18:38) [31]
    > andrewson   (25.11.11 18:32) [29]

    Да, я чувствую, что вопросов будет еще немало.
    Но мне твой проект интереса не представляет, если только он не коммерческий )
  • andrewson (25.11.11 18:41) [32]
    Спасибо Омлет но теперь другая проблема.Запускается отлично но
    1)Лог не сливается в mmo3.lines
    2)При остановке вылетает с ошибкой(но программу закрывает)
    3)Не отсылается команда чата.
    Скрины
    При закрытии
    (http://s54.radikal.ru/i146/1111/47/ee34453924c1.jpg)
    (http://s004.radikal.ru/i207/1111/19/ef32f4f7c997.jpg)
    Хелп!
  • andrewson (25.11.11 18:44) [33]
    Омлет проект важный деньги от инвесторов идут, потому что их задрал контролёр и прочие программы хочется все в 1 .Должно заинтересовать.
  • Омлет © (25.11.11 18:50) [34]
    Отключи "Range checking" там же, где стояло "Complete boolean eval".
    А заодно и "Oveflow checking", "Typed @ operator" и "Assignable typed constants".
  • andrewson (25.11.11 18:54) [35]
    Программа теперь закрывается корректно.
    Осталась проблема чата и лога ,а во втором логе должно выводить только чат.
    Знаю что нужно перебирать до нужных слов в строке, но не знаю как правильней организовать
  • Омлет © (25.11.11 19:08) [36]

    > andrewson   (25.11.11 18:54) [35]

    Написал тебе на почту. Ибо уже офтопик пошел, модератор может удалить.
  • andrewson (25.11.11 19:11) [37]
    пусто...
  • Омлет © (25.11.11 19:13) [38]

    > пусто...

    хз, может в спам попало. Писал на shutandrei@ukr.net.
  • andrewson (25.11.11 19:22) [39]
    я отписал
  • andrewson (25.11.11 21:47) [40]
    ну что так молчим? проблема стоит
  • DiamondShark © (26.11.11 15:14) [41]

    > andrewson   (25.11.11 21:47) [40]
    > ну что так молчим? проблема стоит

    Сумма не озвучена, вот и молчим.

    У тебя инвесторы, а ты тут халяву выцыганиваешь.
  • andrewson (27.11.11 00:45) [42]
    кхем у меня контракт с инвесторами односторонний и сумма не разгалшается
  • DiamondShark © (27.11.11 00:57) [43]

    > andrewson   (27.11.11 00:45) [42]

    Да плевать на твой контракт с инвесторами.
    Сумму назови, сколько готов выложить за написание программы вместо тебя.
 
Конференция "WinAPI" » Ввод команды в другое окно [D7, WinXP]
Есть новые Нет новых   [134430   +4][b:0][p:0.003]