Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用AutoIT右键单击目录中的文件?_Autoit_Right Click - Fatal编程技术网

如何使用AutoIT右键单击目录中的文件?

如何使用AutoIT右键单击目录中的文件?,autoit,right-click,Autoit,Right Click,我试图在windows资源管理器中模拟在特定文件或文件夹上自动右键单击鼠标的功能,这是我编写的代码片段,用于模拟: #include<GUIListView.au3> Local $filepath = "C:\Windows\addins" Local $iPid = Run("explorer.exe /n,/e,/select," & $filepath) ProcessWait($iPid) Sleep(1000) Local $hList = Control

我试图在windows资源管理器中模拟在特定文件或文件夹上自动右键单击鼠标的功能,这是我编写的代码片段,用于模拟:

#include<GUIListView.au3>

Local $filepath = "C:\Windows\addins"

Local $iPid = Run("explorer.exe /n,/e,/select," & $filepath)
ProcessWait($iPid)

Sleep(1000)

Local $hList = ControlGetHandle("[CLASS:CabinetWClass]", "", "[CLASS:SysListView32; INSTANCE:1]")

Local $aClient = WinGetPos($hList)
Local $aPos = _GUICtrlListView_GetItemPosition($hList, _GUICtrlListView_GetSelectedIndices($hList))

MouseClick("Right", $aClient[0] + $aPos[0] + 4, $aClient[1] + $aPos[1] + 4)
#包括
本地$filepath=“C:\Windows\addins”
本地$iPid=Run(“explorer.exe/n,/e,/select,&$filepath)
ProcessWait($iPid)
睡眠(1000)
本地$hList=ControlGetHandle(“[CLASS:CabinetWClass],”,“[CLASS:SysListView32;实例:1]”)
本地$aClient=wingtpos($hList)
本地$aPos=\u GUICtrlListView\u GetItemPosition($hList,\u GUICtrlListView\u getselecteddinces($hList))
鼠标单击(“右”,$aClient[0]+$aPos[0]+4,$aClient[1]+$aPos[1]+4)
但这会给我一个错误,说:

“C:\ProgramFiles(x86)\AutoIt3\SciTE..\AutoIt3.exe”/ErrorStdOut“C:\Users\Asablock\Desktop\My Documents\Calculator.au3”
“C:\Users\Asablock\Desktop\My Documents\Calculator.au3”(15):=> 用于不可访问变量的下标:MouseClick(“Right”, $aClient[0]+$aPos[0]+4$aClient[1]+$aPos[1]+4) 鼠标单击(“右”),$aClient^错误 退出代码:1次:1.593

有谁能给我建议一个解决方法,如何解决使用AutoIT模拟右键单击的问题。

试试这个:

#include<GUIListView.au3>

Local $filepath = "C:\Windows\addins"

Local $iPid = Run("explorer.exe /n,/e,/select," & $filepath)
ProcessWait($iPid)

Sleep(1000)

Send('+{F10}')
#包括
本地$filepath=“C:\Windows\addins”
本地$iPid=Run(“explorer.exe/n,/e,/select,&$filepath)
ProcessWait($iPid)
睡眠(1000)
发送('+{F10}')
试试这个:

#include<GUIListView.au3>

Local $filepath = "C:\Windows\addins"

Local $iPid = Run("explorer.exe /n,/e,/select," & $filepath)
ProcessWait($iPid)

Sleep(1000)

Send('+{F10}')
#包括
本地$filepath=“C:\Windows\addins”
本地$iPid=Run(“explorer.exe/n,/e,/select,&$filepath)
ProcessWait($iPid)
睡眠(1000)
发送('+{F10}')

关于第二个问题:

这些是您需要的功能。 摆弄他们,你就会明白的

#include-once
#include <GuiMenu.au3>
;#include <GuiToolbar.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
Opt("MustDeclareVars", 1)

Global $gaPopups[1][3] = [[0, 0]]

Func _Lib_PopupGetHwnd($iIndex = 1)
    _Lib_PopupWait()
    Return $gaPopups[$iIndex][0]
EndFunc   ;==>_Lib_PopupGetHwnd

Func _Lib_PopupScan()
    Local $iI, $sClass, $hWnd, $hMenu
    ReDim $gaPopups[1][3]
    $gaPopups[0][0] = 0
    ReDim $winapi_gaWinList[64][2]
    $winapi_gaWinList[0][0] = 0
    $winapi_gaWinList[0][1] = 64
    _WinAPI_EnumWindowsPopup()
    For $iI = 1 To $winapi_gaWinList[0][0]
        $hWnd = $winapi_gaWinList[$iI][0]
        $sClass = $winapi_gaWinList[$iI][1]
        Select
            Case $sClass = "#32768"
                $hMenu = _SendMessage($hWnd, $MN_GETHMENU, 0, 0)
                _Lib_PopupAdd($hMenu, 1, $hWnd)
            Case $sClass = "ToolbarWindow32"
                _Lib_PopupAdd($hWnd, 2, _WinAPI_GetParent($hWnd))
            Case $sClass = "ToolTips_Class32"
                _Lib_PopupAdd($hWnd, 3, _WinAPI_GetParent($hWnd))
        EndSelect
    Next
EndFunc   ;==>_Lib_PopupScan

Func _Lib_PopupWait()
    Local $iLoop = 0
    While $iLoop < 50
        If $gaPopups[0][0] > 0 Then Return
        Sleep(100)
        _Lib_PopupScan()
        $iLoop += 1
    WEnd
    ConsoleWrite("Timeout waiting for popup window to appear" & @CRLF)
EndFunc   ;==>_Lib_PopupWait

Func _Lib_PopupAdd($hWnd, $iType, $hParent)
    Local $iCount
    $gaPopups[0][0] += 1
    $iCount = $gaPopups[0][0]
    ReDim $gaPopups[$iCount + 1][3]
    $gaPopups[$iCount][0] = $hWnd
    $gaPopups[$iCount][1] = $iType
    $gaPopups[$iCount][2] = $hParent
EndFunc   ;==>_Lib_PopupAdd
#包含一次
#包括
##包括
#包括
#包括
选择(“必须申报”,1)
全局$gaPopups[1][3]=[0,0]]
Func_Lib_PopupGetHwnd($iIndex=1)
_Lib_PopupWait()
返回$gaPopups[$iIndex][0]
EndFunc;==>\u Lib\u PopupGetHwnd
Func _Lib_popuscan()
本地$iI、$sClass、$hWnd、$hMenu
ReDim$gaPopups[1][3]
$gaPopups[0][0]=0
ReDim$winapi_gaWinList[64][2]
$winapi_gaWinList[0][0]=0
$winapi_gaWinList[0][1]=64
_WinAPI_EnumWindowsPopup()
对于$iI=1至$winapi_gaWinList[0][0]
$hWnd=$winapi\u gaWinList[$iI][0]
$sClass=$winapi\u gaWinList[$iI][1]
选择
案例$sClass=“#32768”
$humenu=\u sendmages($hWnd,$MN\u gethumenu,0,0)
_Lib_PopupAdd($hMenu,1,$hWnd)
案例$sClass=“ToolbarWindow32”
_Lib_PopupAdd($hWnd,2,_WinAPI_GetParent($hWnd))
案例$sClass=“工具提示\u类32”
_Lib_PopupAdd($hWnd,3,_WinAPI_GetParent($hWnd))
结束选择
下一个
EndFunc;==>\u Lib\u popuscan
Func_Lib_PopupWait()
本地$iLoop=0
而$iLoop<50
如果$gaPopups[0][0]>0,则返回
睡眠(100)
_Lib_popuscan()
$iLoop+=1
温德
控制台写入(“等待弹出窗口出现超时”&@CRLF)
EndFunc;==>\u Lib\u PopupWait
Func_Lib_PopupAdd($hWnd,$iType,$hParent)
本地$i帐户
$gaPopups[0][0]+=1
$iCount=$gaPopups[0][0]
ReDim$gaPopups[$iCount+1][3]
$gaPopups[$iCount][0]=$hWnd
$gaPopups[$iCount][1]=$iType
$gaPopups[$iCount][2]=$hParent
EndFunc;==>\u Lib\u PopupAdd

关于第二个问题:

这些是您需要的功能。 摆弄他们,你就会明白的

#include-once
#include <GuiMenu.au3>
;#include <GuiToolbar.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
Opt("MustDeclareVars", 1)

Global $gaPopups[1][3] = [[0, 0]]

Func _Lib_PopupGetHwnd($iIndex = 1)
    _Lib_PopupWait()
    Return $gaPopups[$iIndex][0]
EndFunc   ;==>_Lib_PopupGetHwnd

Func _Lib_PopupScan()
    Local $iI, $sClass, $hWnd, $hMenu
    ReDim $gaPopups[1][3]
    $gaPopups[0][0] = 0
    ReDim $winapi_gaWinList[64][2]
    $winapi_gaWinList[0][0] = 0
    $winapi_gaWinList[0][1] = 64
    _WinAPI_EnumWindowsPopup()
    For $iI = 1 To $winapi_gaWinList[0][0]
        $hWnd = $winapi_gaWinList[$iI][0]
        $sClass = $winapi_gaWinList[$iI][1]
        Select
            Case $sClass = "#32768"
                $hMenu = _SendMessage($hWnd, $MN_GETHMENU, 0, 0)
                _Lib_PopupAdd($hMenu, 1, $hWnd)
            Case $sClass = "ToolbarWindow32"
                _Lib_PopupAdd($hWnd, 2, _WinAPI_GetParent($hWnd))
            Case $sClass = "ToolTips_Class32"
                _Lib_PopupAdd($hWnd, 3, _WinAPI_GetParent($hWnd))
        EndSelect
    Next
EndFunc   ;==>_Lib_PopupScan

Func _Lib_PopupWait()
    Local $iLoop = 0
    While $iLoop < 50
        If $gaPopups[0][0] > 0 Then Return
        Sleep(100)
        _Lib_PopupScan()
        $iLoop += 1
    WEnd
    ConsoleWrite("Timeout waiting for popup window to appear" & @CRLF)
EndFunc   ;==>_Lib_PopupWait

Func _Lib_PopupAdd($hWnd, $iType, $hParent)
    Local $iCount
    $gaPopups[0][0] += 1
    $iCount = $gaPopups[0][0]
    ReDim $gaPopups[$iCount + 1][3]
    $gaPopups[$iCount][0] = $hWnd
    $gaPopups[$iCount][1] = $iType
    $gaPopups[$iCount][2] = $hParent
EndFunc   ;==>_Lib_PopupAdd
#包含一次
#包括
##包括
#包括
#包括
选择(“必须申报”,1)
全局$gaPopups[1][3]=[0,0]]
Func_Lib_PopupGetHwnd($iIndex=1)
_Lib_PopupWait()
返回$gaPopups[$iIndex][0]
EndFunc;==>\u Lib\u PopupGetHwnd
Func _Lib_popuscan()
本地$iI、$sClass、$hWnd、$hMenu
ReDim$gaPopups[1][3]
$gaPopups[0][0]=0
ReDim$winapi_gaWinList[64][2]
$winapi_gaWinList[0][0]=0
$winapi_gaWinList[0][1]=64
_WinAPI_EnumWindowsPopup()
对于$iI=1至$winapi_gaWinList[0][0]
$hWnd=$winapi\u gaWinList[$iI][0]
$sClass=$winapi\u gaWinList[$iI][1]
选择
案例$sClass=“#32768”
$humenu=\u sendmages($hWnd,$MN\u gethumenu,0,0)
_Lib_PopupAdd($hMenu,1,$hWnd)
案例$sClass=“ToolbarWindow32”
_Lib_PopupAdd($hWnd,2,_WinAPI_GetParent($hWnd))
案例$sClass=“工具提示\u类32”
_Lib_PopupAdd($hWnd,3,_WinAPI_GetParent($hWnd))
结束选择
下一个
EndFunc;==>\u Lib\u popuscan
Func_Lib_PopupWait()
本地$iLoop=0
而$iLoop<50
如果$gaPopups[0][0]>0,则返回
睡眠(100)
_Lib_popuscan()
$iLoop+=1
温德
控制台写入(“等待弹出窗口出现超时”&@CRLF)
EndFunc;==>\u Lib\u PopupWait
Func_Lib_PopupAdd($hWnd,$iType,$hParent)
本地$i帐户
$gaPopups[0][0]+=1
$iCount=$gaPopups[0][0]
ReDim$gaPopups[$iCount+1][3]
$gaPopups[$iCount][0]=$hWnd
$gaPopups[$iCount][1]=$iType
$gaPopups[$iCount][2]=$hParent
EndFunc;==>\u Lib\u PopupAdd

它似乎可以工作!!非常感谢:D我能够实现我想要的,现在我还有一个与此相关的问题,我如何从右键单击后出现的菜单中选择特定选项,你对此有什么想法吗?BlockInput(1)发送({down 8})发送({ENTER}”)BlockInput(0)我建议您在使用Send()时,无论何时都可以使用BlockInput来保护脚本不受干扰。嗨,米洛斯谢谢您的回复,让我解释一下我的情况,我想做的事情是,首先我应该能够打开所需的目录,比如说“C:/”在该目录中,我需要右键单击特定文件夹并从出现的菜单中获取选项列表,比如如果菜单具有Open、OpenWith和属性,我需要在一个数组中获取所有这些选项。它似乎可以工作!!非常感谢:D我能够