Что нового

[Окна, Диалоги] Загрузка и выгрузка из родительского окна

SealAlbinos

Продвинутый
Сообщения
152
Репутация
57
Проблема в том что, если загрузить одно окно и выгрузить, то сработает как нужно
но если загрузить более одного окна и попытаться оба их выгрузить, то позволит выгрузить только одно окно, а именно которое было использовано последним
и как можно использовать GUICtrlCreateTabItem, а именно чтоб при внесения окна в программу
окно которое мы вносим перемещалась во вкладку тем самым получая переключение между вкладками
Код:
#RequireAdmin
#include <GUIListBox.au3>
#Include <GuiListView.au3>
#include <GUIConstantsEx.au3>

$HZ = 0
$Form1 = GUICreate("", 587, 308, 376, 214)
$List1 = GUICtrlCreateList("", 0, 0, 153, 279)
$fLoginbutton = GUICtrlCreateButton("Start", 8, 280, 139, 25)
$menu = GUICtrlCreateContextMenu($List1)
$menu1 = GUICtrlCreateMenuItem("Delete", $menu)
$menu2 = GUICtrlCreateMenuItem("Show", $menu)
$menu3 = GUICtrlCreateMenuItem("Hide", $menu)
$menu4 = GUICtrlCreateMenuItem("В программу", $menu)
$menu5 = GUICtrlCreateMenuItem("Выгрузить", $menu)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
	Case $GUI_EVENT_CLOSE
		Exit
	Case $menu2
                WinSetState(GUICtrlRead($List1), "", @SW_Show)
	Case $menu4
                $hWnd = WinGetHandle(GUICtrlRead($List1))
	        WinMove($hWnd,"",160, 0, 425, 305)
		_WinAPI_SetParent($hWnd,$Form1)
	Case $menu5
                _WinAPI_SetParent($hWnd,0)
	        WinMove($hWnd,"",0,0,1030,797)
	Case $menu3
		WinSetState(GUICtrlRead($List1), "", @SW_HIDE)
		Case $fLoginbutton
               LoginProcess()
	Case $menu1
		WinClose(GUICtrlRead($List1))
		usunlink()
	EndSwitch
 WEnd

Func LoginProcess()
    WinWait("Безымянный — Блокнот")
    $Process = ProcessList("notepad.exe")
    For $qwe = 1 To $Process[0][0]
    $HZ += 1
    WinSetTitle("Безымянный — Блокнот", "", "name" & $HZ)
    $dark = _Process2Win($Process[$qwe][1])
    GUICtrlSetData($List1, $dark)
    Next
EndFunc

 Func usunlink()
    $sName = GUICtrlRead($List1)
    _GUICtrlListBox_DeleteString($List1, _GUICtrlListBox_GetCaretIndex($List1))
 EndFunc

func _Process2Win($pid)
    if isstring($pid) then $pid = processexists($pid)
    if $pid = 0 then return -1
    $list = WinList()
    for $i = 1 to $list[0][0]
        if $list[$i][0] <> "" AND BitAnd(WinGetState($list[$i][1]),2) then
            $wpid = WinGetProcess($list[$i][0])
            if $wpid = $pid then return $list[$i][0]
        EndIf
    next
    return -1
endfunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Код:
...
		Case $menu5
			$hWnd = ControlGetHandle($Form1, "", GUICtrlRead($List1)) ; <= добавить
			_WinAPI_SetParent($hWnd, 0)
			WinMove($hWnd, "", 0, 0, 1030, 797)
		Case $menu3
...
 
Автор
SealAlbinos

SealAlbinos

Продвинутый
Сообщения
152
Репутация
57
InnI сказал(а):
Код:
...
		Case $menu5
			$hWnd = ControlGetHandle($Form1, "", GUICtrlRead($List1)) ; <= добавить
			_WinAPI_SetParent($hWnd, 0)
			WinMove($hWnd, "", 0, 0, 1030, 797)
		Case $menu3
...
Большое спасибо все срабатывает на ура
есть не большой вопрос, как можно сделать чтоб допустим при нажатии кнопки "В программу", в программе создавалась вкладка GUICtrlCreateTabItem и собственно переносилось в нее?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
SealAlbinos
Как-то с вкладками не доводилось работать.
Но у вас же есть готовый список. И его можно использовать вместо вкладок для активации окон
Код:
Case $List1
      ControlFocus($Form1, "", GUICtrlRead($List1))
 
Автор
SealAlbinos

SealAlbinos

Продвинутый
Сообщения
152
Репутация
57
InnI сказал(а):
SealAlbinos
Как-то с вкладками не доводилось работать.
Но у вас же есть готовый список. И его можно использовать вместо вкладок для активации окон
Код:
Case $List1
      ControlFocus($Form1, "", GUICtrlRead($List1))
хорошо, еще раз спасибо за помощь
 
Верх