Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27,
Цитата:
обновление должен запрашивать не сам IE, а код загружаемой страницы в зависимости от требований ролика
Ого, это мне не постичь, я понятия не имею где код брать, и как его приминить тем более .


Цитата:
этот макрос не задействован ни в одной UDF
Он приминяется в DllCallBack (аж два раза ).

Насколько я знаю, это новый макрос, я его лично приминил пару раз (к примеру в проэкте KeyBoard and Mouse Cleaner - для которго кстати мне и нужны функции блокирования клавиш ) - В ранних версиях аутоита использовался $DTM_SETFORMAT = 0x1005, в последних версиях нужно проверять юникодность, если скрипт в юникоде, тогда значение должно быть $DTM_SETFORMAT = 0x1032 (решение от самого Jon'а ), иначе некорректно отображается формат времени (для GUICtrlCreateDate()) - почему аутоит сам не проверяет, я так и не понял .

Diamond,
Цитата:
А в чём преимущество встроенной функции перед _GUICtrlListView_Create()
Сказать не могу, т.к не использовал никогда второй - но знаю что встроенная функция вполне идеальна для построения практический любого списка (как в плане стильности, так и в плане функциональности).

Цитата:
Оказалось что WM_SIZE срабатывает даже при команде развернуть-восстановить окно
Потому что меняется размер GUI
Я бы использовал тут WM_SIZING, оно срабатывает в момент смены размеров.
Кстати если интересно, могу подкинуть функцию для автоматической смены размера колонок в ListView (сам писал), в момент смены размера GUI будут смещаться колонки в идентичный размер для каждой (опционально - либо по ширине списка, либо до последнего разделителя).

Цитата:
Передача строки другому приложению
На оф. форуме этот вопрос решили подобным путём, я же для себя использую такой метод (переделанные функции с того топика):

Скрипт...
Код: Выделить весь код
#include <GuiConstants.au3>

RegisterScriptMsg("SendMessage Test", $CmdLineRaw)

$Gui = GuiCreate("SendMessage Test")
GUISetState()

While 1
    $Msg = GUIGetMsg()
    Switch $Msg
        Case -3
            Exit
    EndSwitch
WEnd

Func Main_Msg_Function($vsMsg)
    MsgBox(0, "", "Recieved message:" & @LF & @LF & $vsMsg)
    Exit
EndFunc

;=====================================
Func RegisterScriptMsg($sTitle, $vMsg)
    Local $OccurName = StringReplace(@ScriptFullPath, "\", "")
    Local $ERROR_ALREADY_EXISTS = 183

    Local $ihWnd = WinGetHandle($sTitle)

    Local $hDll = DllCall("kernel32.dll", "int", "CreateMutex", "int", 0, "long", 1, "str", $OccurName)
    Local $iLastError = DllCall("kernel32.dll", "int", "GetLastError")
    If $iLastError[0] = $ERROR_ALREADY_EXISTS Then
        _AU3COM_SendData($vMsg, $ihWnd)
        Exit
    Else
        Local Const $WM_COPYDATA = 0x4A
        GUIRegisterMsg($WM_COPYDATA, "_GUIRegisterMsgProc")
    EndIf
EndFunc

Func _GUIRegisterMsgProc($hWnd, $MsgID, $WParam, $LParam)
    Local Const $WM_COPYDATA = 0x4A
    If $MsgID = $WM_COPYDATA Then
        Local $vsMsg = _AU3COM_RecvData($LParam)
        Local $MSGRECVD = DllStructGetData($vsMsg, 1)
        ;Here is go whatever we need to do with the recieved string ($MSGRECVD)
        Call("Main_Msg_Function", $MSGRECVD)
    EndIf
EndFunc

Func _AU3COM_SendData($InfoToSend, $RecvWinHandle)
    Local Const $WM_COPYDATA = 0x4A
    Local $StructDef_COPYDATA = "dword var1;dword var2;ptr var3"
    Local $CDString = DllStructCreate("char var1[256];char var2[256]") ;the array to hold the string we are sending

    DllStructSetData($CDString, 1, $InfoToSend)
    Local $pCDString = DllStructGetPtr($CDString) ;the pointer to the string
    Local $vs_cds = DllStructCreate($StructDef_COPYDATA);create the message struct
    DllStructSetData($vs_cds, "var1", 0) ;0 here indicates to the receiving program that we are sending a string
    DllStructSetData($vs_cds, "var2", String(StringLen($InfoToSend) + 1));tell the receiver the length of the string
    DllStructSetData($vs_cds, "var3", $pCDString) ;the pointer to the string
    Local $pStruct = DllStructGetPtr($vs_cds)
    DllCall("user32.dll", "long", "SendMessage", "hwnd", $RecvWinHandle, "int", $WM_COPYDATA, "int", 0, "int", $pStruct)

    $vs_cds = 0 ;free the struct
    $CDString = 0 ;free the struct

    Return 1
EndFunc

Func _AU3COM_RecvData($COM_LParam)
    ; $COM_LParam = Poiter to a COPYDATA Struct
    Local $STRUCTDEF_AU3MESSAGE = "char var1[256];int"
    Local $StructDef_COPYDATA = "dword var1;dword var2;ptr var3"
    Local $vs_cds = DllStructCreate($StructDef_COPYDATA, $COM_LParam)
    ; Member No. 3 of COPYDATA Struct (PVOID lpData;) = Pointer to Costum Struct
    Local $vs_msg = DllStructCreate($STRUCTDEF_AU3MESSAGE, DllStructGetData($vs_cds, 3))
    Return $vs_msg
EndFunc


Этот скрипт нужно запустить (не из SciTE), и потом запустить его ещё раз - получим ком. строку с которой запущен скрипт... очень полезно если нужно не запускать повторно копию скрипта, и при этом передать данные (такие как путь к "сбросанному" файлу в файл программы ).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 03-12-2007 в 07:10.

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:38, 03-12-2007 | #809