Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Программа всегда поверх всех окон и в "фокусе" (http://forum.oszone.net/showthread.php?t=339192)

pernatiy05 12-02-2019 08:03 2857441

Программа всегда поверх всех окон и в "фокусе"
 
Уважаемые пользователи, приветствую, есть задача с виду простая.. но бьюсь уже 2 дня.
Вводные:
Есть программа, которая должна запускаться и постоянно висеть по верх всего, быть в фокусе. имя программы в памяти постоянное D:\tools\App\Notepad++\notepad++.exe, запускается всегда из одного места.
Как запустить и сделать по верх всего всегда, т.к. при любом действии на компьютере пользователя или фоновой программы - notepadd++.exe должен быть всегда поверх и активным...
Есть предположение в VBS через loop в 1 секунду, но что дальше и как я не могу понять....

На форуме есть темы как сделать поверх всего... но именно поверх всего без фиксации...

Огромный + с меня в карму, если будет решение... на любом языке, но в приоритете AutoIT или VBS

Iska 12-02-2019 09:01 2857447

pernatiy05, это такой недо-вымогатель что ли?

pernatiy05 12-02-2019 09:31 2857452

Цитата:

Цитата Iska
это такой недо-вымогатель что ли? »

это программа notepad++, в нее будут отправлятся отсканированные штрихкоды... и для того что бы она была постоянно "в фокусе" в нее летели эти самые штрихкоды, и нужно что бы она была всегда активна.
отправлятся будут с обычных беспроводных сканеров штрих кода, которые есть на кассал любого магазина. Но сам сканер никак не сигнализирует, попал штрих код в программу или нет... т.е. для него обратной связи нет

yurfed 12-02-2019 10:42 2857462

Цитата:

Цитата pernatiy05
это программа notepad++ »

Меню-Вид-Поверх всех окон не прокатывает?

Цитата:

Цитата pernatiy05
и нужно что бы она была всегда активна. »

Тогда всё другое станет неактивным и вы даже кликнуть мышкой не сможете на что-то другое.
Посмотрите InqSoft Window Scanner

Busla 12-02-2019 11:20 2857470

pernatiy05, если создание текстового файла - это реальная задача. То вместо этих лютых костылей лучше переключить сканеры в режим COM-порта. А из COM'а уже писать в текстовый файл независимо от активности окон.
чтение из COM на PowerShell

одно активное приложение, которое нельзя закрыть/свернуть - называется kiosk mode - может так нагуглите что интересное

yurfed 12-02-2019 13:04 2857484

Цитата:

Цитата Busla
То вместо этих лютых костылей »

Цитата:

Цитата Busla
переключить сканеры в режим COM-порта. А из COM'а уже писать в текстовый файл независимо от активности окон. »

А это не костыль лезть через задницу.
Ну-ну.

Busla 12-02-2019 13:17 2857487

yurfed, это как раз нормальный и прямой путь - если устройство нужно эксклюзивно приложению - прописывают его явно в приложении. Так происходит и со специализированными принтерами, и со звуковыми устройствами в том же скайпе, и с джойстиками в играх. И для сканеров ш/к - однозначный биндинг на специализированном РМ - это нормальный подход к автоматизации.

yurfed 12-02-2019 15:43 2857514

Busla, Человеку только и нужно, сделать активным окно и не писать коды, которые может и не знает. Просто нажать в три клика и скрипт в EXE формате готов.
В предложенном всё это есть.
Хочется больше знать - учись или сам осваивай, но как всегда лень, некогда или просто не охота :).
Да и COM порты, если не ошибаюсь, давно уже отсутствуют как чипы или встроенные.
Только виртуализация. Где-то так.

Busla 12-02-2019 16:53 2857519

Цитата:

Цитата yurfed
Да и COM порты, если не ошибаюсь, давно уже отсутствуют »

типичный сканер ш/к эмулирует либо клавиатуру, либо COM-порт. Режим эмуляции переключается сканированием управляющего ш/к из инструкции. В современных реалиях физического подключения по usb/bluetouth - чисто программная операция.

yurfed 12-02-2019 18:45 2857535

Цитата:

Цитата yurfed
Только виртуализация. Где-то так. »

Ну читай эмуляция, как душе угодно.
Только не понятно чем тебе предложенный вариант не нравится. Легко, просто, быстро. 10 секунд.

Iska 12-02-2019 19:07 2857540

pernatiy05, насколько мне известно, в нынешних ОС Windows не существует способа запретить перехват фокуса ввода другому приложению: Focus stealing - Wikipedia. И никакие «Поверх всех окон» никак на фокус ввода не повлияют.

pernatiy05 15-02-2019 07:47 2858068

Спасибо всем выше ответившим, но к сожелению по тем или иным причинам варианты предложенные не подходят:
Написал пока что на VBS, по идеи должен работать и перекидывать фокус на данный процесс... но что то не так.
Получается программа активна, но в ней писать не могу... как будто она не в фокусе...
Кто ,что думает... где нужно что дописать или исправить ,понимаю что в верном направлении и ду.. но дальше знаний VBS нехватает

Код:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "D:\TSD\Notepad++Portable.exe"
Set WshShell = Nothing
Set SH = CreateObject("WScript.Shell")
Do
Set locator = CreateObject("WbemScripting.SWbemLocator")
Set service = locator.ConnectServer()
Set props = service.ExecQuery("select * from Win32_Process where name = 'notepad++.exe'")
For Each objProcess in props
    SH.AppActivate objProcess.ProcessId
Next
WScript.Sleep 500
Loop


Serguei Kouzmine 15-02-2019 16:07 2858135

написали же - это *нельзя*

https://blogs.msdn.microsoft.com/old...20-00/?p=19083

Foreground activation permission is like love: You can’t steal it, it has to be given to you

Iska 15-02-2019 18:24 2858146

Цитата:

Цитата pernatiy05
Написал пока что на VBS, по идеи должен работать и перекидывать фокус на данный процесс... но что то не так.
Получается программа активна, но в ней писать не могу... как будто она не в фокусе... »

pernatiy05, метод .AppActivate() делает ровно следующее:
Цитата:

Activates an application window
и ничего более.


Время: 17:01.

Время: 17:01.
© OSzone.net 2001-