0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 4

CreateProcess работает странно в D10

15.02.2016, 16:23. Показов 1052. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Существует программа, в которой основная невидимая программа-диспетчер поочередно запускает другие программы.
В D3 и D7 все работало как часы уже лет 15. При переходе на D10 (проект тот же, без изменений) столкнулся с тем, что только первый запуск из программы-диспетчера работает нормально, остальные программы запускаются "сзади", не в режиме ForeGround (система - W10). Использование CreateProcess совершенно стандартное, без никаких дополнений. Подозреваю, что дело в параметре nCmdShow, который нужен для повторных запусков, но функция ShowWindow в программе не используется. Поиски показали что все работает нормально, если убрать Hide с формы диспетчера, но тогда она становится видна, чего не должно быть. Перепробовал все, что нашел. Максимум чего удалось добиться - мигает иконка на панели задач,но вытащить вперед не удается - только руками. Проблема еще в том, что запускаемые программы меняют окна, заголовки и жрут немалые вычислительные ресурсы (плохо слушаются).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2016, 16:23
Ответы с готовыми решениями:

CreateProcess не работает функция
Вот кусок кода который должен создавать файл f.bat типа "ipconfig > log.txt". Соответственно записывать результаты в log.txt и посылать их....

CreateProcess странно работает
Привет. Есть такая функция CreateProcess. Я хочу запустить файл, предположим, в D:\Program files\1.exe Можно запускать его получается...

Не работает зацикливание gif [D10.1 Berlin]
Добрый день, делаю программную сборку gif анимации, сама картинка собирается и проигрывается всего 1 раз (нужно циклично), есть флаг...

6
4056 / 2667 / 584
Регистрация: 11.09.2009
Сообщений: 9,519
22.02.2016, 12:16
Цитата Сообщение от frolsa Посмотреть сообщение
(система - W10)
Да, в ней изменилась логика управления окнами. Видимо, это связано с наличием разных интерфейсов "Рабочего стола". Надо заново учить матчасть.
1
0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 4
22.02.2016, 21:57  [ТС]
Удалось починить вот такой вставкой после CreateProcess (основа взята из интернета):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function EnumWindowsProc(Wnd: HWND): Bool;  export; {$ifdef Win32} stdcall; {$endif}
var Pid:Pointer;
    Buffer: array[0..100] of Char;
    ThisThreadID,ForeID:HWNd;
  begin
  GetWindowThreadProcessId(Wnd,@Pid); GetWindowText(Wnd,Buffer,100); 
  if copy(Buffer,1,19)='Имя окна нужной программы' then
    begin
    ForeID := GetWindowThreadProcessID(GetForegroundWindow, nil);
    ThisThreadID := GetWindowThreadPRocessId(Wnd, nil);
    if AttachThreadInput(ThisThreadID, ForeID, True) then
      begin
      BringWindowToTop(Wnd);
      SetForegroundWindow(Wnd);
      sleep(50);
      AttachThreadInput(ThisThreadID, ForeID, False);
      Result:=false;
      exit;
      end;
    end;
  result:=true;
  end;
 
procedure ForceForeground;
  begin
  EnumWindows(@EnumWindowsProc,0);
  end;
Задержка нужна для уверенного срабатывания.
0
4056 / 2667 / 584
Регистрация: 11.09.2009
Сообщений: 9,519
22.02.2016, 22:08
Цитата Сообщение от frolsa Посмотреть сообщение
Задержка нужна для уверенного срабатывания.
По-моему, использование sleep() для ожидания выполнения системной функции совсем не гарантирует её выполнение.
Почему не Application.ProcessMessages?
0
0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 4
22.02.2016, 22:16  [ТС]
Я пробовал разные комбинации - винда очень ненадежно реагирует. Эта показалась мне самой надежной, хотя согласен, криво.
0
4056 / 2667 / 584
Регистрация: 11.09.2009
Сообщений: 9,519
22.02.2016, 22:54
Цитата Сообщение от frolsa Посмотреть сообщение
Я пробовал разные комбинации...
Я бы проверок добавил. Вот у вас даже EnumWindows без проверки вызывается, хотя он boolean.
Можно и нужное состояния окна с проверкой ждать, делать пару попыток, отрабатывать случай "не удалось...".
0
0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 4
24.02.2016, 09:43  [ТС]
Все это есть, я здесь упростил немного...Там у меня EnumWindows в 10-шаговом цикле с проверкой и на exit. Но выкладывать такое мне показалось несколько нахальным - типа, низкий уровень, крутые ребята так не пишут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2016, 09:43
Помогаю со студенческими работами здесь

CreateProcess не работает
Приветствую, уважаемые перекурил почти все топики на форуме, но свою проблему так и не смог решить #include <stdio.h> ...

Не работает CreateProcess
Ребята, пытаюсь так создать процесс, но функция возвращает False. Пытаюсь в студии 2010 собрать такой код: PROCESS_INFORMATION pi =...

CreateProcess не работает
Здравствуйте. Делаю программу, которая запускает внешнюю прогу. Инструментарий - Microsoft Visual Studio 2008/ Проблема: в обработчик...

Странно работает / не работает кулер на видеокарте
Всем привет! Имею видеокарту geforce gtx 650 ti boost от производителя gainward. Пару месяцев назад начались проблемы с играми: видеокарта...

if, else if работает странно.
Написал программу html> <head> <title>Roll Em!</title> </head> <body> <div align="center"> <h1>Roll Em!</h1> <?php ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru