Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CreateProsess, создание ... 
:(
    Опции темы
tigger
Дата 17.10.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Создаю процесс с помощью CreateProsess....
в диспетчере задач вижу его а на экране формы нет как ее показать на экран?


--------------------
user posted image
PM MAIL   Вверх
Yanis
Дата 17.10.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



tigger
Ты нам лучше код покажи smile


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
tigger
Дата 17.10.2006, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Код

procedure TForm1.Button1Click(Sender: TObject);
var
sti: tstartupinfo;
  lpPi: tprocessinformation;
  DE: _Debug_event;
  Cont: _Context;
  WindowName : integer;
  ProcessId : integer;
  ThreadId : integer;
  buf_new, buf_old : PChar;
  HandleWindow : Integer;
  Address: cardinal;
  _write, _read : cardinal;
  a : bool;
begin
  StI.cb := SizeOf(TStartUpInfo);
  StI.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StI.wShowWindow := SW_SHOWNORMAL;

a := CreateProcess(nil, PChar('E:\Program Files\ttt\ttt.exe'), nil, nil, true, DEBUG_PROCESS or DEBUG_ONLY_THIS_PROCESS, nil, nil, StI, lpPI);
end;



--------------------
user posted image
PM MAIL   Вверх
Yanis
Дата 17.10.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



Цитата
STARTF_USESHOWWINDOW    If this value is not specified, the wShowWindow member is ignored.



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
tigger
Дата 18.10.2006, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Yanis, и что это значит по русски можешь сказать.


--------------------
user posted image
PM MAIL   Вверх
Yanis
Дата 18.10.2006, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



tigger
Я не разобрался почему окно программы не отображатеся. Возможно поток спит сразу после запуска...

Цитата(tigger @  18.10.2006,  07:05 Найти цитируемый пост)
Yanis, и что это значит по русски можешь сказать. 

Это значит, что если ты указываешь STARTF_USESHOWWINDOW, то параметр wShowWindow не обязательно указывать -- он игнорируется.

И ещё. Не забывай вначале обнулять структуры:
Код
ZeroMemory(@sti, SizeOf(sti));



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
tigger
Дата 18.10.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Цитата

tigger
Я не разобрался почему окно программы не отображатеся. Возможно поток спит сразу после запуска...

Как его разбудить ???

И вообще в чем собственно дело кто-нибудь знает???????????????????????????????7


--------------------
user posted image
PM MAIL   Вверх
bems
Дата 18.10.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Цитата(Yanis @  18.10.2006,  07:26 Найти цитируемый пост)
Это значит, что если ты указываешь STARTF_USESHOWWINDOW, то параметр wShowWindow не обязательно указывать -- он игнорируется.
читаешь через слово.

Цитата(Yanis @  17.10.2006,  18:47 Найти цитируемый пост)
If this value is not specified, the wShowWindow member is ignored




--------------------
Обижено школьников: 8
PM MAIL   Вверх
Akella
Дата 18.10.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



запускаем процесс и ждём пока он завершиться
Код

function TfmMain.ExecAndWait(const FileName, Params: ShortString; ArcDir:string;
                               const WinState: Word): boolean; export;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: ShortString;
begin
  { Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x }
  CmdLine := '"' + Filename + '" ' + Params;
  FillChar(StartInfo, SizeOf(StartInfo), #0);
  with StartInfo do
  begin
    cb := SizeOf(StartInfo);
    dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
    wShowWindow := WinState;
  end;
  Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false,
                          CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
                          PChar(ArcDir),StartInfo,ProcInfo);
  { Ожидаем завершения приложения }
  if Result then
  begin
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    { Free the Handles }
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end;
end;


Пример использования
Код

          fmMain.ExecAndWait(
                             fmMain.sWinrar, // <- "C:\Program Files\Winrar\Winrar.exe"
                             'a -df -ep '+fmMain.sFilialName+'_'+FormatDateTime('YYYYMMDD_HHNNSS_zzz',now)+' @'+fmMain.GetSystemPath(WinTemp)+'ToSend.List', //<- параметры
                             fmMain.sOutFolder, //<- типа рабочая папка
                             sw_ShowNormal //<- показываем нормально, свёрнуто, развёрнуто или вообще не показываем
                            );





Это сообщение отредактировал(а) Akella - 18.10.2006, 16:13
PM MAIL   Вверх
Yanis
Дата 18.10.2006, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



Цитата(Akella @  18.10.2006,  17:10 Найти цитируемый пост)
запускаем процесс и ждём пока он завершиться

Всё верно, но код не в тему smile

bems
Спасибо. Что то я в последнее время растерянный....

tigger
Ты сам знаешь что хочешь сделать? Что требуется?

Добавлено @ 23:15 
Цитата(Akella @  18.10.2006,  17:10 Найти цитируемый пост)
запускаем процесс и ждём пока он завершиться

Всё верно, но код не в тему smile

bems
Спасибо. Что то я в последнее время растерянный....

tigger
Ты сам знаешь что хочешь сделать? Что требуется?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
tigger
Дата 19.10.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Мне нужен CreateProcess с флагами DEBUG_PROCESS or DEBUG_ONLY_THIS_PROCESS
для отладки (установок бряков и чтения значений регистров).


--------------------
user posted image
PM MAIL   Вверх
bems
Дата 20.10.2006, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



у меня вообще не запускается процесс, и код ошибки странный какой-то...


--------------------
Обижено школьников: 8
PM MAIL   Вверх
tigger
Дата 20.10.2006, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Пробовал получать id процесса а потом
DebugActiveProcess(id) так эта процедура его виснет????


--------------------
user posted image
PM MAIL   Вверх
BUGOR
Дата 20.10.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 2
Всего: 16



Да он и не должен стартовать... Он ждёт пока ты обработаешь первое событие-исключение(при запуске первой инструкции отлаживаемого процесса):

Код

flag :=0;
    GetStartupInfo(si);
    if CreateProcess(pChar(FileName),nil,nil,nil,FALSE,DEBUG_PROCESS+DEBUG_ONLY_THIS_PROCESS,nil,nil,si,pi) then
    begin
        while TRUE do begin
            WaitForDebugEvent(DBEvent,INFINITE);
            if DBEvent.dwDebugEventCode = EXIT_PROCESS_DEBUG_EVENT then begin
                exit;
            end;
            if dbevent.dwDebugEventCode = CREATE_PROCESS_DEBUG_EVENT then begin
                ShowMessage('Process is created');
            end;
            if dbevent.dwDebugEventCode = EXCEPTION_DEBUG_EVENT then begin
                if flag = 0 then  begin
                  ContinueDebugEvent(DBEvent.dwProcessId,DBEvent.dwThreadId,DBG_CONTINUE);
                  inc(flag);
                end;
            end;
            ContinueDebugEvent(DBEvent.dwProcessId,DBEvent.dwThreadId,DBG_EXCEPTION_NOT_HANDLED);
        end;
    end;




Это сообщение отредактировал(а) BUGOR - 20.10.2006, 11:34


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.