1

Тема: HTA: Прозрачность окон

Меня сильно задел такой вопрос про прозрачность окон HTA-приложений, их полупрозрачность и прочее... Есть ли какие-нибудь средства, для достижения такого эффекта (полупрозрачность проги на hta)?
Может быть этого можно достичь сплетением нескольких технологий, языков или сред...
The gray Cardinal, что думаешь по этому поводу?
У кого есть какие идеи?

P.S.: Если это возможно, то я поверю что Microsoft гении!!!

Нет ничего невозможного, для нас невозможное это только то, о чем мы не знаем на данном этапе...

2

Re: HTA: Прозрачность окон

Вот эта библиотека может управлять прозрачностью окон. Метод WinSetTrans. Эта библиотека потребует установки на клиентсткой машине, что можно проделать автоматически всё в том же HTA (только у запускающего должно хватить прав).

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

3 (изменено: Санёк, 2006-08-29 12:20:42)

Re: HTA: Прозрачность окон

Тоесть мне надо будет её установить, а потом подключить и заюзать метод для окна приложения?
Эту установку надо будет делать только 1 раз?
Сразу ещё 1 встречный вопрос, как можно проверить: Хватает ли у меня прав на что-либо...? или может быть получить значение (админ запускающий или пользователь), и как определить возможности пользователя...

Нет ничего невозможного, для нас невозможное это только то, о чем мы не знаем на данном этапе...

4

Re: HTA: Прозрачность окон

Санёк пишет:

Тоесть мне надо будет её установить, а потом подключить и заюзать метод для окна приложения?

Да.

Санёк пишет:

Эту установку надо будет делать только 1 раз?

Да.

Санёк пишет:

Сразу ещё 1 встречный вопрос, как можно проверить: Хватает ли у меня прав на что-либо...? или может быть получить значение, которое определяет возможности пользователя...

Сходу не скажу. Для начала я бы попробовал просто запустить regsvr32 в скрытом окне, а затем проанализировать матюки на её выходе, если таковые будут. Далее выдать эти или свои матюки конечному пользователю.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

5

Re: HTA: Прозрачность окон

The gray Cardinal пишет:

Сходу не скажу. Для начала я бы попробовал просто запустить regsvr32 в скрытом окне, а затем проанализировать матюки на её выходе, если таковые будут. Далее выдать эти или свои матюки конечному пользователю.

В общем про эту библиотеку почитал по ссылке, кот. ты дал мне... спасибо, там есть что-то в этом роде, просто надо разобраться, а библиотека замечательная...!!! Функционал большой...

Нет ничего невозможного, для нас невозможное это только то, о чем мы не знаем на данном этапе...

6

Re: HTA: Прозрачность окон

Вот пример установки и последующего использования библиотеки (административный VBScript):

On Error Resume Next
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
If Err.Number <> 0 Then
    Err.Clear
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "cmd /c regsvr32 /s ""C:\Program Files\AutoIt\AutoItX3.dll""", 0, True
    Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
    If Err.Number <> 0 Then
        MsgBox "Не удалось установить AutoItX3.dll! Возможно, не достаточно прав."
        WScript.Quit
    End If
End If
oAutoIt.WinSetTrans "Безымянный - Блокнот", "", 100

Подразумевается, что AutoItX3.dll уже скопирован в папку C:\Program Files\AutoIt\ (можно при желании скопировать и скриптом, разумеется). Чтобы увидеть результат, перед запуском скрипта запусти блокнот - его окно должно стать полупрозрачным (проверь заголовок окна блокнота в скрипте, чтобы было, как у тебя в системе). Как это всунуть в HTA - думаю, догадаешься сам

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

7

Re: HTA: Прозрачность окон

The gray Cardinal, спасибо за прмер... Ну а в принципе библиотеками пользоваться я умею, но за пример спасибо..
У меня есть мысль... сделать прогу, которая будет висеть где-нибудь в углу экрана... если мы уберём с неё мышь, то она плавно станет прозрачной через несволько секунд, что-то типа наворотов винампа... вопрос есть следующий:
Прозрачности, drag'n'drop в WEB - сильпо подгружают процессор, хоть даже и на секунды, но всё же, во время выполнения таких  "графических фокусов" Central Processor Usage = 100%!
Меня интересует, использование этой библиотеки, полупрозрачности и прочего будет ли повешивать проц...?
Если разовое применение не будет, то организацию плавного перехода окна к прозрачности я вижу только выполнением команд этой библиотеки в цинкле, как ты думаешь, сильно ли это нагрузит проц?

Нет ничего невозможного, для нас невозможное это только то, о чем мы не знаем на данном этапе...

8

Re: HTA: Прозрачность окон

В общем не знаю что будет происходить, если это использовать в цикле, но я провёл небольшой эксперимент:
Открыл диспетчер задач на вкладке быстродействие, растянул его, чтоб покрупнее был ) потом открыл блокнот, потаскал его активно по экрану секунд 5, потом тоже само сделал с полупрозрачным блокнотом...
В принципе большой разницы не заметил, мне показалось что проц был меньше нагружен во втором случает, но время ядра было более поздним, чем в первом, однако мне кажется, что это просто тормоза компа при выводе в диспетчер графика( тоесть комп больше тормозит и, возможно, не успевает быстро фиксировать использование проца), потому что при перетаскивании полупрозрачного окна, оно опаздывало за мышкой, чего не наблюдалось в первом случае!
Вывод следующий: Возможно в цикле слабая тачка просто повиснет на время выполнения цикла...
Xотя у меня Celeron/1700 DDR/640(Херня какая-то китайская-128-2700+SAMSUNG-512-2700) HDD/160 (винда на более быстром винте IBM, на нём 20 Gb места осталось, второй на 120 Maxtor - тормозной винт, хотя в эксперименте это не имеет значения) Video/GeForse2MX400 (64Mb) (причём на тачке был запущен касперский, винамп 5.0.1, переводчик сократ, в буфере кажется был текст большого объёма, запёщен PS (пунто), службы запущены по умолчанию + Apache, MySQL Server 4.1.7)
В общем использование оперативы:258, причём не менялось на всём протяжении эксперимента!
Использование проца до начала эксперимента: 4,10,12 - скачки... со стабильными интервалами.

Что думаешь, The gray Cardinal, следует ли вообще думать о том, чтобы использовать библиотеку для прог?

P.S.: Что-то я видимо много понаписал про  так называемый "эксперимент", или всё нормально?

Нет ничего невозможного, для нас невозможное это только то, о чем мы не знаем на данном этапе...

9

Re: HTA: Прозрачность окон

Не думаю, что использование AutoItX3.dll будет грузить процессор. А в цикле с изменением прозрачности можно просто использовать Sleep на несколько миллисекунд, тогда уж точно не будет грузить процессор. Так что думаю, что беспокоиться не о чем.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

10

Re: HTA: Прозрачность окон

The gray Cardinal пишет:

Не думаю, что использование AutoItX3.dll будет грузить процессор. А в цикле с изменением прозрачности можно просто использовать Sleep на несколько миллисекунд, тогда уж точно не будет грузить процессор. Так что думаю, что беспокоиться не о чем.

Ну это только теория, на практике надо применить, когда сделаю, отпишу на форуме, что-то вроде эксперимента тоже  проведу... и отчёт тут отпостю...

А вообще использование библиотек на слабых тачках, при винде Win2000 сильно притормаживает, или это по сути должно летать, даже на слабых машинах?

Кстати сам какой осью пользуешься? XP?

Нет ничего невозможного, для нас невозможное это только то, о чем мы не знаем на данном этапе...

11

Re: HTA: Прозрачность окон

Я пользуюсь XP. Однако, это не существенно. А говорить, что "использование библиотек сильно притормаживает" нельзя, т.к. это разговор ни о чём

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

12

Re: HTA: Прозрачность окон

Я просто не силён в этом, тоесть не знаю о использовании ресурсов при использовании библиотек, некоторых функций или ещё чего-то, просто узнаю всё больше и больше )
У меня тоже XP ) Тоже думаю что это не существенно, некоторые же категорически за какую-то определённую ось, типа только в ней можно программить или что-то ещё делать - психи ) Каждый смотрит со своей колокольни...

Нет ничего невозможного, для нас невозможное это только то, о чем мы не знаем на данном этапе...

13

Re: HTA: Прозрачность окон

Вот такой скрипт:

Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
i = 250
Direction = 0
While True
    oAutoIt.WinSetTrans "Безымянный - Блокнот", "", i
    WScript.Sleep 30
    If i = 20 Then Direction = 1
    If i = 250 Then Direction = 0
    If Direction = 0 Then
        i = i - 2
    Else
        i = i + 2
    End If
Wend

Загрузка процессора от 0 до 2%. Изредка подпрыгивает до 4 - 6%. (P4 с гипертрейдингом, 2800 МГц.)
P.S. Когда насмотришься, скрипт срубать через диспетчер задач (WScript.exe или CScript.exe)

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

14 (изменено: Санёк, 2006-08-30 20:23:02)

Re: HTA: Прозрачность окон

The gray Cardinal пишет:

Когда насмотришься, скрипт срубать через диспетчер задач (WScript.exe или CScript.exe)

Это я в курсе, WScript.exe - если так запустил, а  CScript.exe - если через командную строку скрипт запущен или работает... что-то в этом духе 
А эффект просто афффигенный.... вот это как раз то что я хотел сделать!!! ну конечно не моргание для прикола, а просто реализовать плавное появление или пропадание окна приложения! )))

Нет ничего невозможного, для нас невозможное это только то, о чем мы не знаем на данном этапе...

15

Re: HTA: Прозрачность окон

А нельзя ли сделать прозрачной только часть окна. По маске или ещё как нибудь?.

16

Re: HTA: Прозрачность окон

Нет, нельзя.

17

Re: HTA: Прозрачность окон

Как альтернатива - посмотри в сторону DynamicWrapperX + SetLayeredWindowAttributes http://msdn.microsoft.com/en-us/library … s.85).aspx

18

Re: HTA: Прозрачность окон

А как узнать hWnd элемента?

19

Re: HTA: Прозрачность окон

2 Ottiwell_Wood: Если скриптовыми возможностями, то можно например в код HTA добавить ScriptControl и взять у него свойство SiteHwnd.


<html>
	<body>
		<object id="ScriptControl" classid="clsid:0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC"><PARAM name=AllowUi value=1></object>
		<script language=vbscript>
			Sub window_onload()
				MsgBox "hWnd этого окна " & ScriptControl.SiteHwnd,vbInformation
			End Sub
		</script>
	</body>
</html>

А если API, то это уже совсем другая история... )

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !