Что нового

Прозрачная рамка окна на XP

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Возможно ли сделать на windows XP, что то типа aero?
Нашел программу которая так делает :whistle:
Но хочется сделать аналог.
Тем более поставил XP
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Ну можно создавать 2 окна, 1е Прозрачное, а 2е дочернее не прозрачное.

Код:
#Include <WindowsConstants.au3>
#Include <GUIConstantsEx.au3>

$hAero = GUICreate('', 400, 300)
WinSetTrans($hAero, '', 100)
$hForm = GUICreate('', 400, 300, 0, 0, $WS_POPUP, $WS_EX_MDICHILD, $hAero)
$iButton = GUICtrlCreateButton('Exit', 20, 20, 80, 20)
GUISetState(@SW_SHOW, $hAero)
GUISetState(@SW_SHOW, $hForm)

While 1
	Switch GUIGetMsg()
	    Case -3, $iButton
		    Exit
	EndSwitch
Wend
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Viktor1703
Класно! :smile:
А вопрос состоит в том чтобы навести эту штучку на чужое окно :smile:
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Прозрачность. Правда не рамки, а всего окна.
Глючной скрипт. :stars:
Код:
#include <Array.au3>
HotKeySet("{ESC}", "Restore") ;нажать на ESC для снятия прозрачности окон и завершения скрипта
Dim $aVar1[1]
While 1
    Sleep(50)
    $Var2 = WinWait("")	
    Global $Var3 = UBound($aVar1)-1
    If $Var2 <> $aVar1[$Var3] Then
    _ArrayAdd( $aVar1,$Var2)    
   WinSetTrans($Var2, "", 150)
    EndIf
WEnd
Func Restore()
    MsgBox(64,"Восстановление","Снять прозрачность")
    For $i = 0 To $Var3
        WinSetTrans($aVar1[$i], "", 255)
    Next
    Exit
EndFunc
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Yuriy
Ну всего окна то я знаю(даже пуск прозрачный :D)
А нужно рамкуу
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Может быть поможет какая нибудь dll?
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Вот пример на блокноте:
Код:
#include <WindowsConstants.au3>
#include <WinAPIEx.au3>

ShellExecute('notepad.exe')
WinWait('[CLASS:Notepad]')
$hWnd = WinGetHandle("[CLASS:Notepad]")

$WP = WinGetPos($hWnd)
$hAero = GUICreate('Notepad', $wp[2], $wp[3])
WinSetTrans($hAero, '', 180)
$GUI = GUICreate('Notepad', $wp[2], $wp[3], 0, 0, $WS_POPUP, $WS_EX_MDICHILD, $hAero)
GUISetState(@SW_SHOW, $hAero)
GUISetState(@SW_SHOW, $GUI)

_WinSetStyle($hWnd,  $WS_POPUP, $WS_EX_COMPOSITED)
_WinAPI_SetParent($hWnd, $GUI)
WinMove($hWnd, '', 0, 0)

While 1
	If Not ProcessExists('notepad.exe') Then Exit
	Switch GUIGetMsg()
		Case -3
			ProcessClose('notepad.exe')
			Exit
	EndSwitch
WEnd

Func _WinSetStyle($hWnd, $nStyle = -1, $nExStyle = 0)
    Local Const $GWL_STYLE = -16, $GWL_EXSTYLE = -20
    Local Const $SWP_NOMOVE = 0x2, $SWP_NOSIZE = 0x1, $SWP_SHOWWINDOW = 0x40, $SWP_NOZORDER = 0x4
    Local $iFlags = BitOR($SWP_SHOWWINDOW, $SWP_NOSIZE, $SWP_NOZORDER)

    If $nStyle = -1 Then
        $nStyle = BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU)
    EndIf
    $Pos = WinGetpos($hWnd)
    $x = $Pos[0]
    $y = $Pos[1]

    DllCall("User32.dll", "int", "SetWindowLong", "hwnd", $hWnd, "int", $GWL_STYLE, "int", $nStyle)
    DllCall("User32.dll", "int", "SetWindowLong", "hwnd", $hWnd, "int", $GWL_EXSTYLE, "int", $nExStyle)
    DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hWnd, "hwnd", 0, "int", $x + 1, "int", $y + 1 , "int", 0, "int", 0, "int", $iFlags)
EndFunc


PS Есть программка, называется TrueTransparency, поищи в Google.
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Zaramot [?]
PS Есть программка, называется TrueTransparency, поищи в Google.
Она у меня есть.


Добавлено:
Сообщение автоматически объединено:

Zaramot
А как то можно сделать на все окна?
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Еще можно сделать через SkinCrafter:
Код:
#include <WindowsConstants.au3>
#include <WinAPIEx.au3>
#include <SkinCrafter.au3>

ShellExecute('notepad.exe')
WinWait('[CLASS:Notepad]')
$hWnd = WinGetHandle("[CLASS:Notepad]")

_LoadSkinCrafter("SkinCrafterDll.dll")

$WP = WinGetPos($hWnd)
$GUI = GUICreate('Notepad', $wp[2], $wp[3])
_InitializeSkinCrafter($GUI, "Skin.skf")
GUISetState()

_WinSetStyle($hWnd,  $WS_POPUP, $WS_EX_COMPOSITED)
_WinAPI_SetParent($hWnd, $GUI)
WinMove($hWnd, '', 0, 0)

While 1
	If Not ProcessExists('notepad.exe') Then Exit
	Switch GUIGetMsg()
		Case -3
			ProcessClose('notepad.exe')
			Exit
	EndSwitch
WEnd

Func _WinSetStyle($hWnd, $nStyle = -1, $nExStyle = 0)
    Local Const $GWL_STYLE = -16, $GWL_EXSTYLE = -20
    Local Const $SWP_NOMOVE = 0x2, $SWP_NOSIZE = 0x1, $SWP_SHOWWINDOW = 0x40, $SWP_NOZORDER = 0x4
    Local $iFlags = BitOR($SWP_SHOWWINDOW, $SWP_NOSIZE, $SWP_NOZORDER)

    If $nStyle = -1 Then
        $nStyle = BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU)
    EndIf
    $Pos = WinGetpos($hWnd)
    $x = $Pos[0]
    $y = $Pos[1]

    DllCall("User32.dll", "int", "SetWindowLong", "hwnd", $hWnd, "int", $GWL_STYLE, "int", $nStyle)
    DllCall("User32.dll", "int", "SetWindowLong", "hwnd", $hWnd, "int", $GWL_EXSTYLE, "int", $nExStyle)
    DllCall("User32.dll", "int", "SetWindowPos", "hwnd", $hWnd, "hwnd", 0, "int", $x + 1, "int", $y + 1 , "int", 0, "int", 0, "int", $iFlags)
EndFunc


Библиотека:
http://autoit-script.ru/index.php/topic,2692.0.html

Скины:
skins.rar
 

galinakorablyov

Новичок
Сообщения
1
Репутация
0
Ну можно создавать 2 окна, 1е Прозрачное, а 2е дочернее не прозрачное.

Код:
#Include <WindowsConstants.au3>
#Include <GUIConstantsEx.au3>

$hAero = GUICreate('', 400, 300)
WinSetTrans($hAero, '', 100)
$hForm = GUICreate('', 400, 300, 0, 0, $WS_POPUP, $WS_EX_MDICHILD, $hAero)
$iButton = GUICtrlCreateButton('Exit', 20, 20, 80, 20)
GUISetState(@SW_SHOW, $hAero)
GUISetState(@SW_SHOW, $hForm)

While 1
    Switch GUIGetMsg()
        Case -3, $iButton
            Exit
    EndSwitch
Wend
А после того как я это прописала, мне каким форматом сохранять?
 
Верх