Что нового

Не правильно работает комбинация клавиш Ctrl+C

Grx-Lin

Новичок
Сообщения
27
Репутация
0
В форме запускается CMD,комбинации клавиш Ctrl+c,Ctrl+v - работают. Но,если запустить ping X.X.X.X -t. Комбинация клавиш ctrl+c ничего не делает. Как исправить? Пробовал ControlSend отправлять в сам cmd,тоже не работает.
Код:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <WinAPI.au3>
#include <TabConstants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <MenuConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <PluginInclude.au3>
#include <WinAPIEx.au3>
#include <APIConstants.au3>
#include <GUIEdit.au3>

Local $iFileMenu, $iFileItem, $sFilePath, $iStatusBar
Local $iHelpMenu, $iInfoItem, $iExit, $iRecentFilesMenu, $hGui
Local $iViewMenu, $iViewStatusItem, $iStyleitem, $iCancel, $iBtnOK
Local $iRadioitem1, $iRadioitem2, $iRadioitem3, $iRadioitem4, $settings, $iCombo, $cmd, $Paused

$GUI = GUICreate("Switch Configurator", 700, 740, 550, 300, BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_CLIPCHILDREN,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))

$PID = Run(@ComSpec)
$WWcmd = WinWaitActive("[class:ConsoleWindowClass]")
_WinAPI_SetWindowLong($WWcmd, $GWL_STYLE, $WS_POPUP)
WinSetState($WWcmd, "", @SW_SHOW)
_WinAPI_SetParent($WWcmd, $GUI)
WinMove($WWcmd, 0,0,200,700)

Func _GetHwndFromPID($PID)
    $WWcmd = 0
    $stPID = DllStructCreate("int")
    Do
        $winlist2 = WinList()
        For $i = 1 To $winlist2[0][0]
            If $winlist2[$i][0] <> "" Then
                DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $winlist2[$i][1], "ptr", DllStructGetPtr($stPID))
                If DllStructGetData($stPID, 1) = $PID Then
                    $WWcmd = $winlist2[$i][1]
                    ExitLoop
                EndIf
            EndIf
        Next
        Sleep(100)
    Until $WWcmd <> 0
    Return $WWcmd
EndFunc

GUISetState()
While 1
    $nMsg = GUIGetMsg()
		Switch $nMsg

        Case $iViewStatusItem ; 
            If BitAND(GUICtrlRead($iViewStatusItem), $GUI_CHECKED) = $GUI_CHECKED Then ; 
                GUICtrlSetState($iViewStatusItem, $GUI_UNCHECKED) ;
                GUICtrlSetState($iStatusBar, $GUI_HIDE) ;
            Else ; Иначе
                GUICtrlSetState($iViewStatusItem, $GUI_CHECKED) ; 
                GUICtrlSetState($iStatusBar, $GUI_SHOW) ; 
            EndIf
        Case $iStyleitem
            If BitAND(GUICtrlRead($iStyleitem), $GUI_CHECKED) = $GUI_CHECKED Then
                GUICtrlSetState($iStyleitem, $GUI_UNCHECKED)
                GUISetStyle($GUI_SS_DEFAULT_GUI)
            Else
                GUICtrlSetState($iStyleitem, $GUI_CHECKED)
                GUISetStyle(BitOR($WS_BORDER, $WS_POPUP, $WS_SYSMENU))
            EndIf
        Case $iInfoItem
            MsgBox(64, "Информация", "Настройка коммутоаторов V1.0", 0, $GUI)
        Case $GUI_EVENT_CLOSE, $iExit
			ExitLoop
		Case $iBtnOK
			$PID = WinGetHandle("C:\Windows\System32\cmd.exe","")
				if Not $WWcmd Then
			MsgBox(4096,'Сообщение','Окно не найдено,завершаем работу скрипта')
					Exit
				EndIf
		EndSwitch
WEnd
 
Верх