Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 4

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

15.02.2016, 16:23. Показов 1025. Ответов 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
3758 / 2637 / 580
Регистрация: 11.09.2009
Сообщений: 9,415
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
3758 / 2637 / 580
Регистрация: 11.09.2009
Сообщений: 9,415
22.02.2016, 22:08
Цитата Сообщение от frolsa Посмотреть сообщение
Задержка нужна для уверенного срабатывания.
По-моему, использование sleep() для ожидания выполнения системной функции совсем не гарантирует её выполнение.
Почему не Application.ProcessMessages?
0
0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 4
22.02.2016, 22:16  [ТС]
Я пробовал разные комбинации - винда очень ненадежно реагирует. Эта показалась мне самой надежной, хотя согласен, криво.
0
3758 / 2637 / 580
Регистрация: 11.09.2009
Сообщений: 9,415
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
Ответ Создать тему
Новые блоги и статьи
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