1 (изменено: Selja8, 2014-07-30 14:02:43)

Тема: AU3: Коллекция скриптов и идей AutoIT.

Вот первый скрипт - он же модуль.
Получаем процессы с путями.
Имеется возможность копирования в буфер пути выполняемого процесса.
Скрипт не мой.

+ открыть спойлер
#include <Array.au3> 
 
;============= Example with default usage ============= 
$aProcListEx = _ProcessListEx() 
 
If @error Then 
    MsgBox(48, "_ProcessListEx - Error", StringFormat("There was an error to get ProcessList (@error = %i)", @error)) 
Else 
    _ArrayDisplay($aProcListEx, "_ProcessListEx Demo (All Processes)") 
EndIf 
;============= Example with default usage ============= 
 
;============= Example with Resource Name usage ============= 
$aAutoItProcList = _ProcessListEx("CompiledScript", "AutoIt", 0) 
 
If @error Then 
    MsgBox(48, "_ProcessListEx - Error", StringFormat("There was an error to get ProcessList (@error = %i)", @error)) 
Else 
    _ArrayDisplay($aAutoItProcList, "_ProcessListEx Demo (AutoIt Processes)") 
EndIf 
;============= Example with Resource Name usage ============= 
 
;===============================================================================
; 
; Function Name:           _ProcessListEx() 
; 
; Function Description:    Gets Process List with extended info, plus can retrieve only a processes with specific resources strings. 
; 
; Parameter(s):            $sResourceName [Optional] - Resource name of the process filename, i.e. "CompiledScript". 
;                          $sInResString [Optional] - String to check in the resource name. 
;                          $iWholeWord [Optional] - Defines if the $sInResString will be compared as whole string (default is 1). 
; 
; Requirement(s):          None. 
; 
; Return Value(s):         On Success -  Return 2-dimentional array, where: 
;                                                                   $aRet_List[0][0] = Total processes (array elements). 
;                                                                   $aRet_List[N][0] = Process Name. 
;                                                                   $aRet_List[N][1] = PID (Process ID). 
;                                                                   $aRet_List[N][2] = Process File Path. 
;                          On Failure -  Return '' (empty string) and set @error to: 
;                                                                   1 - Unable to Open Kernel32.dll. 
;                                                                   2 - Unable to Open Psapi.dll. 
;                                                                   3 - No Processes Found. 
; 
; Author(s):               G.Sandler (a.k.a MrCreatoR) - CreatoR's Lab (http://creator-lab.ucoz.ru) 
; 
;===================================================================== 
Func _ProcessListEx($sResourceName="", $sInResString="", $iWholeWord=1) 
    Local $aProcList = ProcessList() 
    Local $hKernel32_Dll = DllOpen('Kernel32.dll'), $hPsapi_Dll = DllOpen('Psapi.dll') 
    Local $aOpenProc, $aProcPath, $sFileVersion, $aRet_List[1][1] 
 
    If $hKernel32_Dll = -1 Then Return SetError(1, 0, '') 
 
    If $hPsapi_Dll = -1 Then $hPsapi_Dll = DllOpen(@SystemDir & '\Psapi.dll') 
    If $hPsapi_Dll = -1 Then $hPsapi_Dll = DllOpen(@WindowsDir & '\Psapi.dll') 
    If $hPsapi_Dll = -1 Then Return SetError(2, 0, '') 
 
    Local $vStruct      = DllStructCreate('int[1024]') 
    Local $pStructPtr   = DllStructGetPtr($vStruct) 
    Local $iStructSize  = DllStructGetSize($vStruct) 
 
    For $i = 1 To UBound($aProcList)-1 
        $aOpenProc = DllCall($hKernel32_Dll, 'hwnd', 'OpenProcess', _ 
            'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $aProcList[$i][1]) 
 
        If Not IsArray($aOpenProc) Or Not $aOpenProc[0] Then ContinueLoop 
 
        DllCall($hPsapi_Dll, 'int', 'EnumProcessModules', _ 
            'hwnd', $aOpenProc[0], _ 
            'ptr', $pStructPtr, _ 
            'int', $iStructSize, _ 
            'int*', 0) 
 
        $aProcPath = DllCall($hPsapi_Dll, 'int', 'GetModuleFileNameEx', _ 
            'hwnd', $aOpenProc[0], _ 
            'int', DllStructGetData($vStruct, 1), _ 
            'str', '', _ 
            'int', 2048) 
 
        DllCall($hKernel32_Dll, 'int', 'CloseHandle', 'int', $aOpenProc[0]) 
 
        If Not IsArray($aProcPath) Or StringLen($aProcPath[3]) = 0 Then ContinueLoop 
 
        $sFileVersion = FileGetVersion($aProcPath[3], $sResourceName) 
 
        If $sResourceName = "" Or $sFileVersion = $sInResString Or _ 
            ($iWholeWord = 0 And StringInStr($sFileVersion, $sInResString)) Then 
 
            $aRet_List[0][0] += 1 
            ReDim $aRet_List[$aRet_List[0][0]+1][3] 
            $aRet_List[$aRet_List[0][0]][0] = $aProcList[$i][0]     ;Process Name 
            $aRet_List[$aRet_List[0][0]][1] = $aProcList[$i][1]     ;PID (Process ID) 
            $aRet_List[$aRet_List[0][0]][2] = $aProcPath[3]         ;Process File Path 
        EndIf 
    Next 
 
    DllClose($hKernel32_Dll) 
    DllClose($hPsapi_Dll) 
 
    If $aRet_List[0][0] < 1 Then Return SetError(3, 0, '') 
    Return $aRet_List 
EndFunc

2

Re: AU3: Коллекция скриптов и идей AutoIT.

В архиве имеется:
  -Последняя версия Autoit3;
  -Русскоязычный HELP;
  -Редактор SciTE; Который оптимизирует написание ваших скриптов.
  -Огромная UDF библиотека;
+BONUS: Музыкальный плеер с кучей возможностей, написанный на AU3.
***https://yadi.sk/d/U_zJUib_YS4UY***

3

Re: AU3: Коллекция скриптов и идей AutoIT.

В помощь разработчикам:
https://yadi.sk/d/ed0zTkOXYSnen
WIN_API - Русский HELP.

4

Re: AU3: Коллекция скриптов и идей AutoIT.

Rundll32:
http://dx21.com/coding/libraries/rundll32/default.aspx

5 (изменено: Selja8, 2014-07-31 08:28:17)

Re: AU3: Коллекция скриптов и идей AutoIT.

У самого пока что почти ничего не получается, но я стараюсь.
Очень легко далась автоматизация установки приложений. (Описание в HELP-е по AU3.).

6 (изменено: Selja8, 2014-07-31 09:41:48)

Re: AU3: Коллекция скриптов и идей AutoIT.

Очень хорошие уроки по AutoIT на Английском.
- http://www.youtube.com/watch?v=82ifMPij … mp;index=1