-
Получить информацию о используемой памяти процессаДобрый день Анаталий!
Спустя много времени, пример понадобился.
И обнаружил, что он работает не корректно..
Скрин https://www.cyberforum.ru/visu... st14221340Запись от kreotodr размещена 02.02.2020 в 10:01 -
"Hello world" в машинных кодах.Хорошая статья!
Запись от Vladimir1982 размещена 03.01.2020 в 22:52 -
Многопоточность в 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 -
TrickControlsЦитата:У меня не скачивается, проверил на трех браузерах, на двух рабочих местах с разными провайдерами.
Вот видео-пруф с одного из них.Запись от The trick размещена 08.11.2019 в 09:57 -
TrickControlsУ меня не скачивается, проверил на трех браузерах, на двух рабочих местах с разными провайдерами.
Вот видео-пруф с одного из них.Запись от oplrox размещена 07.11.2019 в 17:29 -
Запись от The trick размещена 06.11.2019 в 17:28 -
TrickControlsThe trick, пожалуйста обновите ссылку, загрузка архива с ошибкой.
Запись от oplrox размещена 06.11.2019 в 11:07 -
Перехват событий мыши и клавиатуры в 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 -
Выбор директорийИ всё-таки не допонял
В привычных мне вариантах было так (типа):
и из формы я вызывал эту функцию с аргументами: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 -
Выбор директорийНу не идиот, а? Ни хрена не объявил, а надеюсь получить работоспособность кода! Дебил, бл...
Всё, Анатолий, отбой. Всё получилось. Извините за беспочвенное беспокойство.
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 -
Выбор директорийНет, пока не получилось...
Что такое tRc? Пишет "Variable not defined"
В коде нигде такого нет, функцию объявил так:
пытался тупо методом тыка заменять tRc.iRight и остальные на lpRect.Right не помогает.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
Запись от giaber размещена 05.06.2019 в 12:04 -
Выбор директорийБОЛЬШОЕ спасибо, Анатолий! Перехожу на ваш вариант
Запись от giaber размещена 05.06.2019 в 11:30 -
Выбор директорийЦитата:Анатолий, здравствуйте!
Очередной раз приношу извинения за нубский вопрос.
Как отцентровать на экране ваше диалоговое окно?
здесь задаётся позиция
это понятно, но как сделать по аналогии с: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 -
Выбор директорийАнатолий, здравствуйте!
Очередной раз приношу извинения за нубский вопрос.
Как отцентровать на экране ваше диалоговое окно?
здесь задаётся позиция
это понятно, но как сделать по аналогии с: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 -
PNG/ICO/CUR/ANI изображения в стандартных контролах VB6.3.02.2019
Обновление.
Добавлена поддержка 32 битных иконок с альфаканалом, курсоров и анимированных курсоров.Запись от The trick размещена 03.02.2019 в 15:05 -
PNG/ICO/CUR/ANI изображения в стандартных контролах VB6.Спасибо. Можно либо просто открыть проект Add-in'а и перекомпилировать его, либо зарегистрировать уже скомпилированную VbPngAddIn.dll через Regsvr32. Это обычная ActiveX Dll.
Запись от The trick размещена 24.01.2019 в 16:56 -
PNG/ICO/CUR/ANI изображения в стандартных контролах VB6.Очень круто! Громадная работа проделана.
Напомни, пожалуйста, как правильно устанавливать Add-in?Запись от Dragokas размещена 24.01.2019 в 01:34 -
Запись от The trick размещена 15.12.2018 в 23:49 -
3D елка на рабочий столА весь код или проект можешь скинуть пожалуйста, очень интересно как это реализовано.
Запись от Ganter размещена 15.12.2018 в 22:43 -
Запись от The trick размещена 11.12.2018 в 13:17