Автор Тема: [Окна, Диалоги] Изменение стиля окна стороннего приложения  (Прочитано 3233 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн WSWR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 930
  • Репутация: 351
    • Награды
  • Версия AutoIt: 3.3.14.0
В этой теме приведен пример изменения стиля стороннего окна:
http://autoit-script.ru/index.php/topic,5983.0.html

Код: AutoIt [Выделить]
#include <WindowsConstants.au3>

Run('notepad', '', @SW_SHOW)

WinWait('[CLASS:Notepad]')
$hWnd = WinGetHandle("[CLASS:Notepad]")
$nStyle = _WinGetStyle($hWnd, 0)
$nExStyle = _WinGetStyle($hWnd, 1)

_WinSetStyle($hWnd,  -1,BitOr($nExStyle, BitOr($WS_EX_TRANSPARENT, $WS_EX_TOPMOST)))
WinSetTrans($hWnd,"",255)
WinSetOnTop($hWnd,"",1)

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

Func _WinGetStyle($hWnd, $iIndex = 0)
    Local Const $GWL_STYLE = -16, $GWL_EXSTYLE = -20

    Local $iGWL_Index = $GWL_STYLE

    If $iIndex > 0 Then
        $iGWL_Index = $GWL_EXSTYLE
    EndIf

    Local $aStyles = DllCall('User32.dll', 'long', 'GetWindowLong', 'hwnd', $hWnd, 'int', $iGWL_Index)
    Return $aStyles[0]
EndFunc
 


Как переделать этот пример, чтобы заголовок окна стал таким, как на скрине? Или вообще удалить заголовок окна.

Русское сообщество AutoIt


Оффлайн Zaramot [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1160
  • Репутация: 655
  • Пол: Мужской
  • I ♥ AutoIt
    • Награды
  • Версия AutoIt: 3.3.8.1
Цитировать
Как переделать этот пример, чтобы заголовок окна стал таким, как на скрине? Или вообще удалить заголовок окна.

Убираем (удаляем) заголовок:
Код: AutoIt [Выделить]
#include <WindowsConstants.au3>

Run('notepad', '', @SW_SHOW)

WinWait('[CLASS:Notepad]')
$hWnd = WinGetHandle("[CLASS:Notepad]")

_WinSetStyle($hWnd,  $WS_POPUP)

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

Func _WinGetStyle($hWnd, $iIndex = 0)
    Local Const $GWL_STYLE = -16, $GWL_EXSTYLE = -20

    Local $iGWL_Index = $GWL_STYLE

    If $iIndex > 0 Then
        $iGWL_Index = $GWL_EXSTYLE
    EndIf

    Local $aStyles = DllCall('User32.dll', 'long', 'GetWindowLong', 'hwnd', $hWnd, 'int', $iGWL_Index)
    Return $aStyles[0]
EndFunc


Делаем заголовок как на скрине:
Код: AutoIt [Выделить]
#include <WindowsConstants.au3>

Run('notepad', '', @SW_SHOW)

WinWait('[CLASS:Notepad]')
$hWnd = WinGetHandle("[CLASS:Notepad]")

_WinSetStyle($hWnd,  -1, $WS_EX_TOOLWINDOW)

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

Func _WinGetStyle($hWnd, $iIndex = 0)
    Local Const $GWL_STYLE = -16, $GWL_EXSTYLE = -20

    Local $iGWL_Index = $GWL_STYLE

    If $iIndex > 0 Then
        $iGWL_Index = $GWL_EXSTYLE
    EndIf

    Local $aStyles = DllCall('User32.dll', 'long', 'GetWindowLong', 'hwnd', $hWnd, 'int', $iGWL_Index)
    Return $aStyles[0]
EndFunc


P.S. Проверено на Windows XP SP3 - РАБОТАЕТ  :)
« Последнее редактирование: Август 06, 2011, 20:00:01 от Zaramot »

Оффлайн WSWR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 930

  • Автор темы
  • Репутация: 351
    • Награды
  • Версия AutoIt: 3.3.14.0
Zaramot, спасибо!  :IL_AutoIt_1:

Русское сообщество AutoIt

Re: [Окна, Диалоги] Изменение стиля окна стороннего приложения
« Ответ #2 Отправлен: Август 06, 2011, 20:50:02 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
13 Ответов
11839 Просмотров
Последний ответ Октябрь 29, 2009, 17:18:35
от ustas
1 Ответов
3006 Просмотров
Последний ответ Октябрь 23, 2009, 03:15:01
от Yashied
7 Ответов
5577 Просмотров
Последний ответ Август 21, 2010, 18:47:36
от madmasles
0 Ответов
1343 Просмотров
Последний ответ Апрель 16, 2013, 17:01:09
от CheFix
2 Ответов
2501 Просмотров
Последний ответ Февраль 13, 2014, 11:28:02
от zarius
25 Ответов
3295 Просмотров
Последний ответ Июнь 11, 2015, 15:40:26
от madmasles
2 Ответов
1377 Просмотров
Последний ответ Июль 27, 2016, 16:11:19
от Enya
1 Ответов
562 Просмотров
Последний ответ Апрель 06, 2017, 10:19:48
от joiner
2 Ответов
208 Просмотров
Последний ответ Август 01, 2017, 18:58:13
от Killan50
3 Ответов
725 Просмотров
Последний ответ Сентябрь 02, 2017, 06:45:03
от Hiki