Недавние сообщения

Страницы: 1 2 [3] 4 5 ... 10
21
Общие вопросы по AutoIt / Re: [Элементы GUI] В ListView не работает меню
« Последний ответ от ra4o Отправлен Январь 17, 2019, 18:10:54 »
Для LisView используйте "WM_NOTIFY"
22
Общие вопросы по AutoIt / [Элементы GUI] В ListView не работает меню
« Последний ответ от sterro_sasha Отправлен Январь 17, 2019, 17:40:30 »
Подскажите пожалуйста, почему нет реакции, когда нажимаешь Открыть в контекстном меню списка ListView?

При этом если нажать просто по области GUI - то реакция есть. Буду рад совету, не знаю куда копать даже ((

Вот черновик:

Код: AutoIt [Выделить]
#include <GuiMenu.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPI.au3>
#include <FontConstants.au3>
#include <GuiMenu.au3>

Global Enum $idOpen = 1000, $idSave, $idInfo

_Main()

Func _Main()
    ; Создаёт GUI
    $hGUI = GUICreate("Menu", 400, 300)

Global $hListView = _GUICtrlListView_Create($hGUI, '', 0, 0, 380, 280) ;создание таблицы
_GUICtrlListView_SetExtendedListViewStyle($hListView, _ ; расширенные стили
        BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))

    GUISetState()

    ; Регистрация обработчика сообщений
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")

    ; Цикл выполняется, пока окно не будет закрыто
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

EndFunc   ;==>_Main

; Обработчик сообщений WM_COMMAND
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $ilParam
    Switch $iwParam
        Case $idOpen
            _WinAPI_ShowMsg ("Открыть")
        Case $idSave
            _WinAPI_ShowMsg ("Сохранить")
        Case $idInfo
            _WinAPI_ShowMsg ("Информация")
    EndSwitch
EndFunc   ;==>WM_COMMAND

; Обработчик сообщений WM_CONTEXTMENU
Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $ilParam
    Local $hMenu

    $hMenu = _GUICtrlMenu_CreatePopup ()
    _GUICtrlMenu_InsertMenuItem ($hMenu, 0, "Открыть", $idOpen)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 1, "Сохранить", $idSave)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "", 0)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "Информация", $idInfo)
    _GUICtrlMenu_TrackPopupMenu ($hMenu, $iwParam)
    _GUICtrlMenu_DestroyMenu ($hMenu)
    Return True
EndFunc   ;==>WM_CONTEXTMENU

23
Стол заказов / Программа для работы с банковскими вкладами(учебная версия)
« Последний ответ от Grizli Отправлен Январь 17, 2019, 13:57:21 »
Версия AutoIt: 3.3.14.0

Описание:
Приветствую уважаемые. Работаю в техникуме программистом. Открыли новую профессию для девчонок- Банковский операционист. Руководство спрашивает, могу ли я для лабораторных работ написать модули. Прошу вашего совета, нужна основа, доработаю мелочи сам.
Что требуется:
ПО кнопке открытия вклада открывается форма для заполнения данных вклада- паспорт, сумма, срок и тп. при завершении заполнения открывается текстовая форма договора вклада, в которую в нужных местах вставлены данные, заполненные в форме заполнения вклада. закрываем печатную форму. по кнопке закрыть отображается Фейковый журнал открытых ранее вкладов(эмуляция реального журнала, указаны 5-7 строк уже открытых вкладов, нигде не будут никак использоваться, данные в них "от балды"). в котором последним отображается наш реально забитый вклад. по открытию его можно принудительно закрыть.
Примечания:
Напишу еще для тех, кто любит свой ум потренировать разными задачами, знаю тут немало имеется таких умельцев:
Еще нужна кнопка частичного отзыва суммы вклада, уменьшающую сумму вклада со дня отзыва части суммы(влияет на начисление %,со дня отзыва % начисляются на уменьшенную сумму)
и кнопка выдачи вклада с % после окончания срока вклада(подозреваю для этого нужно поле для ввода текущей даты, что-то наподобие точки актуальности 1с, то есть перевел дату в будущее, вклад по дате закрылся и можно выдавать деньги).
Сам вклад нигде сохранять не нужно. При закрытии программы пусть очищается журнал и остаются набитые те фейковые строчки вкладов, пусть сам вклад хранится в переменной массива до закрытия программы. При каждом запуске программы студентка будет новая работать со своим новым вкладом.
Буду рад любой помощи...
24
Общие вопросы по AutoIt / Re: [Окна, Диалоги] _WinAPI_CreatePen и _WinAPI_DrawLine пропадает результат
« Последний ответ от InnI Отправлен Январь 17, 2019, 13:31:01 »
wehr  [?]
Цитировать
Линии рисуются, но живут они не более 1 секунды
Это происходит потому, что чужое окно ничего не знает о ваших линиях и обновляет свой DC только известной ему информацией. Поэтому нужно рисовать постоянно - либо в бесконечном цикле, либо по таймеру.

Как вариант, можно на чужое окно наложить собственное прозрачное окно и на нём рисовать. Но, в этом случае, нужно будет отслеживать положение, размеры и состояние чужого окна и синхронизировать со своим. И ещё данный подход может не работать в полноэкранных режимах 3D.
25
Общие вопросы по AutoIt / [Окна, Диалоги] _WinAPI_CreatePen и _WinAPI_DrawLine пропадает результат
« Последний ответ от wehr Отправлен Январь 17, 2019, 11:56:02 »
Вообще столкнулся с проблемой. Нужно в окне клиента нарисовать линии красного цвета. Линии рисуются, но живут они не более 1 секунды. Задержку sleep, после рисования  _WinAPI_DrawLine ставить бесполезно, линии все равно пропадают.Вопрос, как сделать так, чтобы линии после рисования _WinAPI_DrawLine жили подольше. 




Код: AutoIt [Выделить]
func grafic($x,$y,$object)
   local $s=0,$d=0
local $bluhWnd = WinWaitActive("Blue", "", 5)
local $hDC = _WinAPI_GetWindowDC($bluhWnd) ; DC всего экрана (рабочего стола)
Local $pos = WinGetPos($bluhWnd) ; Возвращает размер окна (Не размер клиентской области, которая указывается в GUICreate)
Local  $width = $pos[2]
Local  $height = $pos[3]
local $rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height)
_WinAPI_SetWindowRgn($hDC, $rgn)
Local  $object2 = _GDIPlus_BitmapCreateFromHBITMAP ($object)
Local $objectX = _GDIPlus_ImageGetWidth ($object2)
local $objectY = _GDIPlus_ImageGetHeight ($object2)
local $hPen = _WinAPI_CreatePen($PS_SOLID, 1, 0xFFFF0000)
local $obj_orig = _WinAPI_SelectObject($hDC, $hPen)
;MsgBox(0, "X и Y равны:", $objectX)
If $objectX = 1 Then
$d = Ceiling($objectY/2)
$s=1
EndIf
If $objectY = 1 Then
$s = Ceiling($objectX/2)
$d=1
EndIf
Select
case $s=1
 _WinAPI_DrawLine($hDC, $x, $y+$d, $x, $y-$d)
 case $d=1
    _WinAPI_DrawLine($hDC, $x+$s, $y, $x-$s, $y )
 EndSelect
 Sleep(2000)
 ;_WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN)
 _WinAPI_SelectObject($hDC, $obj_orig)
    _WinAPI_DeleteObject($hPen)
    _WinAPI_ReleaseDC(0, $hDC)

  EndFunc

26
Общие вопросы по AutoIt / _WinAPI_ReadProcessMemory не работает на Windows 10
« Последний ответ от prodampw Отправлен Январь 17, 2019, 10:48:57 »
Здравствуйте. Может кто сталкивался с такой проблемой: Код прекрасно работает на Win 7 x64, но почему то возвращает 0 на Win 10

Код: AutoIt [Выделить]
$hWnd = WinGetHandle("Program 1")
$iPid = WinGetProcess($hWnd)
$hProcess = _WinAPI_OpenProcess($PROCESS_ALL_ACCESS, 0, $iPid,1)
$iAddress=0x1462088D0
$BufferPointer=DllStructCreate("Int")
Local $read
_WinAPI_ReadProcessMemory($hProcess,$iAddress,DllStructGetPtr($BufferPointer),4,$read)
DllStructGetData($BufferPointer,1)
MsgBox(0,"",DllStructGetData($BufferPointer,1))

Что можно поменять чтобы заработало?
27
...подскажите, где искать ?
1) Правила
2) Раздел справки Описание языка
И тогда вам начнут помогать.

Здравствуйте - поправил, мануал изучаю по возможности... у ВСЕХ - времени не хватает. Крутимся - как угарелые .....
Ценю Ваше время - спасибо за всё.


Добавлено: Январь 17, 2019, 07:33:14
...подскажите, где искать ?
1) Правила
2) Раздел справки Описание языка
И тогда вам начнут помогать.


Вроде решил задачу - работает по двум часовым параметрам :
 :IL_AutoIt_1:
(нажмите для показа/скрытия)
28
Общение / Куда пропал Yashied?
« Последний ответ от sterro_sasha Отправлен Январь 17, 2019, 03:16:18 »
Собственно вопрос в заголовке.

Как вообще форум? Creator хотя бы.. не ушел?
29
Стол заказов / Re: альтернативный способ переключения окон в windows
« Последний ответ от Alexey Отправлен Январь 17, 2019, 02:55:34 »
OffTopicв рамках проводимой оптимизации и избавления от многих программ пытаюсь также уменьшить количество процессов, постоянно висящих в памяти

из скриптоподобного перенёс всё что смог в 1 процесс
так получается autohotkey-скрипт из нескольких сотен строк, уже заменивший некоторые программы, среди которых:

- keyman (4.28) (потрясающий портабельный клавиатурный помощник, много лет казавшийся мне абсолютно незаменимым)
- comfort keys (неплохой клавиатурный помощник, имеющий несколько плюсов по сравнению с программой keyman)
- wiz-mouse (прокрутка неактивных окон колесом мыши)
- screenshot captor
- pitaschio (заменена частично, позаимствован только такой функционал как "свернуть все окна при двойном клике на панели задач или на рабочем столе")
- clcl (полагаю, это лучший менеджер буфера обмена) (пока заменена частично, продолжаю искать нормальные варианты для полной замены)
- volumouse (на мой взгляд, лидер среди программ для удобнейшего регулирования звука) (правда, с ней пока попытки замены провалились)

по сути, единственное, что осталось - это полезнейший autoit-скрипт из данной темы

в настоящий момент не получается зарегистрироваться на autohotkey-форуме, поэтому попытаюсь приблизиться к решению вопроса здесь, на этом форуме

1) совсем не склонен так думать, но не может ли вдруг по-настоящему помочь вот это?: github.com/nimdahk/AU3toAHK
впрочем, мне пока не удались даже попытки попробовать в деле данный конвертер

2) реально ли подкорректировать весь функционал (вроде как однотипный) autoit-скрипта из данной темы, чтобы получился готовый и так же хорошо работающий autohotkey-скрипт?
3) или проще с самого начала создать autohotkeу-скрипт?
4) возможно ли вообще autohotkeу-средствами этот функционал воссоздать?
30
Общие вопросы по AutoIt / [Процессы] Поиск адреса базы по имени
« Последний ответ от roflror Отправлен Январь 16, 2019, 20:56:26 »
Engine.dll хранит базу с именем _pNetwork
Можно ли найти адрес базы по имени?

Код: AutoIt [Выделить]
#include <nomadmemory.au3>
#include <MemoryModuleGetBaseAddress.au3>

$ProcessID = ProcessExists("PPP.exe")
$EngineDllAddress = _MemoryModuleGetBaseAddress($ProcessID, 'Engine.dll')
 

Страницы: 1 2 [3] 4 5 ... 10