Форум программистов, компьютерный форум, киберфорум
Комментарии
Войти
Регистрация
Восстановить пароль
Карта форума Блоги Сообщество Поиск Заказать работу  
  1. Старый комментарий
    Получить информацию о используемой памяти процесса
    Добрый день Анаталий!
    Спустя много времени, пример понадобился.
    И обнаружил, что он работает не корректно..
    Скрин https://www.cyberforum.ru/visu... st14221340
    Запись от kreotodr размещена 02.02.2020 в 10:01 kreotodr вне форума
  2. Старый комментарий
    "Hello world" в машинных кодах.
    Хорошая статья!
    Запись от Vladimir1982 размещена 03.01.2020 в 22:52 Vladimir1982 вне форума
  3. Старый комментарий
    Многопоточность в VB6 часть 4 - многопоточность в Standart EXE.
    При инициализации потока по данной технологии, если при вызове VBDllGetClassObject в качестве 3-го параметра использовать VarPtr(vbHeader), где VarPtr – встроенная функция VB, vbHeader – udt VB, содержащий модифицированную копию vb заголовка исполняемого файла. Модифицирован адрес стартовой функции lpSubMain, сброшен пятый бит для каждой формы. VBDllGetClassObject вызывается без проблем, функция на которую указывает поле lpSubMain вызывается, __vbaSetSystemError – вызывается без проблем. __vbaSetSystemError – без модификации. При завершении потока в функции ExitThread – ошибка Access violation when reading. Если для 3-го параметра функции VBDllGetClassObject убрать VarPtr и разметить Heap под vb заголовок – т.е. альтернативным путем выделить буфер и получить на него указатель, то исключение не генерируется, рантайм работает без видимых ошибок. Но функция VarPtr используется в обоих случаях в первой параметре, но для скалярной величины, т.е. при работе же со структурой возникает неявная ошибка.
    Запись от IDK размещена 17.11.2019 в 13:10 IDK вне форума
  4. Старый комментарий
    TrickControls
    Цитата:
    Сообщение от oplrox Просмотреть комментарий
    У меня не скачивается, проверил на трех браузерах, на двух рабочих местах с разными провайдерами.
    Вот видео-пруф с одного из них.
    Перезалил
    Запись от The trick размещена 08.11.2019 в 09:57 The trick вне форума
  5. Старый комментарий
    TrickControls
    Цитата:
    Сообщение от The trick Просмотреть комментарий
    Проверил, все работает.
    У меня не скачивается, проверил на трех браузерах, на двух рабочих местах с разными провайдерами.
    Вот видео-пруф с одного из них.
    Запись от oplrox размещена 07.11.2019 в 17:29 oplrox вне форума
  6. Старый комментарий
    TrickControls
    Цитата:
    Сообщение от oplrox Просмотреть комментарий
    The trick, пожалуйста обновите ссылку, загрузка архива с ошибкой.
    Проверил, все работает.
    Запись от The trick размещена 06.11.2019 в 17:28 The trick вне форума
  7. Старый комментарий
    TrickControls
    The trick, пожалуйста обновите ссылку, загрузка архива с ошибкой.
    Запись от oplrox размещена 06.11.2019 в 11:07 oplrox вне форума
  8. Старый комментарий
    Перехват событий мыши и клавиатуры в VB6
    Добрый день!

    Расширил ваш код под 64bit Excel, но происходит экстренное завершение Excel при выставлении brek point на функции LowLevelkbdProc, можете помочь разобраться в чем причина ?
    Код:
    Visual Basic
    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
    
    Option Explicit
     
    ' Модуль для перехвата событий ввода мыши и клавиатуры
    ' © Кривоус Анатолий Анатольевич (The trick), 2014
     
    Private Type KBDLLHOOKSTRUCT
        VkCode As Long
        ScanCode As Long
        flags As Long
        time As Long
        dwExtraInfo As Long
    End Type
     
    #If Win64 Then
        Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As LongPtr, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As LongPtr) As LongPtr
        Private Declare PtrSafe Function CallNextHookEx Lib "user32" (ByVal hHook As LongPtr, ByVal ncode As LongPtr, ByVal wParam As Integer, lParam As Any) As LongPtr
        Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As LongPtr) As LongPtr
    #Else
        Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
        Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Integer, lParam As Any) As Long
        Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    #End If
     
    Private Const WH_KEYBOARD_LL = 13
    Private Const HC_ACTION = 0
    Private Const LLKHF_INJECTED = &H10
    Private Const WM_KEYDOWN As Long = &H100
    Private Const WM_KEYUP As Long = &H101
    Private Const WM_SYSKEYDOWN As Long = &H104
    Private Const WM_SYSKEYUP As Long = &H105
     
    Dim mhWndVBE As LongPtr
     
    Dim hKeyHook As LongPtr, hMouseHook As LongPtr
     
    Public Sub Hook()
        hKeyHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelkbdProc, Application.HinstancePtr, 0)
        If hKeyHook = 0 Then MsgBox ("Keyboard hook error")
    End Sub
    Public Sub UnHook()
        If hKeyHook Then UnhookWindowsHookEx (hKeyHook): hKeyHook = 0
    End Sub
    ' Процедура перехвата сообщений клавиатуры
    Private Function LowLevelkbdProc(ByVal uCode As LongPtr, ByVal wParam As Long, lParam As KBDLLHOOKSTRUCT) As LongPtr
        If uCode = HC_ACTION Then
            Select Case wParam
            Case WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP
                Debug.Print KeyString(wParam) & _
                            "KeyCode: " & lParam.VkCode & _
                            " ScanCode: " & lParam.ScanCode & _
                            IIf(lParam.flags And LLKHF_INJECTED, "(inj)", vbNullString)
            End Select
        End If
        LowLevelkbdProc = CallNextHookEx(hKeyHook, uCode, wParam, lParam)
    End Function
     
    Private Function KeyString(WH As Long) As String
        Select Case WH
        Case WM_KEYDOWN: KeyString = "KeyDown:"
        Case WM_KEYUP: KeyString = "KeyUp:"
        Case WM_SYSKEYDOWN: KeyString = "KeySysDown:"
        Case WM_SYSKEYUP: KeyString = "KeySysUp:"
        End Select
    End Function
    Запись от art1289 размещена 07.08.2019 в 09:22 art1289 вне форума
  9. Старый комментарий
    Выбор директорий
    И всё-таки не допонял
    В привычных мне вариантах было так (типа):
    Visual Basic
    1
    
    Public Function BrowseForFolder(owner As Form, Title As String, StartDir As String) As String
    и из формы я вызывал эту функцию с аргументами:
    Visual Basic
    1
    
    strSelectedFolder = BrowseForFolder(Me, "Select A Directory", "N:\Visual Basic\! My VB progs\PicCut Pics")
    здесь же у вас:
    Visual Basic
    1
    
    Public Function PickFolder() As String
    И вызов:
    Visual Basic
    1
    
    modGetOpenFolder.PickFolder
    всё без аргументов

    как задаются при вызове различные параметры – надписи и прочее (больше всего интересует задание стартовой директории)?

    Вот здесь я-то вижу что есть всё, относящееся к этой проблеме, но как задать/считать эти данные я не понимаю:
    Visual Basic
    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
    
    Private Type OPENFILENAME
        lStructSize As Long
        hwndOwner As Long
        hInstance As Long
        lpstrFilter As String
        lpstrCustomFilter As String
        nMaxCustFilter As Long
        nFilterIndex As Long
        lpstrFile As String
        nMaxFile As Long
        lpstrFileTitle As String
        nMaxFileTitle As Long
        lpstrInitialDir As String
        lpstrTitle As String
        Flags As Long
        nFileOffset As Integer
        nFileExtension As Integer
        lpstrDefExt As String
        lCustData As Long
        lpfnHook As Long
        lpTemplateName As String
        pvReserved As Long
        dwReserved As Long
        FlagsEx As Long
    End Type
    Запись от giaber размещена 05.06.2019 в 13:17 giaber вне форума
  10. Старый комментарий
    Выбор директорий
    Ну не идиот, а? Ни хрена не объявил, а надеюсь получить работоспособность кода! Дебил, бл...

    Всё, Анатолий, отбой. Всё получилось. Извините за беспочвенное беспокойство.

    Visual Basic
    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
    
    Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
    Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hWnd As Long, ByRef lpRect As RECT) As Long
    Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    '
    Private Const HWND_TOPMOST = -1
    Private Const HWND_NOTOPMOST = -2
    Private Const SWP_NOSIZE = &H1
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_NOZORDER = &H4
    Private Const SWP_NOREDRAW = &H8
    Private Const SWP_NOACTIVATE = &H10
    Private Const SWP_FRAMECHANGED = &H20
    Private Const SWP_SHOWWINDOW = &H40
    Private Const SWP_HIDEWINDOW = &H80
    Private Const SWP_NOCOPYBITS = &H100
    Private Const SWP_NOOWNERZORDER = &H200
    '
    '
    Dim tRec          As RECT
    Dim lX As Long
    Dim lY As Long
    '
    'Позиционируем ==================================================
    GetWindowRect hwndDlg, tRec
    lX = (Screen.Width / Screen.TwipsPerPixelX - (tRec.Right - tRec.Left)) \ 2
    lY = (Screen.Height / Screen.TwipsPerPixelY - (tRec.Bottom - tRec.Top)) \ 2
    SetWindowPos hwndDlg, 0, lX, lY, 0, 0, SWP_NOOWNERZORDER Or SWP_NOSIZE
    '==============================================================
    Запись от giaber размещена 05.06.2019 в 12:30 giaber вне форума
  11. Старый комментарий
    Выбор директорий
    Нет, пока не получилось...

    Что такое tRc? Пишет "Variable not defined"
    В коде нигде такого нет, функцию объявил так:
    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    
    Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
    Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    пытался тупо методом тыка заменять tRc.iRight и остальные на lpRect.Right не помогает.
    Запись от giaber размещена 05.06.2019 в 12:04 giaber вне форума
  12. Старый комментарий
    Выбор директорий
    БОЛЬШОЕ спасибо, Анатолий! Перехожу на ваш вариант
    Запись от giaber размещена 05.06.2019 в 11:30 giaber вне форума
  13. Старый комментарий
    Выбор директорий
    Цитата:
    Сообщение от giaber Просмотреть комментарий
    Анатолий, здравствуйте!
    Очередной раз приношу извинения за нубский вопрос.
    Как отцентровать на экране ваше диалоговое окно?
    здесь задаётся позиция

    Visual Basic
    1
    
    SetWindowPos hwndDlg, 0, 500, 100, 0, 0, SWP_NOSIZE Or SWP_NOZORDER
    это понятно, но как сделать по аналогии с:
    Visual Basic
    1
    2
    
     (Screen.Height - Form1.Height) / 2
     (Screen.Width- Form1.Width) / 2
    Спасибо!

    Георгий (на форуме - giaber)
    Здравствуйте.
    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
                Case CDN_INITDONE
                   
                    ...
                    
                    GetWindowRect hwndDlg, tRc
                    
                    lX = (Screen.Width / Screen.TwipsPerPixelX - (tRc.iRight - tRc.iLeft)) \ 2
                    lY = (Screen.Height / Screen.TwipsPerPixelY - (tRc.iBottom - tRc.iTop)) \ 2
                    
                    SetWindowPos hwndDlg, 0, lX, lY, 0, 0, SWP_NOOWNERZORDER Or SWP_NOSIZE
    Запись от The trick размещена 05.06.2019 в 11:19 The trick вне форума
  14. Старый комментарий
    Выбор директорий
    Анатолий, здравствуйте!
    Очередной раз приношу извинения за нубский вопрос.
    Как отцентровать на экране ваше диалоговое окно?
    здесь задаётся позиция

    Visual Basic
    1
    
    SetWindowPos hwndDlg, 0, 500, 100, 0, 0, SWP_NOSIZE Or SWP_NOZORDER
    это понятно, но как сделать по аналогии с:
    Visual Basic
    1
    2
    
     (Screen.Height - Form1.Height) / 2
     (Screen.Width- Form1.Width) / 2
    Спасибо!

    Георгий (на форуме - giaber)
    Запись от giaber размещена 05.06.2019 в 01:00 giaber вне форума
  15. Старый комментарий
    PNG/ICO/CUR/ANI изображения в стандартных контролах VB6.
    3.02.2019
    Обновление.
    Добавлена поддержка 32 битных иконок с альфаканалом, курсоров и анимированных курсоров.
    Запись от The trick размещена 03.02.2019 в 15:05 The trick вне форума
  16. Старый комментарий
    PNG/ICO/CUR/ANI изображения в стандартных контролах VB6.
    Цитата:
    Сообщение от Dragokas Просмотреть комментарий
    Очень круто! Громадная работа проделана.

    Напомни, пожалуйста, как правильно устанавливать Add-in?
    Спасибо. Можно либо просто открыть проект Add-in'а и перекомпилировать его, либо зарегистрировать уже скомпилированную VbPngAddIn.dll через Regsvr32. Это обычная ActiveX Dll.
    Запись от The trick размещена 24.01.2019 в 16:56 The trick вне форума
  17. Старый комментарий
    Аватар для Dragokas
    PNG/ICO/CUR/ANI изображения в стандартных контролах VB6.
    Очень круто! Громадная работа проделана.

    Напомни, пожалуйста, как правильно устанавливать Add-in?
    Запись от Dragokas размещена 24.01.2019 в 01:34 Dragokas вне форума
  18. Старый комментарий
    3D елка на рабочий стол
    Цитата:
    Сообщение от Ganter Просмотреть комментарий
    А весь код или проект можешь скинуть пожалуйста, очень интересно как это реализовано.
    Проект прикреплен в стартовом посте.
    Запись от The trick размещена 15.12.2018 в 23:49 The trick вне форума
  19. Старый комментарий
    3D елка на рабочий стол
    А весь код или проект можешь скинуть пожалуйста, очень интересно как это реализовано.
    Запись от Ganter размещена 15.12.2018 в 22:43 Ganter вне форума
  20. Старый комментарий
    3D елка на рабочий стол
    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    Мм... а исходники то где?
    В архиве
    Запись от The trick размещена 11.12.2018 в 13:17 The trick вне форума
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru