SealAlbinos
Продвинутый
- Сообщения
- 154
- Репутация
- 57
Проблема в том что, если загрузить одно окно и выгрузить, то сработает как нужно
но если загрузить более одного окна и попытаться оба их выгрузить, то позволит выгрузить только одно окно, а именно которое было использовано последним
и как можно использовать GUICtrlCreateTabItem, а именно чтоб при внесения окна в программу
окно которое мы вносим перемещалась во вкладку тем самым получая переключение между вкладками
но если загрузить более одного окна и попытаться оба их выгрузить, то позволит выгрузить только одно окно, а именно которое было использовано последним
и как можно использовать 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