Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/40: Рейтинг темы: голосов - 40, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 26.08.2014
Сообщений: 136

CreateProcess Delphi

10.02.2016, 19:01. Показов 7464. Ответов 7

Студворк — интернет-сервис помощи студентам
Здравствуйте, недавно столкнулся с одной проблемой. Пытаюсь запустить процесс из своего приложения. Процесс запускается но он идет как дочерний от моего процесса. Вопрос такой, как сделать его не дочерним? Кто сталкивался, подскажите пожалуйста что поправить.

Название: Screenshot_1.png
Просмотров: 258

Размер: 2.2 Кб

Запускаю так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function CreateProc(const FileName, Params: string; WindowState: Word): Boolean;
var
  SUInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: string;
begin
  CmdLine := '"' + FileName + '"' + Params;
  FillChar(SUInfo, SizeOf(SUInfo), #0);
  with SUInfo do
  begin
    cb:= SizeOf(SUInfo);
    dwFlags:= CREATE_NO_WINDOW;
    wShowWindow:= WindowState;
  end;
 
  Result := CreateProcess(nil, PChar(CmdLine), nil, nil, False, CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS, nil, PChar(ExtractFilePath(FileName)), SUInfo, ProcInfo);
end;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2016, 19:01
Ответы с готовыми решениями:

CreateProcess
Дайте пожалуйста код для открытия файла с помощью CreateProcess. Файл находится в папке с программой \kart.exe

Проблема с CreateProcess
Здравствуйте! Вопрос у меня, наверное не самый простой. Есть у меня функция : function RunCommand(s: string): string; var ...

CreateProcess и java
возникла проблема с запуском джавы. через бат файл запускается. start javaw -Xmx512m -Djava.library.path=%APPDATA%/.minecraft/bin/natives...

7
 Аватар для BOGG ART
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
10.02.2016, 19:04
А зачем так делать? Тот что, как-то не так работает из-за этого?
0
2 / 2 / 0
Регистрация: 26.08.2014
Сообщений: 136
10.02.2016, 19:20  [ТС]
Цитата Сообщение от BOGG ART Посмотреть сообщение
А зачем так делать? Тот что, как-то не так работает из-за этого?
Да, есть небольшой недостаток
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
10.02.2016, 19:36
Лучший ответ Сообщение было отмечено Mik92 как решение

Решение

UpdateProcThreadAttribute
https://msdn.microsoft.com/en-... s.85).aspx

См. флаг PROC_THREAD_ATTRIBUTE_PARENT_PROCESS.

Либо более простой и переносимый способ: запустить промежуточный процесс, из
него породить потомка и завершиться. Потомок в дереве процессов будет сиротой
"orphaned process".
2
2 / 2 / 0
Регистрация: 26.08.2014
Сообщений: 136
11.02.2016, 00:57  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
UpdateProcThreadAttribute
https://msdn.microsoft.com/en-... s.85).aspx
См. флаг PROC_THREAD_ATTRIBUTE_PARENT_PROCESS.
Либо более простой и переносимый способ: запустить промежуточный процесс, из
него породить потомка и завершиться. Потомок в дереве процессов будет сиротой
"orphaned process".
Помогло но недостаток который я пытался устранить так и не устранился. Как можно запустить из х32 битного приложения х64 битное? (на х64 битной ОС) Я думал проблема была в том что этот процесс запускался как дочерний так как если обычно запустить приложение тогда он работает а если через createprocess тогда нет.
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,608
11.02.2016, 01:06
Цитата Сообщение от Mik92 Посмотреть сообщение
Помогло но недостаток который я пытался устранить так и не устранился. Как можно запустить из х32 битного приложения х64 битное? (на х64 битной ОС) Я думал проблема была в том что этот процесс запускался как дочерний так как если обычно запустить приложение тогда он работает а если через createprocess тогда нет.
Меня лично смущает при чем тут cmd.exe?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
11.02.2016, 08:56
Цитата Сообщение от Mik92 Посмотреть сообщение
Как можно запустить из х32 битного приложения х64 битное?
Напрямую - никак, насколько я знаю.
Потому что дочернее 64-битное приложение не сможет правильно унаследовать
контекст (переменные окружения, например) своего родителя.
1
2 / 2 / 0
Регистрация: 26.08.2014
Сообщений: 136
11.02.2016, 15:56  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Меня лично смущает при чем тут cmd.exe?
Это просто для примера, на самом деле пытаюсь запустить х64 битную консоль собранную на С++ из х32 битного приложения написанного на паскале.

Цитата Сообщение от Убежденный Посмотреть сообщение
Напрямую - никак, насколько я знаю.
Потому что дочернее 64-битное приложение не сможет правильно унаследовать
контекст (переменные окружения, например) своего родителя.
По этому я думал проблема была в том что процесс создавался как дочерний. Теоретически должно работать если процесс не будет дочерним но и тут что то не ладно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2016, 15:56
Помогаю со студенческими работами здесь

CreateProcess не запускает программу
Прочитал умную статью, что мол надо использовать исключительно CP для запуска сторонних процессов. Вот пытаюсь:procedure...

CreateProcess - не дожидается окончания
Здравствуйте, подскажите в чем проблема, я написал чтобы после завершения процесса выполнялась другая процедура расчета, но почему-то не...

Ошибка при CreateProcess
Требуется осуществить перехват вывода консоли в Memo. Нашел тройку процедур в интернете для осуществления сей задачи, но во всех троих...

Запуск через CreateProcess
Как запустить программу через CreateProcess и передать параметры запуска ? Если нужно исходник выложу!

CreateProcess, нажатие клавиши
Как передать дочерней программе нажатую клавишу. П.с. дочерняя программа, написанная на C++, запущена createprocess'ом родительской...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru