Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Запуск $form сверху окон, но не поверх всех.

Ответить
Настройки темы
PowerShell - [решено] Запуск $form сверху окон, но не поверх всех.

Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$main_form = New-Object System.Windows.Forms.Form
$main_form.TopMost = $true
$Icon = New-Object system.drawing.icon ("$p\icon.ico")
$main_form.Icon = $Icon
$main_form.Text ='Text-To-Speech by Google'
$main_form.Width = 700
$main_form.Height = 700
$main_form.AutoSize = $true
$main_form.ShowDialog()
При установке $main_form.TopMost = $true - форма запускается и держится поверх всех окон.

Как можно добится того, чтобы $form запускалась поверх всех текущих открытых окон, но при запуске другого (более нового) окна, новое окно перекрывало бы $form?
т.е. так как работает запуск окон/приложений в Windows.

Отправлено: 11:12, 20-12-2020

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


9119, убрать строку с «$main_form.TopMost = $true», разумеется.

Отправлено: 11:44, 20-12-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$main_form = New-Object System.Windows.Forms.Form
$Icon = New-Object system.drawing.icon ("$p\icon.ico")
$main_form.Icon = $Icon
$main_form.Text ='Text-To-Speech by Google'
$main_form.Width = 700
$main_form.Height = 700
$main_form.AutoSize = $true

$TextBox = New-Object System.Windows.Forms.TextBox
$TextBox.Width = 628
$TextBox.Height = 460
$TextBox.AutoSize = $true
$TextBox.Location  = New-Object System.Drawing.Point(25,180)
$TextBox.Multiline = $True
$main_form.Controls.Add($TextBox)

$main_form.Add_Shown({$main_form.Activate(); $TextBox.focus()})
$main_form.ShowDialog()
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:08, 20-12-2020 | #3


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Цитата Iska:
убрать строку »
скрипт упакован в sfx (.exe). при распаковке sfx выполняется батник:
Код: Выделить весь код
cd "%~dp0"
powershell.exe -ExecutionPolicy Bypass -file "%~dp0\bin\Voice_config.ps1"
При таком запуске, без TopMost = $true, форма появляется за тем окном проводника из которого я запускаю sfx. А надо, чтобы поверх него появлялся.

Цитата Fors1k:
$main_form.Add_Shown({$main_form.Activate(); $TextBox.focus()}) »
- увы также остается за окном проводника.


С TopMost = $true» работает как положено, но мне не нужно жестко все время поверх всех окон. Нужно поверх всех окон на момент запуска..

Последний раз редактировалось 9119, 20-12-2020 в 14:16.


Отправлено: 14:10, 20-12-2020 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 9119:
скрипт упакован в sfx (.exe). при распаковке sfx выполняется батник: »
Начинают выясняться интересные подробности. Игла в утке, утка в зайце, заяц… Вы понимаете, что об этом нужно было писать сразу?

Что за sfx, чем и как создан?
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:03, 20-12-2020 | #5


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Exe запускает батник, батник запускает ps1 - зачем таким заниматься? Запускайте сразу ps1 файл.

Отправлено: 18:21, 20-12-2020 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Fors1k, там, небось, ещё какой-нибудь заяц hidecon.exe посредником, «чтобы чёрное окно не маячило».
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:43, 20-12-2020 | #7


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Цитата Iska:
ещё какой-нибудь заяц hidecon.exe посредником »
к чему это?

Цитата Iska:
об этом нужно было писать сразу »
да, забыл указать. виноват.
Цитата Fors1k:
зачем таким заниматься? »
Банально, от нехватки мозгов в данном направлении. это ж вроде очевидно))
Но это не было вопросом в данной теме, верно? Менять не будем.



Архив sfx создан winrarom. распаковывается во временную папку и запускает батник, который приведен выше/ниже.
ВСЕ! - Никаких уток/зайцев и прочей живности.

Вопрос по теме актуален.....
Как можно добится того, чтобы $form запускалась поверх всех текущих открытых окон, но при запуске другого (более нового) окна, новое окно перекрывало бы $form?
При условии что Voice_config.ps1 запускается батником:
Код: Выделить весь код
cd "%~dp0"
powershell.exe -ExecutionPolicy Bypass -file "%~dp0\bin\Voice_config.ps1"

Последний раз редактировалось 9119, 20-12-2020 в 19:27.


Отправлено: 19:11, 20-12-2020 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 9119:
Архив sfx создан winrarom. распаковывается во временную папку и запускает батник, который приведен выше/ниже. »
Выложите Ваш sfx.

Отправлено: 21:46, 20-12-2020 | #9


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Iska, таки утки/зайцы), виноват).
Скрытый текст
батник после распаковки запускался через прогу hidec.exe.
Код: Выделить весь код
hidec.exe start.bat
Такой запуск скрывал консоль PS (что меня устраивало), но при этом отоброжало форму за текущим окном в Windows (причина создания темы).

Теперь при распаковке запускает сразу start.bat, но т.к теперь отображает консольное окно powershell под формой, строку запуска в батнике переписал так:
Код: Выделить весь код
start powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -file "%~dp0\bin\Voice_config.ps1"
также в батнике команда на разрешение запуска неподписанных скриптов
Код: Выделить весь код
powershell -Command Set-ExecutionPolicy RemoteSigned
Т.е по сути - запрос по теме - решен.
Цитата Iska:
убрать строку с «$main_form.TopMost = $true» »

Последний раз редактировалось 9119, 21-12-2020 в 00:10.


Отправлено: 23:44, 20-12-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Запуск $form сверху окон, но не поверх всех.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Мультимедиа - часы поверх ВСЕХ окон aletdin Программное обеспечение Windows 1 20-11-2019 03:59
Разное - Меню залипает поверх всех окон graf_vorontsov Microsoft Windows 7 1 25-04-2016 18:55
Поверх всех окон aspirinchik_c9h8o4 Хочу все знать 6 20-12-2015 20:29
2007 - Поверх всех окон. PAK Microsoft Office (Word, Excel, Outlook и т.д.) 14 16-12-2014 14:58
C/C++ - [C++Builder 2007] Две формы поверх всех окон и одна форма поверх другой crashtuak Программирование и базы данных 3 13-04-2009 16:33




 
Переход