Показать полную графическую версию : [решено] Запуск $form сверху окон, но не поверх всех.
$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.
9119, убрать строку с «$main_form.TopMost = $true», разумеется.
$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()
убрать строку »
скрипт упакован в sfx (.exe). при распаковке sfx выполняется батник:
cd "%~dp0"
powershell.exe -ExecutionPolicy Bypass -file "%~dp0\bin\Voice_config.ps1"
При таком запуске, без TopMost = $true, форма появляется за тем окном проводника из которого я запускаю sfx. А надо, чтобы поверх него появлялся.
$main_form.Add_Shown({$main_form.Activate(); $TextBox.focus()}) »
- увы также остается за окном проводника.
С TopMost = $true» работает как положено, но мне не нужно жестко все время поверх всех окон. Нужно поверх всех окон на момент запуска..
скрипт упакован в sfx (.exe). при распаковке sfx выполняется батник: »
Начинают выясняться интересные подробности. Игла в утке, утка в зайце, заяц… Вы понимаете, что об этом нужно было писать сразу?
Что за sfx, чем и как создан?
Exe запускает батник, батник запускает ps1 - зачем таким заниматься? Запускайте сразу ps1 файл.
Fors1k, там, небось, ещё какой-нибудь заяц hidecon.exe посредником, «чтобы чёрное окно не маячило».
ещё какой-нибудь заяц hidecon.exe посредником »
к чему это?
об этом нужно было писать сразу »
да, забыл указать. виноват.
зачем таким заниматься? »
Банально, от нехватки мозгов в данном направлении. это ж вроде очевидно))
Но это не было вопросом в данной теме, верно? Менять не будем.
Архив sfx создан winrarom. распаковывается во временную папку и запускает батник, который приведен выше/ниже.
ВСЕ! - Никаких уток/зайцев и прочей живности.
Вопрос по теме актуален.....
Как можно добится того, чтобы $form запускалась поверх всех текущих открытых окон, но при запуске другого (более нового) окна, новое окно перекрывало бы $form?
При условии что Voice_config.ps1 запускается батником:
cd "%~dp0"
powershell.exe -ExecutionPolicy Bypass -file "%~dp0\bin\Voice_config.ps1"
Архив sfx создан winrarom. распаковывается во временную папку и запускает батник, который приведен выше/ниже. »
Выложите Ваш sfx.
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Т.е по сути - запрос по теме - решен.
убрать строку с «$main_form.TopMost = $true» »
9119, Вам выше коллега Fors1k написал (http://forum.oszone.net/post-2943582.html#post2943582), что пакетный файл вовсе не нужен (особенно с таким именем, но это уже другой вопрос), исполняйте непосредственно:
powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -file ".\bin\Voice_config.ps1"
Iska, да, действительно... главная заморочка (для меня) была в получении текущего расположения.
а %~dp0 винрар не понимает. Поэтому и юзал батник.
Но я не учел что рар запускает powershell из той же папки куда распаковывает файлы и в данном случае путь ".\bin\Voice_config.ps1" работает.
Благодарю!
Но чтобы избавится от пакетного файла полностью мне нужно еще как-то выполнить
powershell -Command Set-ExecutionPolicy RemoteSigned
причем с правами админа (если выполнять из-под cmd)...
Подскажите как это можно сделать...
Но я не учел что рар запускает powershell из той же папки куда распаковывает файлы и в данном случае путь ".\bin\Voice_config.ps1" работает. »
SFX-команды: Setup
--------------------------------------------------------------------------------
Setup=<программа>
После удачного извлечения файлов SFX-модуль попытается запустить указанную <программу>. Перед запуском программы текущей станет папка, в которую были извлечены файлы. Если в имени программы есть пробелы, то оно должно быть заключено в кавычки.
…
мне нужно еще как-то выполнить »
Просто добавьте ещё одну строку с «Setup=…» в комментарий архива:
Setup=powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -file ".\bin\Voice_config.ps1"
Setup=powershell.exe -Command Set-ExecutionPolicy RemoteSigned
причем с правами админа (если выполнять из-под cmd)... »
Исполняйте sfx с административными привилегиями. Порождённые им процессы унаследуют данный токен.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.