Хочу узнать трудно ли "сломать" скомпилированную программу Autoit с паролем - получить исходник или что-то там в ней отключить (какую-нибудь проверку)? Если легко ломается, может знаете как ее еще можно защищать от взлома?
» AutoIT
хотелось бы вообще узнать как декомпилить программы автоит
ато я че-то пробовал exe2au3 причем из разных версий автоита, ничего не выходит
то говорит версия не подходит, то вообще это не на автоите написано......
пробую свои скрипты.....
ато я че-то пробовал exe2au3 причем из разных версий автоита, ничего не выходит
то говорит версия не подходит, то вообще это не на автоите написано......
пробую свои скрипты.....
А можно по хендлу найти окно и закрыть его? Спасибо!
Успешно сделал програмку в autoit которая помогает мне автоматизировать те вещи которые заимали у меня много времени в виндовс, чего только стоит стоит команда controlsend!! Думаю мои следущие вопросы посавят жирную точку на моем autoit-обрзовании.
№1 Мне нужно чтобы скрипт запускал файл, который лежит в той же папке, что и этот скомпелировный срипт. При этом, не указывать директоию! То есть, при перемещении скрипта автоматический изменялась бы директория, в ту где лежит этот скрипт. Как это сделать?
№2 Схожий вопрос, можно ли сделать так, чтобы скрипт сам себя выключал (То есть поностью выключился) и при этом занов запустился через X времени. Теоретический это можно было бы сделать поставив паузу в скипте, потом указать ему чтобы он запустил точно такой же скрипт и дальше exit. Можно ли сделать это иначе?
№3 Каким образом оптимально сделать GUI одного скрипта который бы запускал другие скрипты? Просто вставив туда GUICtrlCreateButton и указав на директорию нужны скриптов? Незню почеу, но что-то в этом способе мне не нравится! (Spider-Sense)
№4 А теперь вопрос на миллион, где можно найти подробный help про использоание .dll файлов для нахождением хендлов кнопок? Надеюсь вы меня поняли
Всем спасибо!
№1 Мне нужно чтобы скрипт запускал файл, который лежит в той же папке, что и этот скомпелировный срипт. При этом, не указывать директоию! То есть, при перемещении скрипта автоматический изменялась бы директория, в ту где лежит этот скрипт. Как это сделать?
№2 Схожий вопрос, можно ли сделать так, чтобы скрипт сам себя выключал (То есть поностью выключился) и при этом занов запустился через X времени. Теоретический это можно было бы сделать поставив паузу в скипте, потом указать ему чтобы он запустил точно такой же скрипт и дальше exit. Можно ли сделать это иначе?
№3 Каким образом оптимально сделать GUI одного скрипта который бы запускал другие скрипты? Просто вставив туда GUICtrlCreateButton и указав на директорию нужны скриптов? Незню почеу, но что-то в этом способе мне не нравится! (Spider-Sense)
№4 А теперь вопрос на миллион, где можно найти подробный help про использоание .dll файлов для нахождением хендлов кнопок? Надеюсь вы меня поняли
Всем спасибо!
gal7 18:33 28-11-2008
Цитата:
Скажем так, тот, кому это сильно будет нужно, сможет это сделать
Цитата:
На 100% никак, ни одна программа от этого не защищена (тем более на AutoIt'е).
См эту тему (и можно ещё эту), там она измучена до конца(?).
CrazyNNM 21:26 28-11-2008
Цитата:
Смотря из каких, скрипты из 3.2.5.1 ещё можно декомпилировать.
Добавлено:
promt 22:06 28-11-2008
Цитата:
Хендлу чего, окна? - WinClose($hWnd).
Zwook 22:18 28-11-2008
Цитата:
Так:
Код: Run(@ScriptDir & "\SomeFile.exe")
Цитата:
трудно ли "сломать" скомпилированную программу Autoit с паролем - получить исходник или что-то там в ней отключить (какую-нибудь проверку)?
Скажем так, тот, кому это сильно будет нужно, сможет это сделать
Цитата:
как ее еще можно защищать от взлома?
На 100% никак, ни одна программа от этого не защищена (тем более на AutoIt'е).
См эту тему (и можно ещё эту), там она измучена до конца(?).
CrazyNNM 21:26 28-11-2008
Цитата:
пробовал exe2au3 причем из разных версий автоита
Смотря из каких, скрипты из 3.2.5.1 ещё можно декомпилировать.
Добавлено:
promt 22:06 28-11-2008
Цитата:
можно по хендлу найти окно и закрыть его?
Хендлу чего, окна? - WinClose($hWnd).
Zwook 22:18 28-11-2008
Цитата:
№1 Мне нужно чтобы скрипт запускал файл, который лежит в той же папке, что и этот скомпелировный срипт. При этом, не указывать директоию! То есть, при перемещении скрипта автоматический изменялась бы директория, в ту где лежит этот скрипт. Как это сделать?
Так:
Код: Run(@ScriptDir & "\SomeFile.exe")
Подскажите, плиз, как возможно послать "^c" процессу запущенному Run, а не активному окошку?
Пример, что делаю:
Код: $pid = Run('ping -t 127.0.0.1', '', @SW_HIDE, $STDIN_CHILD & $STDOUT_CHILD)
Пример, что делаю:
Код: $pid = Run('ping -t 127.0.0.1', '', @SW_HIDE, $STDIN_CHILD & $STDOUT_CHILD)
Spasibych 02:58 29-11-2008
Цитата:
«^c» это и есть сигнал? а что если не один символ ^ посылать, а два:
Код: StdinWrite($pid, "^^c")
Цитата:
чень нужно иметь возможность корректно послать сигнал завершения консольной проге
«^c» это и есть сигнал? а что если не один символ ^ посылать, а два:
Код: StdinWrite($pid, "^^c")
Доброго времени суток.
Ребята, подскажите пожалуйста,
есть ли решение создания нормальных кнопко с иконками:
как с текстом, так и без текста.
Т.е. таких же кнопок как на главной панели в проводнике:
т.е. отображается иконка - наводишь курсор появляется
контур кнопки, и если нажать - будет видна нажатая кнопка?
Это как то возможно?
пока додумался только до стилей: $BS_ICON+$BS_FLAT....
Ребята, подскажите пожалуйста,
есть ли решение создания нормальных кнопко с иконками:
как с текстом, так и без текста.
Т.е. таких же кнопок как на главной панели в проводнике:
т.е. отображается иконка - наводишь курсор появляется
контур кнопки, и если нажать - будет видна нажатая кнопка?
Это как то возможно?
пока додумался только до стилей: $BS_ICON+$BS_FLAT....
sproxy 03:29 29-11-2008
Цитата:
Есть, решении есть несколько. Например создать кнопку из Lable'ов, для отражения контура выделения можно использовать библиотеку GUISetOnHover.
Но есть метод через API, он вроде попроще, но меньше возможностей (хотя...):
Код: #include <GUIConstants.au3>
Global Const $ILC_MASK = 0x0001
Global Const $ILC_COLOR32 = 0x0020
Global Const $BCM_FIRST = 0x1600
Global Const $BCM_SETIMAGELIST = $BCM_FIRST + 0x0002
Global Const $BUTTON_IMAGELIST_ALIGN_LEFT = 0
Global Const $BUTTON_IMAGELIST_ALIGN_RIGHT = 1
Global Const $BUTTON_IMAGELIST_ALIGN_TOP = 2
Global Const $BUTTON_IMAGELIST_ALIGN_BOTTOM = 3
Global Const $BUTTON_IMAGELIST_ALIGN_CENTER = 4 ; Doesn't draw text
$hGUI = GUICreate("Button With Icons + Text")
$btn1 = _GUICtrlCreateButton("Button1", 10, 10, 90, 25, -1, -1, "shell32.dll", 6, $BUTTON_IMAGELIST_ALIGN_LEFT)
$btn2 = _GUICtrlCreateButton("Button2", 10, 50, 90, 25, -1, -1, "shell32.dll", 21, $BUTTON_IMAGELIST_ALIGN_RIGHT)
$btn3 = _GUICtrlCreateButton("Button3", 10, 90, 50, 50, -1, -1, "shell32.dll", 32, $BUTTON_IMAGELIST_ALIGN_TOP)
$btn4 = _GUICtrlCreateButton("Button4", 10, 140, 50, 50, -1, -1, "shell32.dll", 14, $BUTTON_IMAGELIST_ALIGN_BOTTOM)
GUISetState()
While GUIGetMsg() <> $GUI_EVENT_CLOSE
WEnd
Exit
Func _GUICtrlCreateButton($sText,$iLeft,$iTop,$iWidth=-1,$iHeight=-1,$nStyle=-1,$nExStyle=-1,$sIconFile='', $nIconID=0, $nAlign=-1)
Local $nID = GUICtrlCreateButton($sText, $iLeft, $iTop, $iWidth, $iHeight, $nStyle, $nExStyle)
If $sIconFile = '' Then Return $nID
Local $hIL = ImageList_Create(16, 16, BitOr($ILC_MASK, $ILC_COLOR32), 0, 1)
Local $stIcon = DllStructCreate("int")
ExtractIconEx($sIconFile, $nIconID, DllStructGetPtr($stIcon), 0, 1)
ImageList_AddIcon($hIL, DllStructGetData($stIcon, 1))
DestroyIcon(DllStructGetData($stIcon, 1))
Local $stBIL = DllStructCreate("dword;int[4];uint")
DllStructSetData($stBIL, 1, $hIL)
DllStructSetData($stBIL, 2, 1, 1)
DllStructSetData($stBIL, 2, 1, 2)
DllStructSetData($stBIL, 2, 1, 3)
DllStructSetData($stBIL, 2, 1, 4)
DllStructSetData($stBIL, 3, $nAlign)
GUICtrlSendMsg($nID, $BCM_SETIMAGELIST, 0, DllStructGetPtr($stBIL))
Return $nID
EndFunc
Func ImageList_Create($nImageWidth, $nImageHeight, $nFlags, $nInitial, $nGrow)
Local $hImageList = DllCall('comctl32.dll', 'hwnd', 'ImageList_Create', _
'int', $nImageWidth, _
'int', $nImageHeight, _
'int', $nFlags, _
'int', $nInitial, _
'int', $nGrow)
Return $hImageList[0]
EndFunc
Func ImageList_AddIcon($hIml, $hIcon)
Local $nIndex = DllCall('comctl32.dll', 'int', 'ImageList_AddIcon', _
'hwnd', $hIml, _
'hwnd', $hIcon)
Return $nIndex[0]
EndFunc
Func ImageList_Destroy($hIml)
Local $bResult = DllCall('comctl32.dll', 'int', 'ImageList_Destroy', _
'hwnd', $hIml)
Return $bResult[0]
EndFunc
Func ExtractIconEx($sIconFile, $nIconID, $ptrIconLarge, $ptrIconSmall, $nIcons)
Local $nCount = DllCall('shell32.dll', 'int', 'ExtractIconEx', _
'str', $sIconFile, _
'int', $nIconID, _
'ptr', $ptrIconLarge, _
'ptr', $ptrIconSmall, _
'int', $nIcons)
Return $nCount[0]
EndFunc
Func DestroyIcon($hIcon)
Local $bResult = DllCall('user32.dll', 'int', 'DestroyIcon', _
'hwnd', $hIcon)
Return $bResult[0]
EndFunc
Цитата:
есть ли решение создания нормальных кнопко с иконками
Есть, решении есть несколько. Например создать кнопку из Lable'ов, для отражения контура выделения можно использовать библиотеку GUISetOnHover.
Но есть метод через API, он вроде попроще, но меньше возможностей (хотя...):
Код: #include <GUIConstants.au3>
Global Const $ILC_MASK = 0x0001
Global Const $ILC_COLOR32 = 0x0020
Global Const $BCM_FIRST = 0x1600
Global Const $BCM_SETIMAGELIST = $BCM_FIRST + 0x0002
Global Const $BUTTON_IMAGELIST_ALIGN_LEFT = 0
Global Const $BUTTON_IMAGELIST_ALIGN_RIGHT = 1
Global Const $BUTTON_IMAGELIST_ALIGN_TOP = 2
Global Const $BUTTON_IMAGELIST_ALIGN_BOTTOM = 3
Global Const $BUTTON_IMAGELIST_ALIGN_CENTER = 4 ; Doesn't draw text
$hGUI = GUICreate("Button With Icons + Text")
$btn1 = _GUICtrlCreateButton("Button1", 10, 10, 90, 25, -1, -1, "shell32.dll", 6, $BUTTON_IMAGELIST_ALIGN_LEFT)
$btn2 = _GUICtrlCreateButton("Button2", 10, 50, 90, 25, -1, -1, "shell32.dll", 21, $BUTTON_IMAGELIST_ALIGN_RIGHT)
$btn3 = _GUICtrlCreateButton("Button3", 10, 90, 50, 50, -1, -1, "shell32.dll", 32, $BUTTON_IMAGELIST_ALIGN_TOP)
$btn4 = _GUICtrlCreateButton("Button4", 10, 140, 50, 50, -1, -1, "shell32.dll", 14, $BUTTON_IMAGELIST_ALIGN_BOTTOM)
GUISetState()
While GUIGetMsg() <> $GUI_EVENT_CLOSE
WEnd
Exit
Func _GUICtrlCreateButton($sText,$iLeft,$iTop,$iWidth=-1,$iHeight=-1,$nStyle=-1,$nExStyle=-1,$sIconFile='', $nIconID=0, $nAlign=-1)
Local $nID = GUICtrlCreateButton($sText, $iLeft, $iTop, $iWidth, $iHeight, $nStyle, $nExStyle)
If $sIconFile = '' Then Return $nID
Local $hIL = ImageList_Create(16, 16, BitOr($ILC_MASK, $ILC_COLOR32), 0, 1)
Local $stIcon = DllStructCreate("int")
ExtractIconEx($sIconFile, $nIconID, DllStructGetPtr($stIcon), 0, 1)
ImageList_AddIcon($hIL, DllStructGetData($stIcon, 1))
DestroyIcon(DllStructGetData($stIcon, 1))
Local $stBIL = DllStructCreate("dword;int[4];uint")
DllStructSetData($stBIL, 1, $hIL)
DllStructSetData($stBIL, 2, 1, 1)
DllStructSetData($stBIL, 2, 1, 2)
DllStructSetData($stBIL, 2, 1, 3)
DllStructSetData($stBIL, 2, 1, 4)
DllStructSetData($stBIL, 3, $nAlign)
GUICtrlSendMsg($nID, $BCM_SETIMAGELIST, 0, DllStructGetPtr($stBIL))
Return $nID
EndFunc
Func ImageList_Create($nImageWidth, $nImageHeight, $nFlags, $nInitial, $nGrow)
Local $hImageList = DllCall('comctl32.dll', 'hwnd', 'ImageList_Create', _
'int', $nImageWidth, _
'int', $nImageHeight, _
'int', $nFlags, _
'int', $nInitial, _
'int', $nGrow)
Return $hImageList[0]
EndFunc
Func ImageList_AddIcon($hIml, $hIcon)
Local $nIndex = DllCall('comctl32.dll', 'int', 'ImageList_AddIcon', _
'hwnd', $hIml, _
'hwnd', $hIcon)
Return $nIndex[0]
EndFunc
Func ImageList_Destroy($hIml)
Local $bResult = DllCall('comctl32.dll', 'int', 'ImageList_Destroy', _
'hwnd', $hIml)
Return $bResult[0]
EndFunc
Func ExtractIconEx($sIconFile, $nIconID, $ptrIconLarge, $ptrIconSmall, $nIcons)
Local $nCount = DllCall('shell32.dll', 'int', 'ExtractIconEx', _
'str', $sIconFile, _
'int', $nIconID, _
'ptr', $ptrIconLarge, _
'ptr', $ptrIconSmall, _
'int', $nIcons)
Return $nCount[0]
EndFunc
Func DestroyIcon($hIcon)
Local $bResult = DllCall('user32.dll', 'int', 'DestroyIcon', _
'hwnd', $hIcon)
Return $bResult[0]
EndFunc
sproxy
Цитата:
Смотри раздел GuiButton Management в справке.
Цитата:
Это Toolbar button.
Цитата:
есть ли решение создания нормальных кнопко с иконками
Смотри раздел GuiButton Management в справке.
Цитата:
наводишь курсор появляется
контур кнопки
Это Toolbar button.
Цитата:
Так:
Код:Run(@ScriptDir & "\SomeFile.exe")
?
Да так
Цитата:
Через внешний обработчик комманд (cmd.exe) пойдёт?
Пойдет
Цитата:
Что именно не нравится? и для чего нужно подобное?
Хочу создать что-то вроде меню из котоого можно было бы удобно запускать и выключать нужные мне скрипты, я так понимаю если сделать скрипт в котором нескольо GuiCtrlCreateBtn и запустить через него другой(ие) скипты то во первых надо будет везде изменить Global ($) на Local ($)? Во вторых при использовании команды Exit оба скрипта вылетят? Ну и в третьих мне кажется, что ипользование такого метода может вызвать глюки(?) я не уверен.
Цитата:
Не совсем. Не обязательно использовать Dll для нахождения хендлов, тут всё зависит от того где это нужно, и при каких условиях.
Допустим мне нужно найти хендл кнопки программы которая включает/выключает сервисы и делает логи. Скажите каким методом лучше всего искать хендл? Это по сути обычная програма состоящая из окна и кнопок, ничего особенного.
#Edit:
Вот ещё один очень важный вопрос. У меня в скрипте несколько inputbox которые изменяют переменные. Как мне сдеать так, чтобы после первого запуска скрипта и ввода данных в inputbox'ы эти данные сохранялись к примеру в .ini файле и при последующим запуске скрипта брались данные оттуда?
Прикинул, что можно сделать If (@ScriptDir & "\SomeFile.ini") Then Брать оттуда данные. Вот только непонятно как эти данные туда поместить чтобы они читалсь.
Zwook
Цитата:
ControlGetHandle()
Цитата:
Допустим мне нужно найти хендл кнопки программы
ControlGetHandle()
Цитата:
ControlGetHandle()
Ну так вот чтобы применить controlgethandle мне надо знать что искать.. Вот к примеру
Код: Run("notepad.exe")
$handle = ControlGetHandle("[CLASS:Notepad]", "", "Edit1")
Maza_Faka, подскажи пожалуйста, где именно в справке раздел GuiButton Management, не нашел...
"Это Toolbar button" - ты имеешь ввиду определение такой кнопки?
или же такую панель можно создать?
Не скачивается:
AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (книга в формате pdf)
может кто нибуть выложит где нить?
ViSiToR, Maza_Faka, спасибо.
"Это Toolbar button" - ты имеешь ввиду определение такой кнопки?
или же такую панель можно создать?
Не скачивается:
AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (книга в формате pdf)
может кто нибуть выложит где нить?
ViSiToR, Maza_Faka, спасибо.
Zwook
Цитата:
Например, программой AutoIt Window Info из дистрибутива AutoIt.
Цитата:
Как они нашли Edit1 ?
Например, программой AutoIt Window Info из дистрибутива AutoIt.
Цитата:
Например, программой AutoIt Window Info из дистрибутива AutoIt.
Ммм не понимаю как она работает, на одну и ту же кнопку пишет 3 разных хендла причем О_о есть к ней хелп?
ViSiToR
Попробовал. Пока никак не выходит.
В хэлпе предлагается закрывать поток
Код: StdinWrite($pid)
Попробовал. Пока никак не выходит.
В хэлпе предлагается закрывать поток
Код: StdinWrite($pid)
Zwook 12:00 29-11-2008
Цитата:
Это уже как в скрипте задумано, я то не знаю что там творится
Цитата:
Почему? Запущеный скрипт это другой процесс
Цитата:
Смотря что конкретно делать, и главное, как это делать
P.S
Метод «Проб и ошибок» во многом мне помог дойти до истины
Цитата:
Вот пример сохранения данных текущего сеанса GUI:
Код: #include <GuiConstants.au3>
#include <WindowsConstants.au3>
Global $ConfigFile = StringTrimRight(@ScriptFullPath, 3) & "ini"
$GUI = GUICreate("GUI Restore Position", 300, 200, -1, -1, BitOr($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))
_GUIRestorePositions($GUI, $ConfigFile)
GUISetState(@SW_SHOW, $GUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_GUISavePositions($GUI, $ConfigFile)
Exit
EndSwitch
WEnd
Func _GUISavePositions($hGUI, $sConfigFile, $sSectName="Window Positions")
Local $aGUI_Pos = WinGetPos($hGUI)
If @error Then Return 0
IniWrite($sConfigFile, $sSectName, "Left", $aGUI_Pos[0])
IniWrite($sConfigFile, $sSectName, "Top", $aGUI_Pos[1])
IniWrite($sConfigFile, $sSectName, "Width", $aGUI_Pos[2])
IniWrite($sConfigFile, $sSectName, "Height", $aGUI_Pos[3])
Return 1
EndFunc
Func _GUIRestorePositions($hGUI, $sConfigFile, $sSectName="Window Positions", $iDefWidth=300, $iDefHeight=200)
Local $iGUI_Left = IniRead($sConfigFile, $sSectName, "Left", -1)
Local $iGUI_Top = IniRead($sConfigFile, $sSectName, "Top", -1)
Local $iGUI_Width = IniRead($sConfigFile, $sSectName, "Width", $iDefWidth)
Local $iGUI_Height = IniRead($sConfigFile, $sSectName, "Height", $iDefHeight)
If $iGUI_Left = -1 Then $iGUI_Left = (@DesktopWidth / 2) - ($iGUI_Width / 2)
If $iGUI_Top = -1 Then $iGUI_Top = (@DesktopHeight / 2) - ($iGUI_Height / 2)
Return WinMove($hGUI, "", $iGUI_Left, $iGUI_Top, $iGUI_Width, $iGUI_Height)
EndFunc
Цитата:
если сделать скрипт в котором нескольо GuiCtrlCreateBtn и запустить через него другой(ие) скипты то во первых надо будет везде изменить Global ($) на Local ($)
Это уже как в скрипте задумано, я то не знаю что там творится
Цитата:
при использовании команды Exit оба скрипта вылетят?
Почему? Запущеный скрипт это другой процесс
Цитата:
мне кажется, что ипользование такого метода может вызвать глюки(?) я не уверен
Смотря что конкретно делать, и главное, как это делать
P.S
Метод «Проб и ошибок» во многом мне помог дойти до истины
Цитата:
Как мне сдеать так, чтобы после первого запуска скрипта и ввода данных в inputbox'ы эти данные сохранялись к примеру в .ini файле и при последующим запуске скрипта брались данные оттуда?
Вот пример сохранения данных текущего сеанса GUI:
Код: #include <GuiConstants.au3>
#include <WindowsConstants.au3>
Global $ConfigFile = StringTrimRight(@ScriptFullPath, 3) & "ini"
$GUI = GUICreate("GUI Restore Position", 300, 200, -1, -1, BitOr($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))
_GUIRestorePositions($GUI, $ConfigFile)
GUISetState(@SW_SHOW, $GUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_GUISavePositions($GUI, $ConfigFile)
Exit
EndSwitch
WEnd
Func _GUISavePositions($hGUI, $sConfigFile, $sSectName="Window Positions")
Local $aGUI_Pos = WinGetPos($hGUI)
If @error Then Return 0
IniWrite($sConfigFile, $sSectName, "Left", $aGUI_Pos[0])
IniWrite($sConfigFile, $sSectName, "Top", $aGUI_Pos[1])
IniWrite($sConfigFile, $sSectName, "Width", $aGUI_Pos[2])
IniWrite($sConfigFile, $sSectName, "Height", $aGUI_Pos[3])
Return 1
EndFunc
Func _GUIRestorePositions($hGUI, $sConfigFile, $sSectName="Window Positions", $iDefWidth=300, $iDefHeight=200)
Local $iGUI_Left = IniRead($sConfigFile, $sSectName, "Left", -1)
Local $iGUI_Top = IniRead($sConfigFile, $sSectName, "Top", -1)
Local $iGUI_Width = IniRead($sConfigFile, $sSectName, "Width", $iDefWidth)
Local $iGUI_Height = IniRead($sConfigFile, $sSectName, "Height", $iDefHeight)
If $iGUI_Left = -1 Then $iGUI_Left = (@DesktopWidth / 2) - ($iGUI_Width / 2)
If $iGUI_Top = -1 Then $iGUI_Top = (@DesktopHeight / 2) - ($iGUI_Height / 2)
Return WinMove($hGUI, "", $iGUI_Left, $iGUI_Top, $iGUI_Width, $iGUI_Height)
EndFunc
Zwook
Цитата:
sproxy
Цитата:
Online документация Ищи по названию _GuiCtrlButton_
Цитата:
Перезалил.
Цитата:
Как они нашли Edit1 ?
sproxy
Цитата:
где именно в справке раздел GuiButton Management
Online документация Ищи по названию _GuiCtrlButton_
Цитата:
Не скачивается:
AutoIt v3: Your Quick Guide (652 КБ)
Перезалил.
Добрый вечер господа!
Подскажите пожалуйста,в шапке есть скрипт,который выводит список процессов с дополнительной инфой. Не могу разобраться как там в примере приводится получение информации об одном процессе, по какому параметру ?
Подскажите пожалуйста,в шапке есть скрипт,который выводит список процессов с дополнительной инфой. Не могу разобраться как там в примере приводится получение информации об одном процессе, по какому параметру ?
Nikkorot 17:44 29-11-2008
Цитата:
В чём состоит задача (проблема)? Там просто получается список всех процессов, и их информация (через API-вызовы).
Цитата:
как там в примере приводится получение информации об одном процессе, по какому параметру ?
В чём состоит задача (проблема)? Там просто получается список всех процессов, и их информация (через API-вызовы).
ViSiToR
Там вторым вызовом MsgBox в заголовке приводится пример вызова выборочного процесса, по каким параметрам это делается ?
Там вторым вызовом MsgBox в заголовке приводится пример вызова выборочного процесса, по каким параметрам это делается ?
Nikkorot 08:16 30-11-2008
Цитата:
По имени ресурса файла. Т.е строка заложенная в exe'шнике, к примеру «Производитель» или «Описание». В данном случае возвращаются все процессы скомпилированных скриптов AutoIt'а, т.к в ресурсах (по умолчанию) они имеют метку «CompiledScript».
Цитата:
в заголовке приводится пример вызова выборочного процесса, по каким параметрам это делается ?
По имени ресурса файла. Т.е строка заложенная в exe'шнике, к примеру «Производитель» или «Описание». В данном случае возвращаются все процессы скомпилированных скриптов AutoIt'а, т.к в ресурсах (по умолчанию) они имеют метку «CompiledScript».
А как это можно посмотреть ? Хотелось бы сделать проверку наличия определенного запущенного процесса по имени, и пути, откуда он запущен. В принципе можно это сделать приведенной сдесь функцией по $Pid, но хотелось бы отсдеживать ещё и путь, откуда запущен процесс.
Nikkorot 12:48 30-11-2008
Цитата:
Код: $Path = _ProcessGetPath("AutoIt3.exe")
ConsoleWrite($Path)
;===============================================================================
;
; Function Name: _ProcessGetPath()
; Description: Get the executable path of certain process.
;
; Parameter(s): $vProcess - PID or name of a process.
;
; Requirement(s): AutoIt v3.2.8.1 or higher.
; Kernel32.dll (included with Windows)
; Psapi.dll (included with most Windows versions)
;
; Return Value(s): On Success - Returns full path to the executed process.
; On Failure - Returns -1 and sets @Error to:
; 1 - Given process not exists.
; 2 - Error to call Kernel32.dll.
; 3 - Error to open Psapi.dll.
; 4 - Unable to locate path of executed process,
; (or can be other error related to DllCall).
;
; Author(s): G.Sandler (a.k.a CreatoR) - CreatoR's Lab (http://creator-lab.ucoz.ru)
;
;===============================================================================
Func _ProcessGetPath($vProcess)
Local $iPID = ProcessExists($vProcess)
If Not $iPID Then Return SetError(1, 0, -1)
Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID)
If Not IsArray($aProc) Or Not $aProc[0] Then Return SetError(2, 0, -1)
Local $vStruct = DllStructCreate('int[1024]')
Local $hPsapi_Dll = DllOpen('Psapi.dll')
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(3, 0, '')
DllCall($hPsapi_Dll, 'int', 'EnumProcessModules', _
'hwnd', $aProc[0], _
'ptr', DllStructGetPtr($vStruct), _
'int', DllStructGetSize($vStruct), _
'int_ptr', 0)
Local $aRet = DllCall($hPsapi_Dll, 'int', 'GetModuleFileNameEx', _
'hwnd', $aProc[0], _
'int', DllStructGetData($vStruct, 1), _
'str', '', _
'int', 2048)
DllClose($hPsapi_Dll)
If Not IsArray($aRet) Or StringLen($aRet[3]) = 0 Then Return SetError(4, 0, '')
Return $aRet[3]
EndFunc
Цитата:
Хотелось бы сделать проверку наличия определенного запущенного процесса по имени, и пути, откуда он запущен
Код: $Path = _ProcessGetPath("AutoIt3.exe")
ConsoleWrite($Path)
;===============================================================================
;
; Function Name: _ProcessGetPath()
; Description: Get the executable path of certain process.
;
; Parameter(s): $vProcess - PID or name of a process.
;
; Requirement(s): AutoIt v3.2.8.1 or higher.
; Kernel32.dll (included with Windows)
; Psapi.dll (included with most Windows versions)
;
; Return Value(s): On Success - Returns full path to the executed process.
; On Failure - Returns -1 and sets @Error to:
; 1 - Given process not exists.
; 2 - Error to call Kernel32.dll.
; 3 - Error to open Psapi.dll.
; 4 - Unable to locate path of executed process,
; (or can be other error related to DllCall).
;
; Author(s): G.Sandler (a.k.a CreatoR) - CreatoR's Lab (http://creator-lab.ucoz.ru)
;
;===============================================================================
Func _ProcessGetPath($vProcess)
Local $iPID = ProcessExists($vProcess)
If Not $iPID Then Return SetError(1, 0, -1)
Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID)
If Not IsArray($aProc) Or Not $aProc[0] Then Return SetError(2, 0, -1)
Local $vStruct = DllStructCreate('int[1024]')
Local $hPsapi_Dll = DllOpen('Psapi.dll')
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(3, 0, '')
DllCall($hPsapi_Dll, 'int', 'EnumProcessModules', _
'hwnd', $aProc[0], _
'ptr', DllStructGetPtr($vStruct), _
'int', DllStructGetSize($vStruct), _
'int_ptr', 0)
Local $aRet = DllCall($hPsapi_Dll, 'int', 'GetModuleFileNameEx', _
'hwnd', $aProc[0], _
'int', DllStructGetData($vStruct, 1), _
'str', '', _
'int', 2048)
DllClose($hPsapi_Dll)
If Not IsArray($aRet) Or StringLen($aRet[3]) = 0 Then Return SetError(4, 0, '')
Return $aRet[3]
EndFunc
Хм., спасибо большое, пройду пробовать.
А теперь вопрос на который я реально нигде не смог найти ответа...
Можно ли сделать так, чтобы PixelSearch работал по заданой области, но при этом, если был ранее найден пиксель в этой области, то вокруг этого пикселя (к примеру на растоянии 25х25 от ранее найденного пикселя) не выполнялся поиск пикселя?
Это может быть как в том же самом цикле и можно это даже сделать в отдельной функции, вот только непонятно как это сделать.
Можно ли сделать так, чтобы PixelSearch работал по заданой области, но при этом, если был ранее найден пиксель в этой области, то вокруг этого пикселя (к примеру на растоянии 25х25 от ранее найденного пикселя) не выполнялся поиск пикселя?
Это может быть как в том же самом цикле и можно это даже сделать в отдельной функции, вот только непонятно как это сделать.
для класса TPDocumentDbGrid можно ли запросить количество записей?
Доброго времени....
Ребята, а не знаите ли как переименовать название ключа?
к примеру был HKEY_LOCAL_MACHINE\SOFTWARE\my_key
переименовать HKEY_LOCAL_MACHINE\SOFTWARE\my_key2
а то, имхо, схема: создать нужный - перекопировать все из старого - удалить старый,
уж очень не оригенальная.
Ребята, а не знаите ли как переименовать название ключа?
к примеру был HKEY_LOCAL_MACHINE\SOFTWARE\my_key
переименовать HKEY_LOCAL_MACHINE\SOFTWARE\my_key2
а то, имхо, схема: создать нужный - перекопировать все из старого - удалить старый,
уж очень не оригенальная.
Доброго времени суток.
Мне бы хотелось сделать скрипт, который нажимал бы комбинацию кнопок по мере их появления. Почти разобрался, застрял на нажатии кнопок ). Т.е. варианты ответов на вопрос Да Нет Отмена, везде подчеркнута первая буква, т.е. можно нажать ALT+Буква, симулирую комбинацию send ({"!Н"}) и ничего...
Помогите разобраться, плиз.
Мне бы хотелось сделать скрипт, который нажимал бы комбинацию кнопок по мере их появления. Почти разобрался, застрял на нажатии кнопок ). Т.е. варианты ответов на вопрос Да Нет Отмена, везде подчеркнута первая буква, т.е. можно нажать ALT+Буква, симулирую комбинацию send ({"!Н"}) и ничего...
Помогите разобраться, плиз.
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
Предыдущая тема: Quintura Search
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.