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

» AutoIT

Автор: sproxy
Дата сообщения: 26.07.2008 13:08
Мастера-Гуру AutoIt и не только _)
Подскажите плиз, как возможно организовать локальную базу данных?
SQLite ведь без сервера SQL не заработает?
или же заработает? если да то, примерно, как это организовывается.
Если нет, то может есть какие то другие варианты хранения информации,
если все только в txt хранить, то может есть какие то методы сжатия текста?
---------
на сколько я понял, AutoIT, используя sqllite библиотеки, отлично
создает базы, а как их сохранять / хранить?
----------
и как задать очередь передачи фокуса элементам по нажатии Tab?
Автор: Loopback
Дата сообщения: 26.07.2008 22:45
sproxy
А что ты понимаешь под базой даных?

В первую очередь ведь всё зависит от целей (назначения базы) и объемов информации. Хранить можно в чем угодно - в текcтовых файлах, CSV, XML, SQLite, а можно вообще использовать MS SQL сервер.
Если данных - пара сотен записей, вполне сгодится простой текстовый формат. Если объемы побольше - можно задуматься о SQLite: он не требует никаких дополнительных серверов, весь движок - одна библиотека, вся база - один файл. И в то же время почти полноценная поддержка SQL-запросов, индексация таблиц и прочие прелести.
Если уж что-то совсем тяжелое - можно поставить MSDE (бесплатная локальная версия MS SQL) и работать с ней через COM.

Поодробнее почитать о принципах работы SQLite можешь тут: http://sb-news.net/sqlite.php


Цитата:
и как задать очередь передачи фокуса элементам по нажатии Tab?

В Autoit порядок перехода определяется порядком создания контролов.
Автор: sproxy
Дата сообщения: 27.07.2008 10:05
Loopback
Спасибо!
--------
А с mySQL AutoIT не умеет работать ?
Автор: asdfzxcv
Дата сообщения: 27.07.2008 15:26

Цитата:
!!! 'int*ptr', 0)
массив показался всё нормально, а потом выдал в сообщении ошибку #error=3

Тип должен быть просто 'int*', без ptr и без пробелов между типом и *. Этот синтаксис работает в последней релизной версии и последующих бетах, само собой.


((
Показывает массив процессов но всё равно выдаёт ошибку @error=3 что ему может не навится а ...?
Visitor что посоветуешь, ты же на сквозь свой пример про процессы знаешь)
Автор: sproxy
Дата сообщения: 28.07.2008 05:51
не могу додумать следующее:

1) как скрывать окно по клику иконки в трее -
если окно в данный момент было активно.
А если было не активно, то сделать активным
и отобразить.

Проблема в том, что при клике по иконке в трее,
фокус с окна снимется и оно, в момент клика по иконке в трее
и далее, НЕ активно...т.е. как проверить состояние активно/не активно
определенного окна по клику иконки в трее?

2) очень плохо что: Some styles cannot be changed dynamically, check MSDN documentation. $CBS_UPPERCASE combo style is one example.

А мне как раз необходимо динамически менять стиль combo:
стандартный, заблокированный и вид как у обычного input`а
(кстати, как то можно задать такой вид у combo?)

Есть ли решение?

3) в каком режиме обработки GUI
вы пишите программы: MessageLoop или OnEvent ?
Есть ли приимущества/недостатки у них друг над другом и вообще в целом?

тест код по #1 и #2:


Код: #Include <Constants.au3>
#include <GuiConstantsEx.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>
#include <TabConstants.au3>
#include <ListViewConstants.au3>

Global $hImageList = 0
Global $what_do = ""
TraySetClick( 8 )

$Main_GUI = GUICreate("Tab Sample", 400, 300, -1, -1);, BitOr($GUI_SS_DEFAULT_GUI,$WS_CLIPSIBLINGS))
$OK_Button = GUICtrlCreateButton("OK", 110, 270, 70, 20)
$Cancel_Button = GUICtrlCreateButton("Cancel", 220, 270, 70, 20)
GUISetState()

; Creates the first child window that is implemented into the main GUI
$Child1 = GUICreate("", 370, 215, 15, 40, BitOR($WS_CHILD, $WS_TABSTOP), -1, $Main_GUI)

$child1_tab = GUICtrlCreateTab(0, 0, 370, 215)
$child1_tabitem1 = GUICtrlCreateTabItem("Child1Tab1")

$combo = GUICtrlCreateCombo( "item1", 10, 30, 150, $CBS_UPPERCASE )
GUICtrlSetData( -1,"item2|item3", "item3" )

$bt_normal = GUICtrlCreateButton( "normal", 10, 55, 70, 20 )
$bt_block = GUICtrlCreateButton( "block", 85, 55, 70, 20 )
$bt_as_input = GUICtrlCreateButton( "as_input", 160, 55, 70, 20 )

$child1_tabitem2 = GUICtrlCreateTabItem("Child1Tab2")
$child1_tabitem3 = GUICtrlCreateTabItem("Child1Tab3")
GUICtrlCreateTabItem("")

GUISetState()

; Creates the second child window that is implemented into the main GUI
$child2 = GUICreate("", 370, 215, 15, 40, BitOR($WS_CHILD, $WS_TABSTOP), -1, $Main_GUI)

$child3 = GUICreate("", 210, 220, 158, 0, BitOR($WS_CHILD, $WS_TABSTOP), -1, $child2)
$ListView = GUICtrlCreateListView("Col1|Col2", 0, 2, 210, 211, _
BitOR($LVS_NOSORTHEADER, $LVS_SHOWSELALWAYS, $WS_TABSTOP), $WS_EX_CLIENTEDGE)

GUICtrlCreateListViewItem("ItemLong1|ItemLong2", $ListView)
GUICtrlCreateListViewItem("ItemLong3|ItemLong4", $ListView)
GUICtrlCreateListViewItem("ItemLong5|ItemLong6", $ListView)
GUISetState()

GUISwitch($child2)
$child2_tab = GUICtrlCreateTab(0, 0, 156, 215)
$child2_tabitem1 = GUICtrlCreateTabItem("Child2Tab1")
$child2_tabitem2 = GUICtrlCreateTabItem("Child2Tab2")
GUICtrlCreateTabItem("")

; Switch back the main GUI and create the tabs
GUISwitch($Main_GUI)
$main_tab = GUICtrlCreateTab(10, 10, 380, 250)
$main_tabitem1 = GUICtrlCreateTabItem("MainTab1")
$main_tabitem2 = GUICtrlCreateTabItem("MainTab2")
GUICtrlCreateTabItem("")
GUICtrlSetState($main_tabitem1, $GUI_SHOW)

Bind_ImageList($main_tab)

While 1
$msg = GUIGetMsg(1)
Select
Case
$msg[0] = $bt_normal
GUICtrlSetStyle( $combo, $GUI_SS_DEFAULT_COMBO )

Case $msg[0] = $bt_block
GUICtrlSetStyle( $combo, $CBS_DROPDOWNLIST )

Case $msg[0] = $bt_as_input
;~ GUICtrlSetStyle( $combo, ????? )

Case $msg[0] = $GUI_EVENT_CLOSE Or $msg[0] = $Cancel_Button
ExitLoop

Case
$msg[0] = $main_tab
$tabidx
= GUICtrlRead($main_tab)

Select
Case
$tabidx = 0
GUISetState(@SW_HIDE, $child2)
GUISetState(@SW_SHOW, $Child1)
Case $tabidx = 1
GUISetState(@SW_HIDE, $Child1)
GUISetState(@SW_SHOW, $child2)
EndSelect
EndSelect
$msg = TrayGetMsg()
If $msg = $TRAY_EVENT_PRIMARYDOWN Then win_show_hide_active()

If WinGetState( $Main_GUI ) == 15 Then
$what_do = "hide"
ElseIf WinGetState( $Main_GUI ) == 5 Then
$what_do = "show"
Else
$what_do = "active"
EndIf

ToolTip( "State: " & WinGetState( $Main_GUI ) & " Active: " & WinActive( $Main_GUI ), 0, 60 )
WEnd

Func win_show_hide_active()
If $what_do = "hide" Then
GUISetState( @SW_HIDE, $Main_GUI )
ElseIf $what_do = "show" Then
GUISetState( @SW_SHOW, $Main_GUI )
Else
GUISetState( @SW_RESTORE, $Main_GUI )
EndIf

EndFunc

DllCall("comctl32.dll", "int", "ImageList_Destroy", "hwnd", $hImageList)

Func ImageList_Create()
$hImageList = DllCall("comctl32.dll", "hwnd", "ImageList_Create", "int", 16, "int", 16, "int", 0x0021, "int", 0, "int", 1)
$hImageList = $hImageList[0]
Return $hImageList
EndFunc ;==>ImageList_Create

Func Bind_ImageList($nCtrl)
$hImageList = ImageList_Create()
GUICtrlSendMsg($nCtrl, $TCM_SETIMAGELIST, 0, $hImageList)

$szIconFile = "shell32.dll"

$tcitem = DllStructCreate("uint;dword;dword;ptr;int;int;int")
DllStructSetData($tcitem, 1, 0x0002)
DllStructSetData($tcitem, 6, 0)
AddImageToTab($nCtrl, 0, $tcitem, $szIconFile, 12)

DllStructSetData($tcitem, 6, 1)
AddImageToTab($nCtrl, 1, $tcitem, $szIconFile, 21)

$tcitem = 0
EndFunc ;==>Bind_ImageList

Func AddImageToTab($nCtrl, $nTabIndex, $nItem, $szIconFile, $nIconID)
$hIcon = DllStructCreate("int")
$result = DllCall("shell32.dll", "int", "ExtractIconEx", "str", $szIconFile, "int", $nIconID, "hwnd", 0, "ptr", DllStructGetPtr($hIcon), "int", 1)
$result = $result[0]
If $result > 0 Then
DllCall("comctl32.dll", "int", "ImageList_AddIcon", "hwnd", $hImageList, "hwnd", DllStructGetData($hIcon, 1))
DllCall("user32.dll", "int", "SendMessage", "hwnd", ControlGetHandle($Main_GUI, "", $nCtrl), "int", $TCM_SETITEM, "int", $nTabIndex, "ptr", DllStructGetPtr($nItem))
DllCall("user32.dll", "int", "DestroyIcon", "hwnd", $hIcon)
EndIf

$hIcon = 0
EndFunc ;==>AddImageToTab
Автор: Maza Faka
Дата сообщения: 28.07.2008 07:30
sproxy
1)

Код: #include <GuiConstantsEx.au3>
#include <Constants.au3>

Opt("GuiOnEventMode", 1)
Opt("TrayMenuMode", 1)

$hGUI = GUICreate("Test", 300, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

GUISetState()

While 1
$tMsg = TrayGetMsg()
Switch $tMsg
Case $TRAY_EVENT_PRIMARYDOWN
If _GUIGetState() Then
GUISetState(@SW_HIDE)
Else
GUISetState(@SW_SHOW)
EndIf
EndSwitch
WEnd

Func
_GUIGetState()
Return BitAND(WinGetState($hGUI), 2)
EndFunc

Func
_Exit()
Exit
EndFunc
Автор: sproxy
Дата сообщения: 28.07.2008 07:37
Maza Faka

Цитата:
3)
По скорости работы разницы вроде бы нет, хотя на офф. форуме кто-то из гуру высказывал предпочтения в пользу OnEvent. Я обычно использую режим OnEvent.

я то же _))


Цитата:
#include <GuiConstantsEx.au3>
#include <Constants.au3>

Opt("GuiOnEventMode", 1)
Opt("TrayMenuMode", 1)

$hGUI = GUICreate("Test", 300, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

GUISetState()

While 1
$tMsg = TrayGetMsg()
Switch $tMsg
Case $TRAY_EVENT_PRIMARYDOWN
If _GUIGetState() Then
GUISetState(@SW_HIDE)
Else
GUISetState(@SW_SHOW)
EndIf
EndSwitch
WEnd

Func _GUIGetState()
Return BitAND(WinGetState($hGUI), 2)
EndFunc

Func _Exit()
Exit
EndFunc


Дело то в том, что если окно НЕ активно, но оно ОТОБРАЖАЕТСЯ,
то необходимо, что бы окно СТАЛО АКТИВНЫМ, а не HIDE....
В этом то весь интерес )))
Автор: Maza Faka
Дата сообщения: 28.07.2008 08:49
sproxy

Цитата:
Дело то в том, что если окно НЕ активно, но оно ОТОБРАЖАЕТСЯ,
то необходимо, что бы окно СТАЛО АКТИВНЫМ, а не HIDE....
В этом то весь интерес )))

Тогда будет работать, только первое условие, поскольку

Цитата:
при клике по иконке в трее, фокус с окна снимется и оно, в момент клика по иконке в трее и далее, НЕ активно


Код: #include <GuiConstantsEx.au3>
#include <Constants.au3>

Opt("GuiOnEventMode", 1)
Opt("TrayMenuMode", 1)

Global $LastActive

$hGUI
= GUICreate("Test", 300, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

GUISetState()

While 1
$tMsg = TrayGetMsg()
Switch $tMsg
Case $TRAY_EVENT_PRIMARYDOWN
If _GUIGetState() Then
GUISetState(@SW_HIDE)
Else
GUISetState(@SW_SHOW)
WinActivate($hGUI)
EndIf
EndSwitch

$LastActive = WinGetHandle("")
WEnd

Func
_GUIGetState()
Return WinActive($hGUI)
EndFunc

Func
_Exit()
Exit
EndFunc
Автор: sproxy
Дата сообщения: 29.07.2008 04:01
что то не работает, только отображает из всех
положений, и вообще не скрывает....
чувствую эта задача на autoit должна решаться
не стандартными её функциями....


Цитата:
#include <GuiConstantsEx.au3>
#include <Constants.au3>

Opt("GuiOnEventMode", 1)
Opt("TrayMenuMode", 1)

Global $LastActive

$hGUI = GUICreate("Test", 300, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

GUISetState()

While 1
$tMsg = TrayGetMsg()
Switch $tMsg
Case $TRAY_EVENT_PRIMARYDOWN
If _GUIGetState() Then
GUISetState(@SW_HIDE)
Else
GUISetState(@SW_SHOW)
WinActivate($hGUI)
EndIf
EndSwitch
$LastActive = WinGetHandle("")
WEnd

Func _GUIGetState()
Return WinActive($hGUI)
EndFunc

Func _Exit()
Exit
EndFunc

Автор: Maza Faka
Дата сообщения: 29.07.2008 06:53
sproxy

Цитата:
что то не работает

Я же написал, что будет работать первое условие
Цитата:
если окно НЕ активно, но оно ОТОБРАЖАЕТСЯ,
то необходимо, что бы окно СТАЛО АКТИВНЫМ
Автор: sproxy
Дата сообщения: 29.07.2008 07:04
блин, так и я ж об этом!! )))
что не получается сделать:


Цитата:
как скрывать окно по клику иконки в трее -
если окно в данный момент было активно.
А если было не активно, то сделать активным
и отобразить.


а вот либо, скрывать и показывать по клику - это легко,
да и каждый раз показывать по клику то же ))))))

может wmi умеет определять какое окно сейчас по z "выше" всех?
тогда получится сделать...
Автор: NIKZZZZ
Дата сообщения: 29.07.2008 14:39
Можно ли организовать всплывающие подсказки при наведении на элемент ?
Автор: sproxy
Дата сообщения: 29.07.2008 15:56
to NIKZZZZ


Цитата:
Можно ли организовать всплывающие подсказки при наведении на элемент ?


да, вот вариант:


Код: #include <GUIConstants.au3>

Opt("GUIOnEventMode", 1) ; Change to OnEvent mode
$mainwindow = GUICreate("Hello World", 200, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

GUICtrlCreateLabel("Наведи на кнопку OK", 30, 10)

$okbutton = GUICtrlCreateButton("OK", 70, 50, 60)
GUICtrlSetOnEvent($okbutton, "OKButton")

;~ "GUICtrlSetTip" - Функция для установки подсказок:
GUICtrlSetTip ( $okbutton, "Вот и текст подсказки" )
GUISetState(@SW_SHOW)

While 1
Sleep(1000) ; Idle around
WEnd

Func
OKButton()
MsgBox(0, "GUI Event", "You pressed OK!")
EndFunc

Func
CLOSEClicked()

Exit
EndFunc
Автор: filmax
Дата сообщения: 30.07.2008 17:47
Можно ли с помощью этой программы каждое утро при включении компьютера распечатывать "выделенный текст" (курсы валют) со страницы: http://www.bank.gov.ua/Fin_ryn/OF_KURS/Currency/FindByDate.aspx
в количестве 7 шт.?
Автор: Hackproof
Дата сообщения: 31.07.2008 00:29
Можно.
Автор: sproxy
Дата сообщения: 31.07.2008 06:36
filmax
давай конкретней, "выделенный текст" - т.е. то,
что ты сам выделишь мышкой на странице?
....хм...надо наших гуру помучатьк как это обработать.
А саму страницу можно считать весь ее html примерно так:
#include <INet.au3>
ConsoleWrite(_INetGetSource('http://www.bank.gov.ua/Fin_ryn/OF_KURS/Currency/FindByDate.aspx')), далее уже разбирать т что тебе нужна.

Или же жругие UDF (пользовательские фкнкции, в рус справке - указатель библиотечных функций) - есть там Автоматизация IE - чувствую с ними можно сделать то что ты хочешь.

+ если ты просто выделил текст мышкой - можно легко сделать - высылать Ctrl+C
твой выделенный текст скопирован в буфер, и далее разобрать как надо ...
Автор: Maza Faka
Дата сообщения: 31.07.2008 08:58
filmax
Попробуй так:

Код: #include <INet.au3>

$source = _INetGetSource("http://www.bank.gov.ua/Fin_ryn/OF_KURS/Currency/FindByDate.aspx")

$hFile = FileOpen("c:\print.html", 2)
FileWrite($hFile, $source)
FileClose($hFile)

_PrintHTML("c:\print.html")

Func _PrintHTML($p_file)
If FileExists($p_file) Then RunWait(@COMSPEC &' /c rundll32.exe ' & @SystemDir & '\mshtml.dll,PrintHTML "' & $p_file & '"', @TempDir, @SW_HIDE)
EndFunc
Автор: sproxy
Дата сообщения: 31.07.2008 09:27
Maza Faka
вопрос, с доченрным окном и tab - отпал, сдела на создание/удаление tab-а.

но есть другой вопрос, - как бы релаизовать (в плане теории)
передачу - и чтение информации на / с сайта?

что бы сделать самый бонально простой месенджер (один
с сайта пишет, дрйгой из программы).

думал через почту, но с чтением почту у autoit проблемы
(может есть уже разроботки udf, не офф форуме нашел тока на smtp)
Автор: Maza Faka
Дата сообщения: 31.07.2008 10:01
sproxy

Цитата:
простой месенджер (один
с сайта пишет, дрйгой из программы

В смысле "писать с сайта"? Поподробней пожалуйста.
Автор: sproxy
Дата сообщения: 31.07.2008 10:18
в плане, на сайте чат (java / ajax и т.д., с этим нет проблем)
так вот скажем есть программа, есть её id,
с сайта человек выбирает как бы контакт (который
обозначает id программы) и пишет сообщение,
это сообщение получает именно программа с этим id.
Т.е. программа принимает сообщение и показыает пользователю
чат диалог с человеком с сайта. И так же программа может отправлять
сообщение на чат - человеку с сайта.

Пока знаю как сделать через почту.
Но канечно же есть и другие технологии?
Сай то на виртуалке, там максимм обычне средства (java / ajax, крон ... ).

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

Как еще сделать не могу придумать....посдкажешь, в теории?

т.е. я хочу понять, как из программы передовать информацию на сайт
и читать с сайта. к примеру off клиент web чата - off клиент
как то же читает/перадет данные на/с сайта ...

--------------------------------------------------------

2) [РЕШЕНО] как разобраться с #AutoIt3Wrapper_Res_File_Add ?
четвертый пост, хороший пример:
Ссылка


3) есть ли каки нить средства по созданию dll
библиотек. Как пинимаю dll пишется на вроде VB или autoit то же сможет...?
может есть удобные программки ?
- что бы не запихивать все в исходный файл скрипта...

в основом для хранения(т.е. что бы из этой dll брать,
а не грузить все в exe программы) : icon, jpg, wav.

А вот функции......dll можно написать на autoit?

4) авто установка программы - не моей, т.е. сторонеей.
делаю срыто - просто WinMove на 9999, 9999.
Остался вопрос как скрыть кнопку этого окна с
taskBar`a - есть идеи?

или же как можно сделать окно установщика срытым - но
при этом передовать ему комманды нажатия кнопок и т.д.??
Автор: Maza Faka
Дата сообщения: 01.08.2008 07:43
sproxy

Цитата:
т.е. я хочу понять, как из программы передовать информацию на сайт
и читать с сайта.

Я бы тоже хотел понять


Цитата:
есть ли каки нить средства по созданию dll

В AutoIt-е нет. DLL-ки пишутся на C


Цитата:
как скрыть кнопку этого окна с
taskBar`a - есть идеи?


Пример с блокнотом:

Код: #include <GuiToolBar.au3>

Run("notepad.exe")

WinWait("[Class:Notepad]")

WinSetState("[Class:Notepad]", "", @SW_MINIMIZE)

$hParent = DllCall("User32.dll", "hwnd", "FindWindow", "str", "Shell_TrayWnd", "str", "")
$hParent = $hParent[0]

$hToolBar = ControlGetHandle($hParent, "", "ToolbarWindow322")

MsgBox(0, "Внимание", "Сейчас мы спрячем кнопку Блокнота с панели задач")

$count = _GUICtrlToolbar_ButtonCount($hToolBar)

For $i = 0 To $count - 1
$ID = _GUICtrlToolbar_IndexToCommand($hToolBar, $i)

If StringInStr(_GUICtrlToolbar_GetButtonText($hToolBar, $ID), "Безымянный") Then ;Находим кнопку с нужным нам описание
_GUICtrlToolbar_SetButtonState($hToolBar, $ID, $TBSTATE_HIDDEN) ; и прячем её
ExitLoop
EndIf
Next


MsgBox(0, "Внимание", "Сейчас мы покажем кнопку Блокнота на панели задач")

;Показываем кнопку окна на панели задач
_GUICtrlToolbar_SetButtonState($hToolBar, $ID, $TBSTATE_ENABLED)
Автор: sproxy
Дата сообщения: 01.08.2008 18:47
пример с блокнотом:
оооо-го, Maza Faka, мега крута!
Спасибо, ни знаю как благодарить тебя и других
ребят - мега консультантов ))

*Я бы тоже хотел понять *
ни чё...я все равно докапаюсь!! ))

+ где то же валялся борлад с....

Автор: NORIO
Дата сообщения: 01.08.2008 20:22
Вопрос по оптимизации кода.

Возможно ли отослать сообщение сразу нескольким окнам минимальными средствами
если учесть что эти окна одинаковы и только различаются частью заголовков, и отсылаемая комманда для них одинаковая.

Пока, в тугом цикле повторяются несколько строк такого кода, а это нежательно.
Как это можно оптимизировать?
V
While (1)
DllCall("user32.dll", "int", "SendMessage", "hwnd", $handle1 , "int", 0X0F, "int", 0, "int", 0)
DllCall("user32.dll", "int", "SendMessage", "hwnd", $handle2 , "int", 0X0F, "int", 0, "int", 0)
DllCall("user32.dll", "int", "SendMessage", "hwnd", $handle3 , "int", 0X0F, "int", 0, "int", 0)
sleep(50)
Wend

Хотелось бы что то вроде запихивания некольких хендлов в одно выражение )
Автор: dedullika
Дата сообщения: 01.08.2008 20:56
Здраствуйте , уважаемые програмисты , подскажите как можно средствами AutoIT определить что программа зависла ? Нужно типо if <прога зависла> do ...
Автор: Maza Faka
Дата сообщения: 02.08.2008 07:33
dedullika
Тынц

Добавлено:
NORIO

Цитата:
Возможно ли отослать сообщение сразу нескольким окнам минимальными средствами

Боюсь, что отправка сообщений каждому окну в цикле и есть то самое "минимальное средство"
Другое дело если требуется отправить сообщение всем окнам или окнам верхнего уровня:

Код:
$HWNDBROADCAST = 0xFFFF ; Все окна
$HWND_TOPMOST = -1 ;Окна верхнего уровня
Автор: allalone
Дата сообщения: 02.08.2008 10:01
Подскажите, можно ли средставми AutoIt изменять резрешения к определенному разделу реестра ?
Автор: NORIO
Дата сообщения: 04.08.2008 09:03
Maza Faka
Спасибо.

Ещё вопрос.

как заставить autoit обрабатывать хэндл который в скирпте записан в виде цифрового значения?
это часто нужно для тестирования кусков кода, но autoit его не воспринимает.
(например winclose(0X0123) работать не будет)

Может есть удобный способ его конвертировать в понимаемый интерпретатором формат?
Автор: Loopback
Дата сообщения: 04.08.2008 09:42

Цитата:
как заставить autoit обрабатывать хэндл который в скирпте записан в виде цифрового значения?
это часто нужно для тестирования кусков кода, но autoit его не воспринимает.
(например winclose(0X0123) работать не будет)

Для этого есть функция приведения:

$hWnd = Hwnd($var)

Автор: Hackproof
Дата сообщения: 04.08.2008 13:26
На тему зависшей программы: А если у процесса нет окон, а скрытые не имеют привязки к процессу, как отследить его зависание?

И еще не понимаю:

Код:
$fShutDown= False
$fForce=True
$hWnd=WinGetHandle("Безымяный") ;Блокнот убиваем
$ret=DllCall("user32.dll", "int" ,"EndTask", "hWnd", $hWnd, "fShutDown",$fShutDown,"fForce",$fForce)
msgbox(0,"1",@error )
Автор: Maza Faka
Дата сообщения: 05.08.2008 06:35
Hackproof

Цитата:
И еще не понимаю

Со временем обязательно поймёшь, было бы желание Вбиваем в Google EndTask и по первой же ссылке смотрим офф. описание этой функции.


Цитата:
У функции Return type - Boolean, а в списке типов такого нет

Вот небольшая таблица конверсий типов данных:

Код:
BOOL = "int"
COLORREF = "int"
DWORD = "int"
HANDLE = "ptr"
HDC = "ptr"
HFILE = "int"
HFONT = "ptr"
HICON = "ptr"
HINSTANCE = "ptr"
HKEY = "ptr"
HMENU = "ptr"
HMODILE = "ptr"
HWND = "hwnd"
INT = "int"
LONG = "long"
LPARAM = "long"
LPCTSTR = "str" ("wstr" if a UNICODE function)
LPINT = "int_ptr"
LPLONG = "long_ptr"
UINT = "int" or "long"
ULONG = "long"
WPARAM = "int"
word = "ushort"

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

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


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