Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: ViSiToR
Дата сообщения: 14.11.2008 14:35
Tipulatoid 12:29 14-11-2008
Цитата:
Если же беспокоит, что цикл  While $Paused ... WEnd слишком грузит процессор, то добавь внутрь его Sleep (50)

А тебя не беспокоит? Это портит (физический) процессор. В примере где есть подобный цикл, лучше сразу сам ставь паузу, чтобы дать другим пример как надо делать
Автор: Inquisition
Дата сообщения: 14.11.2008 17:27

Код:
WinActivate("Тра ляляля") ;Activate window and wait till it's opened.
WinWaitActive("Тра ляляля")
Opt("MouseCoordMode", 0) ;1=absolute, 0=relative, 2=client
Opt("PixelCoordMode", 0) ;1=absolute, 0=relative, 2=client
Dim $Runner ;Declare variable
Dim $array[5] = ["","414,223","471,233","528,220","470,204"] ;Mouse positions for moving to random map
HotKeySet("{ESC}", "Terminate") ;On/Off
HotKeySet("{F9}", "ShowMe")
While 1 ;If F9 is clicked then enitiate Func Start()
Sleep(20)
If $Runner Then Start()
WEnd
Func ShowMe() ;Look above
$Runner = Not $Runner
EndFunc ;==>ShowMe
Func Terminate() ;If Esc is clicked then stop script
Exit 0
EndFunc


Func CombatCheck()
    sleep(3000)
    $CombatCheck = PixelSearch(352, 365, 353, 366, 0x7AB800, 1)
    If IsArray($CombatCheck) Then
    MouseClick('Left', 381, 426)
    sleep(1000)
    mouseclick("left", 511, 455)
    sleep(300)
    mouseclick("left", 511, 441)
    sleep(300)
    mouseclick("left", 511, 408)
    sleep(10000)
    start()
    
    

Func Start() ;The main bot
$coord = PixelSearch(129, 261, 858, 490, 0xfa6541) ;Look for monster
If IsArray($coord) Then
MouseClick('Left', $coord[0], $coord[1] - 1) ;If monster found, click on its coords
EndIf
    If Not IsArray($coord) Then ;If monster not found, move to random map
$random = Random(1, 4, 1)
$Split = StringSplit($array[$random], ",")
MouseClick("Left", $Split[1], $Split[2])
Start() ;Restart the script and look for monster
EndIf



mouseclick("left", 289, 230) ;START combat
sleep(1000)
$FightCheck = PixelSearch(309, 250, 310, 251, 0x0054e3, 2) ;If combat with that monster already started, leave and restart script
If IsArray($FightCheck) Then
MouseClick('Left', 525, 520)
Start()
EndIf
CombatCheck()


Do ;Combat script | Search for attack button, click it, move on to next attack
    sleep(100)
    $Bottom1 = PixelSearch(352, 456, 353, 457, 0x68181b, 3)
until IsArray($Bottom1)
If IsArray($Bottom1) Then
MouseClick('Left', $Bottom1[0], $Bottom1[1] - 1)
EndIf
CombatCheck()

Do
    sleep(100)
    $Upper1 = PixelSearch(328, 377, 329, 378, 0x68181b, 12)
until isArray($Upper1)
If IsArray($Upper1) Then
MouseClick('Left', $Upper1[0], $Upper1[1] - 1)
EndIf
CombatCheck()


    
Do
    sleep(100)
    $Upper11 = PixelSearch(328, 377, 329, 378, 0x68181b, 12)
until IsArray($Upper11)
If IsArray($Upper11) Then
MouseClick('Left', $Upper11[0], $Upper11[1] - 1)
EndIf
CombatCheck()

    
Do
    sleep(100)
    $Middle1 = PixelSearch(357, 429, 358, 430, 0x731111, 15)
until IsArray($Middle1)
If IsArray($Middle1) Then
MouseClick('Left', $Middle1[0], $Middle1[1] - 1)
EndIf
CombatCheck()

    
Do
    sleep(100)
    $Bottom2 = PixelSearch(352, 456, 353, 457, 0x68181b, 3)
until IsArray($Bottom2)
If IsArray($Bottom2) Then
MouseClick('Left', $Bottom2[0], $Bottom2[1] - 1)
EndIf
CombatCheck()

    
Do
    sleep(100)
    $Upper2 = PixelSearch(328, 377, 329, 378, 0x68181b, 12)
until IsArray($Upper2)
If IsArray($Upper2) Then
MouseClick('Left', $Upper2[0], $Upper2[1] - 1)
EndIf
CombatCheck()

    
Do
    sleep(100)
    $Upper22 = PixelSearch(328, 377, 329, 378, 0x68181b, 12)
until IsArray($Upper22)
If IsArray($Upper22) Then
MouseClick('Left', $Upper22[0], $Upper22[1] - 1)
EndIf
CombatCheck()

    
Do
    sleep(100)
     $Middle2 = PixelSearch(357, 429, 358, 430, 0x731111, 15)
until IsArray($Middle2)
If IsArray($Middle2) Then
MouseClick('Left', $Middle2[0], $Middle2[1] - 15)
EndIf
CombatCheck()
    
    
Do
    sleep(100)
    $Middle3 = PixelSearch(357, 429, 358, 430, 0x731111, 15)
until IsArray($Middle3)
If IsArray($Middle3) Then
MouseClick('Left', $Middle3[0], $Middle3[1] - 1)
    EndIf
CombatCheck()

    
    Do
    sleep(100)
    $Middle4 = PixelSearch(357, 429, 358, 430, 0x731111, 15)
until IsArray($Middle4)
If IsArray($Middle4) Then
MouseClick('Left', $Middle4[0], $Middle4[1] - 1)
EndIf
CombatCheck()

    
    Do
    sleep(100)
    $Middle5 = PixelSearch(357, 429, 358, 430, 0x731111, 15)
until IsArray($Middle5)
If IsArray($Middle5) Then
MouseClick('Left', $Middle5[0], $Middle5[1] - 1)
EndIf
CombatCheck()    
    
    
EndFunc ;Repeat
Автор: ViSiToR
Дата сообщения: 14.11.2008 19:13
Inquisition 18:27 14-11-2008
Цитата:
Приведенный выше скрипт полностью работает за исключением функции CombatCheck()

Поскольку вызов этой функции происходит довольно часто, можно сказать что скрипт вовсе не работает, тем более что проверка синтаксиса выдаёт кучу ошибок.
Вопросы по работе скрипта следовало бы задавать тому, кто его писал (или собирал по кускам ).
Автор: Inquisition
Дата сообщения: 14.11.2008 20:10
Писал этот скрипт я полностью сам, можете даже посмотреть на форуме autoitscript я под тем же ником там (Просто щас глюк и выдает ошибку на форуме). Все эти ошибки синтакса реально не ошибки, для autoit не важно пишешь ты 'left' или "LEFT" или "lEfT' проверял я сам. Как я уже говорил если эту функцию убрать и вместо CombatCheck() везде писать $CombatCheck1,2,3, и.т.д. тоже не работает.

З.Ы. скрипт полностью работает, т.е. он выполняет все действия от начала до конца кроме CombatCheck()

З.З.Ы. F:\Autoit Scripts\ПАМИДОР\АГУРЕЦ.au3 - 0 error(s), 0 warning(s)

З.З.З.Ы. В скрипте написанным мною выше нету EndFunc и EndIf в функции, это потому-что у меня около 10 вариаций этого скрипта, в каждой из которых функция CombatCheck() не работает. Вот я собрал из этих 10 самую стабильную чтобы выложить на форум и забыл добавить EndFunc и EndIf, как бы то небыло это не влияет на скрипт, всеравно не работает CombatCheck()
Автор: Mister_Che
Дата сообщения: 14.11.2008 20:26
Tipulatoid
Объясни, пожалуйста, что написал этот человек?

Цитата:
А тебя не беспокоит? [Image] Это портит (физический) процессор. В примере где есть подобный цикл, лучше сразу сам ставь паузу, чтобы дать другим пример как надо делать


Твой код заработал, спасибо, большое.

Цитата:
Ты еще зачем-то из моего примера убрал из функции TogglePause() цикл While, который паузу и делает.

Там была такая строка: "ConsoleWrite", а ведь если кем-то было записано, то оно когда-нибудь будет и прочитано, а мне излишнее внимание не нужно.
Автор: ViSiToR
Дата сообщения: 14.11.2008 20:39
Inquisition 21:10 14-11-2008
Цитата:
Все эти ошибки синтакса реально не ошибки, для autoit не важно пишешь ты 'left' или "LEFT" или "lEfT' проверял я сам.

А теперь возьми скопируй код со своего прошлого сообщения, и запусти его как скрипт, а точнее сделай проверку синтаксиса - Видимо выложенный код не отражает оригинальный код который работает у тебя.
Попробуй перевыложить его в архиве.


Цитата:
как бы то небыло это не влияет на скрипт, всеравно не работает CombatCheck()

Но это влияет на то, захочет ли народ помагать тебе, и пытаться включить экстрасенсорные способности дабы узнать, что-же такого не хватает в скрипте. Я лично не могу (да и не хочу) найти ошибку скриптового характера, когда есть ещё и базовые ошибки синтаксиса.

Mister_Che 21:26 14-11-2008
Цитата:
что написал этот человек?

Он ещё тут, вроде ещё не умер, можно и у него спросить
Я написал про то, что если уже выкладывать скрипт с примером, то делать его максимально “дружелюбным” к пользователю (другими словами, нужно всегда ставить Sleep(10) в “пустой” цикл).
Автор: Inquisition
Дата сообщения: 14.11.2008 20:54
Извиняюсь, я просто очень очень много время бился над этой функцией без результата. Уже мозг не работает так как надо.


Код:
WinActivate("Легенда: Наследие Драконов") ;Activate window and wait till it's opened.
WinWaitActive("Легенда: Наследие Драконов")
Opt("MouseCoordMode", 0) ;1=absolute, 0=relative, 2=client
Opt("PixelCoordMode", 0) ;1=absolute, 0=relative, 2=client
Dim $Runner ;Declare variable
Dim $Array[5] = ["","414,223","471,233","528,220","470,204"] ;Mouse positions for moving to random map
HotKeySet("{ESC}", "Terminate") ;On/Off
HotKeySet("{F9}", "ShowMe")
While 1 ;If F9 is clicked then enitiate Func Start()
Sleep(20)
If $Runner Then Start()
WEnd
Func ShowMe() ;Look above
$Runner = Not $Runner
EndFunc ;==>ShowMe
Func Terminate() ;If Esc is clicked then stop script
Exit 0
EndFunc


Func CombatCheck()
    Sleep(3000)
    $CombatCheck = PixelSearch(352, 365, 353, 366, 0x7AB800, 1)
    If IsArray($CombatCheck) Then
    MouseClick("Left", 381, 426)
    Sleep(1000)
    mouseclick("left", 511, 455)
    Sleep(300)
    mouseclick("left", 511, 441)
    Sleep(300)
    mouseclick("left", 511, 408)
    Sleep(10000)
    Start()
    EndIf
EndFunc
    
    

Func Start() ;The main bot
$Coord = PixelSearch(129, 261, 858, 490, 0xfa6541) ;Look for monster
If IsArray($Coord) Then
MouseClick("Left", $Coord[0], $Coord[1] - 1) ;If monster found, click on its coords
EndIf
    If Not IsArray($Coord) Then ;If monster not found, move to random map
$Random = Random(1, 4, 1)
$Split = StringSplit($Array[$Random], ",")
MouseClick("Left", $Split[1], $Split[2])
Start() ;Restart the script and look for monster
EndIf



MouseClick("Left", 289, 230) ;START combat
Sleep(1000)
$FightCheck = PixelSearch(309, 250, 310, 251, 0x0054e3, 2) ;If combat with that monster already started, leave and restart script
If IsArray($FightCheck) Then
MouseClick("Left", 525, 520)
Start()
EndIf
CombatCheck()


Do ;Combat script | Search for attack button, click it, move on to next attack
    Sleep(100)
    $Bottom1 = PixelSearch(352, 456, 353, 457, 0x68181b, 3)
Until IsArray($Bottom1)
If IsArray($Bottom1) Then
MouseClick("Left", $Bottom1[0], $Bottom1[1] - 1)
EndIf
CombatCheck()

Do
    Sleep(100)
    $Upper1 = PixelSearch(328, 377, 329, 378, 0x68181b, 12)
Until IsArray($Upper1)
If IsArray($Upper1) Then
MouseClick("Left", $Upper1[0], $Upper1[1] - 1)
EndIf
CombatCheck()


    
Do
    Sleep(100)
    $Upper11 = PixelSearch(328, 377, 329, 378, 0x68181b, 12)
Until IsArray($Upper11)
If IsArray($Upper11) Then
MouseClick("Left", $Upper11[0], $Upper11[1] - 1)
EndIf
CombatCheck()

    
Do
    Sleep(100)
    $Middle1 = PixelSearch(357, 429, 358, 430, 0x731111, 15)
Until IsArray($Middle1)
If IsArray($Middle1) Then
MouseClick("Left", $Middle1[0], $Middle1[1] - 1)
EndIf
CombatCheck()
EndFunc
Автор: Mister_Che
Дата сообщения: 14.11.2008 21:19
ViSiToR, а вот в этом коде

Цитата:
Global $Paused
HotKeySet("{ESC}", "Terminate")
HotKeySet("{PAUSE}", "TogglePause")

While 1
ConsoleWrite ("Скрипт работает" & @CRLF)
; не имеющий значения код с кликами и слипами
WEnd

Func Terminate()
Exit 0
EndFunc

Func TogglePause()
$Paused = NOT $Paused
ConsoleWrite ("Скрипт приостановлен" & @CRLF)
While $Paused
Sleep (50)
WEnd
EndFunc

пустой цикл выполняется только во время паузы? А что будет, если поставить в этом пустом цикле Sleep на минуту, скажем?

И можно ли убрать строки с ConsoleWrite без потери функциональности?
Автор: Inquisition
Дата сообщения: 14.11.2008 21:29
Mister_Che

Можешь использовать функции ShowMe и Terminate из моего скрипта, предварительно заменив Exit на Паузу. Тогда при нажатии esc скрипт будет в паузе а при нажатии f9 будет работать.
Автор: ViSiToR
Дата сообщения: 14.11.2008 22:10
Inquisition 21:54 14-11-2008
Цитата:
что же тут не так с функцией CombatCheck()

Проблема не в ней, проблема в том что функция Start() при разных условиях запускает саму себя (получается тяжёлая рекурсия), и видимо никак не дойдёт то вызова CombatCheck(). Так скрипт писать не практично, нужен другой подход (повесить главные проверки в тело цикла, и запускать нужные функции отдельно).

Mister_Che 22:19 14-11-2008
Цитата:
пустой цикл выполняется только во время паузы?

Тут как раз наоборот, в самом начале цикл без паузы, в момент паузы скрипт войдёт в цикл который в функции TogglePause(), а если в первом цикле используется код с паузами, тогда всё нормально


Цитата:
можно ли убрать строки с ConsoleWrite без потери функциональности?

Конечно, они там только для вывода данных в консоль (обычно используется в целях отладки).
Автор: Z4masko
Дата сообщения: 14.11.2008 22:16
Подскажите, а спомобна ли эта программа атоматизировать действия во Flash роликах на Web сайтах ?
Автор: Inquisition
Дата сообщения: 14.11.2008 22:22
Ну вобщето скрипт идет до конца, то есть выполняет все вплоть до $Middle5. Ну уж поверю вам наслово, вопрос в том как мне это сделать? то есть как мне повесить главные проверки в тело цикла, и запускать нужные функции отдельно? Вы имеете ввиду убрать Start() ? Но тогда суть скрипта исчезнет... то есть весь принцип скрипта начинать с начала если произошло некое действие описаное функцией CombatCheck() (к примеру)
Автор: ViSiToR
Дата сообщения: 14.11.2008 23:02
Z4masko 23:16 14-11-2008
Цитата:
атоматизировать действия во Flash роликах на Web сайтах  ?

Скорее всего что нет.

Inquisition 23:22 14-11-2008
Цитата:
скрипт идет до конца, то есть выполняет все вплоть до $Middle5

Тогда как определяется что функция CombatCheck() не запускается? возможно ради проверки стоит добавить в её начало MsgBox:


Код: Func CombatCheck()
MsgBox(0, "", "Ok, function started")
.....
EndFunc
Автор: Inquisition
Дата сообщения: 14.11.2008 23:06
Как я уже писал в предыдущем посте MsgBox() уже пробовал, безуспешно. Сейчас очень поздно и я лягу спать, как только проснусь просмотрю ваш скрипт.
Автор: Tipulatoid
Дата сообщения: 15.11.2008 00:34
Mister_Che

Цитата:
Объясни, пожалуйста, что написал этот человек?

Visitor мне указал, что в пустой цикл While $Paused ... Wend обязательно должна быть быть вставлена команда Sleep, чтобы скрипт, войдя в него во время паузы, не бегал слишком быстро по нему, разогревая впустую процессор. Я эту вещь сделал опциональной - сказал, что можешь Sleep включать, можешь и нет. А Visitor сказал, что Sleep обязателен. Ну, я и поправил код.

Цитата:
Там была такая строка: "ConsoleWrite", а ведь если кем-то было записано, то оно когда-нибудь будет и прочитано, а мне излишнее внимание не нужно.

Команды ConsoleWrite вставлены только в демонстрационных целях, иначе как в приведеном примере сообразишь, находится ли скрипт в главном цикле While 1 ... Wend или в цикле паузы While $Paused ... Wend? Можешь спокойно их убрать.

Цитата:
А что будет, если поставить в этом пустом цикле Sleep на минуту, скажем?

Это значит, что при нажитии клавишы Pause скрипт войдет в цикл While $Paused ... Wend и заснет в нем на минуту. Т.е. если ты повторно нажмешь Pause тебе придется ждать до целой минуты пока скрипт проснется и выйдет из паузы. Сейчас стоит Sleep(50) - т.е. скрипт в пустом цикле спит только 50 мсек. , т.е. для человека такая задержка выхода из паузы малозаметна. Можно и уменьшить до Sleep(10)

Автор: Inquisition
Дата сообщения: 15.11.2008 15:23
Форум опять заработал! Ура!

Все по порядку.

№1 Я запустил ваш скрипт, он работает (MsgBox() вызывается в нужный момент времени)
№2 Я убрал строку MsgBox() и запустил скрипт, не работает (Функция не вызывается, скрипт доходит до конца)
№3 Я запустил функцию отдельно от скрипта (В новом файле)

Код: Func CombatCheck()

Sleep(3000)

$CombatCheck = PixelSearch(352, 365, 353, 366, 0x7AB800, 1)

If IsArray($CombatCheck) Then
MouseClick("Left", 381, 426)
Sleep(1000)
MouseClick("left", 511, 455)
Sleep(300)
MouseClick("left", 511, 441)
Sleep(300)
MouseClick("left", 511, 408)
Sleep(10000)

;Main_Proc() ;Not needed, the loop will call the function
EndIf
EndFunc
Автор: ViSiToR
Дата сообщения: 15.11.2008 15:43
Inquisition 16:23 15-11-2008
Цитата:
Я убрал строку MsgBox() и запустил скрипт, не работает (Функция не вызывается, скрипт доходит до конца)  

Функция вызывается, просто видимо то что в ней, не происходит так как ожидается. MsgBox может на это влияет, т.к он задерживает скрипт пока его не закрыть.

P.S
В подобных скриптах есть много факторов влияющих на ход действии, поэтому нужно проверять всё на деле, чего я естественно, сделать немогу .
Автор: Inquisition
Дата сообщения: 15.11.2008 16:24
Извиняюсь за дерзость, возможно вы сможете скачать ту самую игру для которой я этот бот делаю? В целях проверки скрипты разумеется! Клиент весит всего 2.5 мегабайта (если скачивать без музыкы и дополнительных изображений), что вполне демократично.


#Edit: Появилась идея нахрен убрать эту функцию и добавить, что-то вроде EndIf (Попыток PixelSearch болье 50) Но как это сделать не понятно. Если через $i=i+1 то глобальная переменная $i после первого раза изменится и потом всегда будет >50.
Автор: timsky
Дата сообщения: 16.11.2008 06:41
Судя по этому топику http://www.autoitscript.com/forum/index.php?showtopic=55546 для того чтобы работали почти все ф-и _IE* нужно чтобы был запущен шелл (explorer.exe) для того юзера.

Я пробовал это:

Цитата:
$start = RunAs('user', @ComputerName, 'password', 1, @WindowsDir & '\explorer.exe', @UserProfileDir)


с разными параметрами рабочих директорий - без толку. Explorer.exe появляется в процессах на мгновение и бесследно исчезает.

Как запустить шелл другого юзера? В основном, мне нужно чтобы отрабатывали эти функции: _IEBodyReadText() и _IEQuit()
Автор: Maza_Faka
Дата сообщения: 16.11.2008 08:06
timsky

Цитата:
Explorer.exe появляется в процессах на мгновение и бесследно исчезает

А если убить текущий процесс Explorer.exe перед запуском нового?
Автор: gal7
Дата сообщения: 16.11.2008 13:12
У меня есть вопрос-можно ли как-нибудь БЫСТРО выходить из больших функций например при ошибках? Раньше, насколько я понял был goto, но потом его убрали. Конечно, можно постоянно проверять на ошибки практически после каждой строки, но такое решение в больших функциях не очень приятно делать... Смотрел установку обработчика событий ошибок, но и это не способно дать быстрый выход из функций, где например произошла такая ошибка. В идеале для моих целей лучше всего был бы произвольный переход на любую указанную строку сценария, но судя по-всему таким и не пахнет. Других решений не существует?
Автор: Maza_Faka
Дата сообщения: 16.11.2008 13:44
gal7

Цитата:
Конечно, можно постоянно проверять на ошибки практически после каждой строки

Практически, так и делается, а для выхода из функции используется Return
Автор: gal7
Дата сообщения: 16.11.2008 13:50

Цитата:
Практически, так и делается, а для выхода из функции используется Return

Да, это я знаю. Я имел ввиду, что если например постоянно проверять на ошибки каким-либо способом(например, обработчик ошибок или вызов AdlibEnable), то Return вызовет выход из этой функции обработчика, но не из функции, где произошла ошибка...
Автор: timsky
Дата сообщения: 16.11.2008 14:06

Цитата:
А если убить текущий процесс Explorer.exe перед запуском нового?

Он мне тоже нужен
Я не против полной загрузки другого юзера в фоне, как если бы он локально / удленно залогинился.
Автор: Maza_Faka
Дата сообщения: 17.11.2008 06:32
gal7
Выложи небольшой пример отображающий твою проблему.
Автор: gal7
Дата сообщения: 17.11.2008 09:44

Цитата:
Выложи небольшой пример отображающий твою проблему

Небольшой пример:

Код: AdlibEnable("prov_na_oshibki", 20)
fukciya_s_oshibkoy()
;+Всякие другие функции далее
While 1
sleep(50)
WEnd

Func fukciya_s_oshibkoy();Функция в которой произошла ошибка
;...
SetError(1);Здесь до этого произошли какие-либо действия, вызвавшие ошибку(это симулирует SetError (1))
;...
EndFunc
Func prov_na_oshibki();Вызывается постоянно и проверяет на ошибки
If @error <> 0 Then
;Здесь должно что-то делаться, чтобы как-то выйти из функции fukciya_s_oshibkoy(), если там ошибка
EndIf
EndFunc
Автор: Maza_Faka
Дата сообщения: 17.11.2008 10:38
gal7

Цитата:
Простейший способ который я знаю это постоянные If-ы+ Return почти после каждой функции

Он же и самый правильный Честно говоря не вижу другого способа отлова ошибок, как проверять возвращаемый результат каждой функции
Ну вот например извращённый пример отлова ошибок:

Код:
Global $Error = False

AdlibEnable("prov_na_oshibki", 20)

fukciya_s_oshibkoy()

;+Всякие другие функции далее

While 1
    Sleep(50)
WEnd

Func fukciya_s_oshibkoy();Функция в которой произошла ошибка
    ;...
    ;SetError(1);Здесь до этого произошли какие-либо действия, вызвавшие ошибку(это симулирует SetError (1))
    ;...
    DriveGetDrive("UNKNOWN")
    If @error Then $Error = True
EndFunc ;==>fukciya_s_oshibkoy

Func prov_na_oshibki();Вызывается постоянно и проверяет на ошибки
    If $Error <> 0 Then
        $Error = 0
        ;Здесь должно что-то делаться, чтобы как-то выйти из функции fukciya_s_oshibkoy(), если там ошибка
    EndIf
EndFunc ;==>prov_na_oshibki
Автор: lex83_2002
Дата сообщения: 17.11.2008 10:38
Ребят, подскажите как обрезать слово справа до символа "#" , либо заменить все после символа # на пустой символ

Добавлено:
Ребят, как в слове обрезать все после символа # ?

Разобрался !
Автор: gal7
Дата сообщения: 17.11.2008 11:14

Цитата:
Главный недостаток такого метода в том, что не все функции устанавливают Error code, а возвращают 1 или 0.

Ладно, буду "по-старинке" делать, ничего не остается.

Цитата:
Что касается команды GoTo, то не вижу необходимости в ней, недаром её исключили из AutoIt-a

А в некоторых других языках она есть и ей очень удобно пользоваться для решения определенных задач. Пусть лучше бы как-нибудь ее отключили по-умолчанию, если боятся новичков испортить ей, а сами бы если она им не нужна была, не пользовались ею. Хотя, возможно возникли технические трудности.
Автор: theHelg
Дата сообщения: 17.11.2008 13:34
Добрый день.

Подскажите, как можно реализовать такую вещь:

Мне нужно сделать PrintScreen определенной области экрана (x1,y1, x2,y2).
При этом мне нужно сделать именно принтСкрин, как виндовый, чтобы я видел то, что вижу на экране монитора.

И второе - как мне определить цвет в некоторой точке скопированной области?
на c#/delphi это довольно просто:

Код:
Using bmp As New Bitmap(1, 1)
Using g As Graphics = Graphics.FromImage(bmp)
g.CopyFromScreen(Windows.Forms.Cursor.Position, _
New Point(0, 0), New Size(1, 1))
End Using
Me.Text = bmp.GetPixel(0, 0).ToString

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.