Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Закладки » AutoIT (Часть 1)

Модерирует : gyra, Maz

Widok (12-01-2009 14:47): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138

   

AddXL

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

AutoIt3

 
Домашняя страница: http://www.autoitscript.com
Страница загрузки: http://www.autoitscript.com/autoit3/downloads.php
 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя - симуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши и управления окнами и его визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
Помощь по AutoIT:
  • Справку на русском (и не только) вы всегда(?) сможете найти тут
  • Справочник по командам rundll32
  • Русский справочник по API-функциям
  • Помощь по Регулярным выражениям
  • AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (книга в формате pdf)
     
    Инструметы для AutoIt:
  • AutoIt3Wrapper [Страница закачки] - Программа для компилляции скрипта с дополнительными возможностями (добавление иконки, описании и т.п).
  • Koda (724 Kb) - Визуализация работы с GUI - аналог Visual Basic.
  • CodeWizard (400 Kb) - нечто простенькое на вариант Koda.
  • AutoItMacroGenerator (34 Kb) - Записывает в реальном времени действия пользователя в AutoIt код.
  • ScriptWriter (78 Kb) - Аналог AutoItMacroGenerator.
  • API Constants (1042 Kb) - Утилита для просмотра всех констант API-Функции и не только.
  • Страница закачки утилит которые идут в отдельной поставке редактора SciTE.
  • AutoIt меню для браузера Opera
     
    Готовые скрипты и программы с открытым кодом на AutoIt:
  • Коллекция AutoIt скриптов от Sanja Alone
  • Коллекция скриптов на http://msfn.org
  • Пополняющийся со временем сайт с полезными утилитами и функциями на AutoIt
  • Desktop Icons Restorator - Скрипт-Программа для сохранения/восстановления позиции иконок р.стола.
  • CaptureIt - Утилита предназначена для захвата изображений с вашего экрана.
  • SwitchIt - Скрипт для конвертирования выделенного текста
  • Скрипт расскраски кода AutoIt для публикации в форумах
     
    Общие вопросы и решения на Autoit:
  • Обработчик скриптов добавляющий отладчик (debugger)
  • Интеракция между несколькими скриптами
  • Пример использование интеракции между скриптами - Добавление элементов GUI с внешнего модуля
  • Копирование большого файла с отображением данных прогресса
  • Создание динамического меню в Tray Icon (значёк в области уведомления)
  • Пример создания своего мастера (Wizard)
  • Метод позволяющий запускать код VBS не создавая временных файлов
  • Описание функции GUIRegisterMsg()
  • Пример перехвата вводимых символов с клавиатуры
  • Пример деактивирования TabItem
  • Пример вывода лога в Edit-поле (с поддержкой форматирования текста)
  • Пример остановки/начало выполнения скрипта + Слежение за б.обмена с заменой неподдерживаемых в имени файла символов
  • Пример использования меню с иконками (ModernMenu.au3) -> Список программ в меню значка в системном трее
     
  • Как по PID процесса вычислить путь запускаемого файла
  • Получение IP по подключенному сокету
     
    Отдельные функции (UDF):
  • Функции Отключения/Подключения к Интернету
  • Функция проверки подключения к Интернету
  • Функция для получения структуры директории включая подкаталоги
  • Функция для поиска в файлах
  • Функция для смены разрешения экрана
  • Функция для смены раскладки клавиатуры в определённом окне
  • Функция для получения списка процессов с допол. инфой (путь к исполняемому файлу и др.)
  • Функции и пример для отображения детального процесса закачки файла
  • Функция (и пример использования) для отображения стильного диалога “О Программе” - [Усовершенствованная версия]
  • Функция возвращает пронумерованный список всех классов определённого окна + функция получения хендлов для этих классов
  • Функция для получения заголовка окна (или его идентификатора) по ID процесса (PID)
  • Функция _StringIsUTF8Format() + _StringToUTF() - Первая проверяет если строка содержится в UTF-8 формате, вторая преобразовывает строку в UTF-8 формат
  • Функция _FileOpenDialogEx - Возвращает массив (или строку) с полными путями к выбранным файлам
  • _AU3_Lib* Функции - Предназначены для обработки подключаемых библиотек через #include
  • Функция транслитерации строки
  • Расширенная библиотека для работы с реестром
     
    За шапкой следит ViSiToR  

  • Всего записей: 6 | Зарегистр. 24-11-2005 | Отправлено: 13:20 24-11-2005 | Исправлено: Maz, 11:50 17-04-2017
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    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"
     

     
    Ну и пример:

    Код:
    $hWnd = WinGetHandle("[Class:Notepad]")
     
    If $hWnd = "" Then Exit
     
    $aRet = DllCall("user32.dll", "int", "EndTask", "hwnd", $hWnd, "int", False, "int", True)
     
    MsgBox(0, "Result", $aRet[0])

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:35 05-08-2008
    Hackproof



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну я вообще MSDN читал, оттуда названия переменных и взяты... Главное, работает, спасибо.  
    То есть, как я понял, после имени вызываемой функции надо писать тип аргументов, а не их имена.  
     
    А на тему процесса без окон кто бы просветил...

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 10:04 05-08-2008 | Исправлено: Hackproof, 10:27 05-08-2008
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Hackproof

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

    Да, сначала указывается тип данных (строка, целое число и т. д.), затем указывается параметр.
     

    Цитата:
    А на тему процесса без окон кто бы просветил...

    Да я поискал, однозначного решения вроде бы нет...

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 13:01 05-08-2008
    NickB

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ помогите
    есть задачка:
    нужно узнать какие основной dns и альтернативный dns использует пользователь и если они не правильные то поменять их на правильные.
     
    пример:
    основной dns: 192.168.0.1
    альтернативный dns: 192.168.0.2
     
    надо поменять на  
    основной dns: 192.168.0.254
    альтернативный dns: 192.168.0.253
     
    при этом надо учитывать что само соединение может называться по разному:
    Local Area Connection
    или Local Area Connection2
    ....
    Local Area Connection10
    или
    Подключение по локальной сети
    .....
    Подключение по локальной сети3
    ...

    Всего записей: 130 | Зарегистр. 04-07-2002 | Отправлено: 19:27 05-08-2008
    RAMSlader

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пишу gui на AutoIT
     
    #include <GUIConstants.au3>
     
    #Region ### START Koda GUI section ### Form=i:\spec4\koda_1.7.0.1\forms\menu.kxf
    $Form1_1 = GUICreate("GUI", 291, 251, 359, 143)
    $Tab1 = GUICtrlCreateTab(0, 0, 289, 249)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    GUICtrlCreateTabItem("")
    $Checkbox1 = GUICtrlCreateCheckbox("wmplayer", 16, 16, 81, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("IEXPLORE", 16, 32, 81, 17)
    $Checkbox3 = GUICtrlCreateCheckbox("notepad", 16, 48, 81, 17)
    $Button1 = GUICtrlCreateButton("Установить", 184, 208, 91, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
     
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
     
    Case $Checkbox1
    run ("C:\Program Files\Windows Media Player\wmplayer.exe")
    Case $Checkbox2
    run ("C:\Program Files\Internet Explorer\IEXPLORE.EXE")
    Case $Checkbox3
    run ("%SystemRoot%\system32\notepad.exe")
    Case $Button1
     
    EndSwitch
    WEnd
     
    Но увы это не раб как хочется, а нужно чтобы при клике на $Checkbox1,2,3 проги не запускались а запоминался выбор (да нет) и уже при клике на кнопку $Button1 производились действия отмеченные в $Checkbox1,2,3  
    Плиз помогите

    Всего записей: 3 | Зарегистр. 07-08-2008 | Отправлено: 12:34 07-08-2008
    Hackproof



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну понятное дело, у тебя же на чекбокс стоит run.
    Я бы сделал через Event:
     

    Код:

    Код:
    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Form1", 633, 449, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
     
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 168, 48, 50, 25)
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 168, 80, 50, 17)
    $Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 168, 104, 50, 25)
    $Button1 = GUICtrlCreateButton("Button1", 168, 136, 41, 25, 0)
    GUICtrlSetOnEvent($Button1, "Button1Click")
    GUISetState(@SW_SHOW)
     
    While 1
        Sleep(100)
    WEnd
     
    Func
    Button1Click()
        $r3=GuiCtrlRead($Checkbox3)
        If $r3="1" then
                run("Третий пошёл")
        endif
        $r2=GuiCtrlRead($Checkbox2)
        If $r2="1" then
                run("Второй пошёл")
        endif
        $r1=GuiCtrlRead($Checkbox1)
        If $r1<>"4" then
                run("Первый пошёл")
        endif
    EndFunc
     
    Func
    Form1Close()
    exit
    EndFunc

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 14:12 07-08-2008 | Исправлено: Hackproof, 14:30 07-08-2008
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    RAMSlader
    Пример:

    Код:
    #include <GUIConstantsEx.au3>
     
    $Form1_1 = GUICreate("GUI", 291, 251, 359, 143)
     
    $Tab1 = GUICtrlCreateTab(0, 0, 289, 249)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
     
    GUICtrlCreateTabItem("")
     
    $Checkbox1 = GUICtrlCreateCheckbox("wmplayer", 16, 16, 81, 17)
     
    $Checkbox2 = GUICtrlCreateCheckbox("IEXPLORE", 16, 32, 81, 17)
     
    $Checkbox3 = GUICtrlCreateCheckbox("notepad", 16, 48, 81, 17)
     
    $Button1 = GUICtrlCreateButton("Установить", 184, 208, 91, 25, 0)
     
    GUISetState(@SW_SHOW)
     
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            Case
    $Button1
                _Install()
        EndSwitch
    WEnd
     
    Func
    _Install()
        If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) Then Run("C:\Program Files\Windows Media Player\wmplayer.exe")
        If BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED) Then Run("C:\Program Files\Internet Explorer\IEXPLORE.EXE")
        If BitAND(GUICtrlRead($Checkbox3), $GUI_CHECKED) Then Run(@WindowsDir & "\notepad.exe")
    EndFunc

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:34 07-08-2008
    Basur



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
  • Скрипт Отключения/Подключения к Интернету

  • Можно скрыть окно "Подключение удаленного доступа"?

    ----------
    Ничто не свободно так, как мысль человека. (Девид Юм)

    Всего записей: 359 | Зарегистр. 15-04-2006 | Отправлено: 03:40 08-08-2008
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопросик, можно ли сменить фонт встроенного MsgBox() ?
    Есть ли его аналоги, реализованные средствами Gui (важно динамическое изменение размера окна в зависимости от выводимой информации) ?
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 10:38 10-08-2008
    gal7

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите, знающие, в скрипте при нажатии на кнопку создается еще одна форма, я пытаюсь в этой новой форме устанавливать реакцию на события, а они не работают! Подскажите в чем дело.
    Это часть кода, создающего второе окно:
     

    Код:
     
    Func Button7Click()
    Opt("GUIOnEventMode", 1)
    $primer = GUICreate("Изменить серверы", 700, 230, 145, 50)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form2_1Close")...и т.д.

    Ноль реакции на все эти установки, что только не далал. Куда копать?

    Всего записей: 145 | Зарегистр. 03-06-2007 | Отправлено: 21:02 10-08-2008
    Hackproof



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По-моему из-за того, что имя формы неправильно указано. Не Form2_1, a primerClose.
     
    GUISetOnEvent($GUI_EVENT_CLOSE, "primerClose")

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 00:44 11-08-2008
    NORIO



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Loopback

    Цитата:
    Для этого есть функция приведения:  
     
    $hWnd = Hwnd($var)

    Спасибо. Это как раз тот случай когда для меня применима поговорка  
    "Смотрю в книгу - вижу фигу"
     
    gal7

    Код:
     
     
    Func Button7Click()
     
        $primer = GUICreate("Изменить серверы", 700, 230, 145, 50)
        GUISetState(@SW_SHOW)
        GUISetOnEvent($GUI_EVENT_CLOSE, "close_child_window")
     
    Return
    EndFunc
     
     
    Func close_child_window()
     
        Local $primer
        GUIDelete($primer)
     
    Return
    EndFunc

     
    Не забудь в фукнкции написать Return
    это слово для выхода из функции.
    А в той которая закрывает дочернее окно  ("Func close_child_window()")  сначала объяви переменную
    Local $primer
    потому что переменные созданные в функциях являются локальными и стираются при завершении функции.
    то есть переменная с хендлом дочернего окна сотрётся при завершении функции Button7Click()

    Всего записей: 875 | Зарегистр. 18-12-2004 | Отправлено: 02:54 11-08-2008 | Исправлено: NORIO, 02:56 11-08-2008
    gal7

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо, NORIO, посмотрев на твой пример, я увидел, что у меня в функции стоит цикл и не дает ее закочить. Чего только не бывает!
     

    Всего записей: 145 | Зарегистр. 03-06-2007 | Отправлено: 08:48 11-08-2008
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NIKZZZZ

    Цитата:
    Вопросик, можно ли сменить фонт встроенного MsgBox() ?

    Проще всего создать собственный "MsgBox" с помощью GuiCreate()

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:51 11-08-2008
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka

    Цитата:
    собственный "MsgBox" с помощью GuiCreate()

    Тогда такая задача - есть текст, есть фонт - вычислить размеры окна.  
    Нужна функция - на входе фонт и символ, на выходе - размер этого символа.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 13:15 11-08-2008
    Bober4ik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хочу сделать меню в трее. В секции $Play "бесконечный" цикл, надо сделать, чтоб при выполнение этого цикла при нажатие на графу $Pause выполнялся ряд действий, а потом выполнение программы продолжалось с остановленного места. А при нажатие графы $Stop цикл прерывался и выполнились другие действие.
     
    Я не уверен что это можно сделать с помощью  AutoIt Подскажите пожалуйста как такое реализовать.
     
     
     
    Opt("TrayMenuMode", 1)
    AutoItSetOption("TrayAutoPause",1)
     
    $Play = TrayCreateItem("Play")
    $Pause = TrayCreateItem("Pause")
    $Stop = TrayCreateItem("Stop")
    $ExitItem = TrayCreateItem("Exit")
     
    While 1
        $TrayMsg = TrayGetMsg()
        Switch $TrayMsg
            Case $Play
                While 1
                       ...........
                       ............
                 Wend
     
            Case $Pause
                .............            
            Case $Stop
                ...........
                
            Case $ExitItem
                 Exit
            EndSwitch
    WEnd

    Всего записей: 1 | Зарегистр. 11-08-2008 | Отправлено: 14:30 11-08-2008 | Исправлено: Bober4ik, 14:32 11-08-2008
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NIKZZZZ

    Цитата:
    Тогда такая задача - есть текст, есть фонт - вычислить размеры окна.  
    Нужна функция - на входе фонт и символ, на выходе - размер этого символа.

    Не совсем понятна задача, тебе нужно изменить размер окна на основе величины шрифта и длины текста? Если да, то, как раз сегодня я запостил на офф. форуме пример с InputBox

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 18:58 11-08-2008
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka

    Цитата:
    тебе нужно изменить размер окна на основе величины шрифта и длины текста?

    Не совсем то. Я хочу сам создать окно нужного размера с нужным мне фонтом.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 19:23 11-08-2008
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NIKZZZZ
    В общем вот, быстрый и грубый пример изменения шрифта в MsgBox:

    Код:
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <WinAPI.au3>
    #include <FontConstants.au3>
     
    Global $hCallBack = DllCallbackRegister("_MsgBoxCustomize", "none", "hwnd;int;int;dword")
     
    $IDTimer = DllCall("user32.dll", "int", "SetTimer", "hwnd", 0, "int", 0, "int", 10, "ptr", DllCallbackGetPtr($hCallBack))
     
    MsgBox(0, "Message", "Hello world! AutoIt Rulez! Hello world! AutoIt Rulez!")
     
    Func _MsgBoxCustomize($hWnd, $Msg, $IdTimer, $dwTime)
        If WinExists("Message") Then
            DllCallbackFree($hCallBack)
            DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "int", $IDTimer)
     
            Local $hFont, $hDC, $TextFont, $hOldFont, $sText, $tSize, $aWinPos, $aTextPos
     
            $hWnd
    = WinGetHandle("Message")
            $aWinPos = WinGetPos("Message")
     
            $hText = ControlGetHandle($hWnd, "", "Static1")
            $aTextPos = ControlGetPos($hWnd, "", $hText)
     
            $hFont = _CreateFont($hText, 12, 800, 2, "Arial")
     
            $hDC = _WinAPI_GetDC($hText)
     
            $TextFont = _SendMessage($hText, $WM_GETFONT)
     
            $OldFont = _WinAPI_SelectObject($hDC, $TextFont)
     
            $sText = ControlGetText($hWnd, "", $hText)
            $tSize = _WinAPI_GetTextExtentPoint32($hDC, $sText & " ")
     
            ControlMove($hWnd, "", $hText, $aTextPos[0], $aTextPos[1], DllStructGetData($tSize, "X") + 20, DllStructGetData($tSize, "Y") + 20)
            $aTextPos = ControlGetPos($hWnd, "", $hText)
            WinMove($hWnd, "", $aWinPos[0], $aWinPos[1], $aTextPos[2] + 10, $aWinPos[3] + 10)
     
            _WinAPI_SetFont($hText, $hFont)
     
            _WinAPI_SelectObject($hDC, $OldFont)
            _WinAPI_DeleteObject($hFont)
            _WinAPI_ReleaseDC($hWnd, $hDC)
        EndIf
    EndFunc
     
    Func
    _CreateFont($hWnd, $nFontSize, $nFontWeight, $nFontAtrribute, $nFont)
        Local $hDc = _WinAPI_GetDC($hWnd)
        Local $nPixel = DllCall("gdi32.dll", "int", "GetDeviceCaps", "hwnd", $hDc, "int", $LOGPIXELSY)
        Local $nHeight = DllCall("kernel32.dll", "int", "MulDiv", "int", $nFontSize, "int", $nPixel[0], "int", 72)
     
        Local $hFont = DllCall("gdi32.dll", "hwnd", "CreateFont", "int", $nHeight[0], "int", 0, _
                               "int", 0, "int", 0, "int", $nFontWeight, "dword", BitAND($nFontAtrribute, 2), _
                               "dword", BitAND($nFontAtrribute, 4), "dword", BitAND($nFontAtrribute, 8), "int", $DEFAULT_CHARSET, _
                               "int", $OUT_DEFAULT_PRECIS, "int", $CLIP_DEFAULT_PRECIS, "int", $DEFAULT_QUALITY, "int", 0, _
                               "str", $nFont)
     
        _WinAPI_ReleaseDC($hWnd, $hDC)
        Return $hFont[0]
    EndFunc

    И статья

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:52 12-08-2008
    Hackproof



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть сервер, к нему подключаются клиенты. Номер порта на сервере периодически меняется. Как клиент узнает об изменениях - неизвестно, возможно через 445 порт, потому что это соединение от процесса System тоже устанавливается при запуске клиента. Сервер имеет привычку иногда впадать в маразм, и его нужно перезагрузить как можно быстрее. Возможно, симптомом зависания сервера является невозможность установления соединения. Зависает не машина, а именно серверное приложение.
    Можно ли из установленного соединения клиент-сервер на машине клиента узнать, какой порт в данный момент на сервере принимает подключения? А то у меня зависание отслеживается по падению клиента, но это происходит через 2-3 минуты, плюс на перезагрузку столько же. Телефон к тому времени уже разрывается...

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 03:25 15-08-2008 | Исправлено: Hackproof, 05:42 15-08-2008
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138

    Компьютерный форум Ru.Board » Компьютеры » Программы » Закладки » AutoIT (Часть 1)
    Widok (12-01-2009 14:47): лимит страниц. продолжаем здесь


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru