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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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


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