Что нового

[Сеть / Интернет] Скрипт зависает при работе с объектом RDP

ZanMax

Тестер
Сообщения
120
Репутация
5
Всем привет. Создаю свой RDP менеджер.
Вот столкнулся с проблемкой. При подключении скрипт зависает. :'(
Сам скрипт привожу ниже :
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=C:\Documents and Settings\Admin\Мои документы\Form1.kxf
$Form1 = GUICreate("Form1", 927, 821, 197, 119)
$MenuItem1 = GUICtrlCreateMenu("MenuItem1")
$Tab1 = GUICtrlCreateTab(8, 32, 905, 761)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Obj1 = ObjCreate("MsTscAx.MsTscAx.6")
$Obj1_ctrl = GUICtrlCreateObj($Obj1, 24, 72, 580, 580)
$Group1 = GUICtrlCreateGroup("", 24, 648, 433, 129)
$Input1 = GUICtrlCreateInput("Input1", 84, 1271, 121, 21)
$Input2 = GUICtrlCreateInput("Input2", 84, 1303, 121, 21)
$Input3 = GUICtrlCreateInput("Input3", 84, 1335, 121, 21)
$Input4 = GUICtrlCreateInput("192.168.0.1", 171, 670, 121, 21)
$Input5 = GUICtrlCreateInput("", 171, 702, 121, 21)
$Input6 = GUICtrlCreateInput("", 171, 734, 121, 21)
$Label1 = GUICtrlCreateLabel("Сервер :", 119, 672, 47, 17)
$Button1 = GUICtrlCreateButton("Connect", 344, 728, 75, 25, $WS_GROUP)
$Label2 = GUICtrlCreateLabel("User :", 100, 704, 68, 17)
$Label3 = GUICtrlCreateLabel("Password :", 114, 737, 48, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	    Case $Button1
			$Obj1.server = "192.168.0.1";
			$Obj1.UserName = "Администратор";
			$Obj1.Connect()
	EndSwitch
WEnd


И дополнительно. Как сделать добавление новой вкладки при нажании на кнопку. ("Добавить вкладку").
Нужно отображать все элементы первой вкладки на всех последующих.

Спасибо ...
 
Автор
Z

ZanMax

Тестер
Сообщения
120
Репутация
5
Re: [Сеть / Интернет] Проблема при работе с RDP

Вкладки понял как сделать :

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
;

Global $Button1
Global $iTabs_Counter = 0

#Region ### START Koda GUI section ### Form=C:\Documents and Settings\Admin\Мои документы\Form1.kxf
$Form1 = GUICreate("Form1", 927, 621)
$MenuItem1 = GUICtrlCreateMenu("MenuItem1")

$CreateTab_Button = GUICtrlCreateButton("Create Tab", 20, 5)

$Tab1 = GUICtrlCreateTab(8, 32, 905, 561)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)

_CreateTab()

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
 
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $CreateTab_Button
            _CreateTab()
        Case $Button1
            $Obj1.Server = GUICtrlRead($Button1-4) ;$Input4
            $Obj1.UserName = "Администратор";
            $Obj1.Connect()
    EndSwitch
WEnd

Func _CreateTab()
    $iTabs_Counter += 1
    
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet" & $iTabs_Counter)
    $Obj1 = ObjCreate("MsTscAx.MsTscAx.6")
    $Obj1_ctrl = GUICtrlCreateObj($Obj1, 24, 72, 580, 580)
    $Group1 = GUICtrlCreateGroup("", 24, 448, 433, 129)
    $Input1 = GUICtrlCreateInput("Input1", 84, 1071, 121, 21)
    $Input2 = GUICtrlCreateInput("Input2", 84, 1103, 121, 21)
    $Input3 = GUICtrlCreateInput("Input3", 84, 1135, 121, 21)
    $Input4 = GUICtrlCreateInput("192.168.0.1", 171, 470, 121, 21)
    $Input5 = GUICtrlCreateInput("", 171, 502, 121, 21)
    $Input6 = GUICtrlCreateInput("", 171, 534, 121, 21)
    $Label1 = GUICtrlCreateLabel("Сервер :", 119, 472, 47, 17)
    $Button1 = GUICtrlCreateButton("Connect", 344, 528, 75, 25, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("User :", 100, 504, 68, 17)
    $Label3 = GUICtrlCreateLabel("Password :", 114, 537, 48, 17)
    
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateTabItem("")
EndFunc


Спс CreatoR.

Как всетаки пофиксить багу с РДП. Очень хочу написать свой RDP менеджер.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 165
Репутация
2 329
Re: [Сеть / Интернет] Проблема при работе с RDP

ZanMax [?]
Вкладки понял как сделать
Вот пример для более корректной обработки элементов в этих табах:

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
;

Global $iTab_Counter = 0

Global $sObj_Name = "MsRDP.MsRDP.6" ;"MsTscAx.MsTscAx.2"5

Global $aButtons[1000]
Global $aTabSheets[1000]
Global $aObjects[1000]
Global $aObject_Ctrls[1000]

$Form1 = GUICreate("Form1", 930, 620)
$MenuItem1 = GUICtrlCreateMenu("MenuItem1")

$CreateTab_Button = GUICtrlCreateButton("Create Tab", 780, 10, 65, 20)
$DeleteTab_Button = GUICtrlCreateButton("Delete Tab", 850, 10, 65, 20)

$nTab_Ctrl = GUICtrlCreateTab(10, 30, 905, 560)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)

_CreateTab()

GUISetState(@SW_SHOW)
 
While 1
	$nMsg = GUIGetMsg()
	
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $CreateTab_Button
			_CreateTab()
		Case $DeleteTab_Button
			If $aTabSheets[0] < 2 Then ContinueLoop
			
			Local $nCurrent_TabID = GUICtrlRead($nTab_Ctrl, 1)
			
			For $i = 1 To $aTabSheets[0]
				If $nCurrent_TabID = $aTabSheets[$i] Then
					GUICtrlDelete($aButtons[$i])
					GUICtrlDelete($aTabSheets[$i])
					GUICtrlDelete($aObject_Ctrls[$i])
					
					_ArrayDelete($aButtons, $i)
					_ArrayDelete($aTabSheets, $i)
					_ArrayDelete($aObject_Ctrls, $i)
					
					$aButtons[0] -= 1
					$aTabSheets[0] -= 1
					$aObject_Ctrls[0] -= 1
				EndIf
			Next
	    Case $aButtons[1] To $aButtons[$aButtons[0]]
			Local $sServer = GUICtrlRead($nMsg-4) ;$Input4
			Local $iIndx = 0
			
			For $i = 1 To $aButtons[0]
				If $nMsg = $aButtons[$i] Then $iIndx = $i
			Next
			
			If IsObj($aObjects[$iIndx]) Then
				With $aObjects[$iIndx]
					.Server = $sServer
					.UserName = "Администратор"
					.Connect()
				EndWith
			EndIf
	EndSwitch
WEnd

Func _CreateTab()
	$aButtons[0] += 1
	$aTabSheets[0] += 1
	$aObjects[0] += 1
	$aObject_Ctrls[0] += 1
	
	$iTab_Counter += 1
	
	$aTabSheets[$aTabSheets[0]] = GUICtrlCreateTabItem("TabSheet" & $iTab_Counter)
	$aObjects[$aObjects[0]] = ObjCreate("MsTscAx.MsTscAx.2")
	$aObject_Ctrls[$aObject_Ctrls[0]] = GUICtrlCreateObj($aObjects[$aObjects[0]], 25, 70, 700, 350)
	
	$Group = GUICtrlCreateGroup("", 24, 448, 433, 129)
	
	$Input1 = GUICtrlCreateInput("Input1", 84, 1071, 121, 21)
	$Input2 = GUICtrlCreateInput("Input2", 84, 1103, 121, 21)
	$Input3 = GUICtrlCreateInput("Input3", 84, 1135, 121, 21)
	
	$Input4 = GUICtrlCreateInput("192.168.0.1", 171, 470, 121, 21)
	$Input5 = GUICtrlCreateInput("", 171, 502, 121, 21)
	$Input6 = GUICtrlCreateInput("", 171, 534, 121, 21)
	
	$Label1 = GUICtrlCreateLabel("Сервер:", 125, 472, 47, 17)
	
	$aButtons[$aButtons[0]] = GUICtrlCreateButton("Connect", 344, 528, 75, 25, $WS_GROUP)
	
	$Label2 = GUICtrlCreateLabel("User:", 140, 504, 68, 17)
	$Label3 = GUICtrlCreateLabel("Password:", 114, 537, 48, 17)
	
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	GUICtrlCreateTabItem("")
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 165
Репутация
2 329
Re: [Сеть / Интернет] Проблема при работе с RDP

ZanMax
Поправил свой пример снова. Теперь вроде должно всё работать.
 
Автор
Z

ZanMax

Тестер
Сообщения
120
Репутация
5
Re: [Сеть / Интернет] Проблема при работе с RDP

:'( А проблема так и осталась. Зависание
После подключения прога перестает реагировать на все и через 5 - 10 сек. проподает сам удаленый рабочий стол. Прога заново работает.
:( Помогите кто игрался с Com Objects. Спасибо большое.
 

MURDOC

Новичок
Сообщения
8
Репутация
0
Re: [Сеть / Интернет] Проблема при работе с RDP

Видимо вся проблема в цикле, скрипт зациклился на подключнии.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: [Сеть / Интернет] Проблема при работе с RDP

MURDOC
что сподвигло тебя написать в тему более чем годовалой давности?
 

MURDOC

Новичок
Сообщения
8
Репутация
0
Да, согласен, конечно не вовремя, но у меня возникла та же мысль, написать менеджер для своего предприятия, и столкнулся с такой же проблемой.
А сама идея с вкладками достойна уважения.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 704
ZanMax, MURDOC

Ребята, советую заранее правильно оценивать возможности того или иного ЯП, ну и свои конечно тоже. Не обижайтесь, но по этим ответам, да и вопросу тоже, я могу с вероятностью 99.9% сказать, что таким макаром вы напишите собственный RDP, в лучшем случае, лет эдак через 10. У вас неправильный подход к написанию программ вцелом: вы идете от сложного к простому. А надо бы наоборот.

И второй момент. Зачем вообще писать собственный RDP, когда уже существует много отличных программ на эту тему? Да и умолчальный в Windows вполне себе ничего (по крайней мере в Windows 7).
 
Верх