powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ShellExecute and Wait и powershell.exe
15 сообщений из 15, страница 1 из 1
ShellExecute and Wait и powershell.exe
    #40103113
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброй тяпницы,

при запуске powershell.exe через ShellExecuteEx не удаётся придавить powershell окно. Содержимое хоть и не показывает но чёрный квадрат выскакивает на пару секунд. Подозреваю powershell.exe что то делает со своим окном необычное. При запуске других приложений через ShellExecuteEx этой проблеммы не возникает. SW_HIDE не помогает, как и powershell.exe -windowstyle hidden ... тоже.
Посоветуйте, как тут лучше поступить.

Спасибо
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103140
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun,

тут советуют использовать CreateProcess, но код больно громоздкий, может есть более простое решение?
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103142
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

а я незря в конце этого ответа 22380641 дал ссылку "думаю пригодится на следующем шаге"
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103264
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще вариант вызвать cmd /c /k
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103538
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747
Есть еще вариант вызвать cmd /c /k


этот вариант не работает. Чёрное окно от powershell всё равно вылазит.
Например: cmd.ехе /C powershell.exe -windowstyle hidden -Command "&{Enable-PSRemoting}"

буду пробовать предложенный Семёном вариант.
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103579
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

А если в CreateProcess() через STARTUPINFO задать флаг SW_HIDE это не помогает?
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103588
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp
hlopotun,

А если в CreateProcess() через STARTUPINFO задать флаг SW_HIDE это не помогает?


у Семёна в коде это и делается. К сожалению тоже не помогает. Чёрный квадрат всёравно вылазит на экран.
Здесь похоже надо идти по этой дорожке.
Получать дескриптор созданного в createprocess окна и скрывать его в ручную.
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103600
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не поможет тоже. Либо забей, либо таки потрать время на разбирательство как это
работает и сделай всё то же самое на API.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103612
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

так тоже не работает:

Код: pascal
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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
function ExecProcess(ProgramName, WorkDir: string; Wait: boolean; Hide: Boolean): integer;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CreateOK: boolean;
  ExitCode: integer;
  dwExitCode: DWORD;
begin
  ExitCode := -1;

  FillChar(StartInfo, SizeOf(TStartupInfo), #0);
  FillChar(ProcInfo, SizeOf(TProcessInformation), #0);
  StartInfo.cb := SizeOf(TStartupInfo);

  if Hide then begin
    StartInfo.wShowWindow := SW_HIDE;
    StartInfo.dwFlags := STARTF_USESHOWWINDOW;
  end;

  if WorkDir <> '' then
  begin
    CreateOK := CreateProcess(nil, Addr(ProgramName[1]), nil, Addr(WorkDir[1]),
      false, CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS, nil, nil,
      StartInfo, ProcInfo);
  end
  else
  begin
    CreateOK := CreateProcess(nil, Addr(ProgramName[1]), nil, nil, false,
      CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS, nil, Addr(WorkDir[1]),
      StartInfo, ProcInfo);
  end;

  if CreateOK then
  begin

    if Wait then
    begin
      WaitForSingleObject(ProcInfo.hProcess, INFINITE);
      GetExitCodeProcess(ProcInfo.hProcess, dwExitCode);
      ExitCode := dwExitCode;
    end;
  end
  else
  begin
    ShowMessage('Unable to run ' + ProgramName);
  end;

  CloseHandle(ProcInfo.hProcess);
  CloseHandle(ProcInfo.hThread);

  Result := ExitCode;

end;



код отрабатывает но чёрное окно всё равно появляется.
пробовал после создания процесса ещё:
Код: pascal
1.
2.
if Hide then
      SendMessage(ProcInfo.hProcess,WS_MINIMIZE,0,0);


дабы окно хотя бы глаза не мозолило но тоже не отрабатывает.

Через API долго разбираться. Скрипт большой. Столько времени не дают.
Скорее смирятся с временно появляющимся чёрным окном.

Походу powershell следит за своим окошком по полной программе ....
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103614
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
11.10.2021 15:28, hlopotun пишет:
> Походу powershell следит за своим окошком по полной программе ....

сдвинь его за экран
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103618
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunЧерез API долго разбираться. Скрипт большой. Столько времени не дают.

Ты на один этот топик убил три дня. Не надо заливать про "не дают".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103619
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

интересное наблюдение
на тестовой виртуальной машине (Virtual BOX) окно появляется,
на машине на которой ведётся разработка нет (не виртуальная).
На обоих win10 с последними обновлениями.
На той где окно появляется запуск производится из под обычного локального пользователя и программа через UAC повышает свои привилегии, на машине где окно не появляется запуск из под локального админа и также впоследствии повышение до админа через UAC.

Сейчас попробую за экран убрать.
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103621
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

hlopotunЧерез API долго разбираться. Скрипт большой. Столько времени не дают.

Ты на один этот топик убил три дня. Не надо заливать про "не дают".

это же не значит что все эти дни я только им и занимался.
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103636
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SetWindowPos(ProcInfo.hProcess, .... на виртуалке с powershell эффекта не принесла.
Подозреваю что тут специфика Virtual Box имеет место.
Попробовал на других машинах, вроде всё в порядке. Если так то можно вопрос снимать с повестки. Сомнительно что у клиентов кто то в окошке VirtualBoxa сидит.
...
Рейтинг: 0 / 0
ShellExecute and Wait и powershell.exe
    #40103648
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если подумать мозгом, то будет очевидно почему все методы воздействия на уже
появившееся на экране окно неспособны предотвратить его появление.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ShellExecute and Wait и powershell.exe
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]