powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как в поток передать параметры из формы?
15 сообщений из 15, страница 1 из 1
Как в поток передать параметры из формы?
    #35962710
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте...подскажите пожалуйста Как в поток передать параметры из формы?
Поток в отдельном модуле...
Код: plaintext
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.
Option Explicit
Public Declare Function CreateThread Lib "kernel32" _
            (ByVal lpThreadAttributes As Any, _
            ByVal dwStackSize As Long, _
            ByVal lpStartAddress As Long, _
            lpParameter As Any, _
            ByVal dwCreationFlags As Long, _
            lpThreadID As Long) As Long

Public thread1 As Long

Public Sub Main()
    frmOutput.Show
End Sub

Public Sub ThreadPhoneSession()
Dim i As Integer
i =  100 
While i >  0 
'While (phoneSession.Opened)
  If (phoneSession.PhoneState <> PhoneState_Idle) Then
    writeNum '(phoneSession)
  End If
  i = i -  1 
Wend
End Sub
мне нужно передать phoneSession, который определяется в коде формы...помогите пожалуйста?
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963255
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну подскажите пожалуйста если знаете
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963313
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если phoneSession это объект, то при вызове CreateThread в lpParameter передаешь ObjPtr(phoneSession).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Sub ThreadPhoneSession(lPhoneState as Long)
Dim i As Integer
Dim phoneSession As MyClass
i =  100 
Set phoneSession = ObjFromPtr(lPhoneState)
While i >  0 
'While (phoneSession.Opened)
  If (phoneSession.PhoneState <> PhoneState_Idle) Then
    writeNum '(phoneSession)
  End If
  i = i -  1 
Wend
End Sub


Public Function ObjFromPtr(lObjPtr As Long) As Object
Dim LoTmp As Object
    If lObjPtr <>  0  Then
        CopyMemory LoTmp, lObjPtr,  4 
        Set ObjFromPtr = LoTmp
        CopyMemory LoTmp,  0 &,  4 
    End If
End Function
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963366
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо,вот только теперь ругается на ObjPtr(phoneSession) - object required
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963370
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy Если phoneSession это объект , то при вызове CreateThread в lpParameter передаешь ObjPtr(phoneSession).
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963380
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ещё что CopyMemory - sub of function not defined
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963450
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EmilRegisи ещё что CopyMemory - sub of function not definedКаждый начинающий VB-программист считает своим долгом написать многопоточную программу.
Почитай -ка сперва, рекомедую вторую ссылку. Может передумаешь.
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963486
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да я вот именно что очень начинающий в vb))
просто до этого на нём не писал,а сейчас нужно написать именно на нём,поэтому мне многое не понятно и код часто не компиллится,хотя на той же джаве или делфи например всё было бы отлично...например из формы пытаюсь в класс сохранить переменную а он мне не даёт почему то...и не понятно почему...

Но всё же не сочтите за труд,подскажите пожалуйста,что это за функция CopyMemory такая, и откуда её взять чтоб компиллятор не ругался?
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963551
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде разобрался...но один фиг вылетает по ошибке память не может быть read...
если отключаю Set threadparam = ObjPtr(phoneSession) то ошибки нет...то есть именно из-за этого вылетает...
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963568
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к слову phoneSession это компонент ActiveX
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963600
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем вам вообще какие-тио потоки?
вы под avaya пишите?
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963605
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто threadparam = ObjPtr(phoneSession), без set. ObjPtr возвращает Long.
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963633
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneзачем вам вообще какие-тио потоки?
вы под avaya пишите?Ну если кратко то суть в том что приложение цепляется к программе,ловящей звонки пользователей.и т.к. Нужно постоянно находиться в режиме ожидания звонка и при данном событии начинать его обработку,то используется бесконечный цикл,который без использования тредов вешает комп..вот собственно для этого и нужны мне потоки
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963653
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вы "цепляетесь к программе"?
может есть возможность использования событий этой программы.
все равно не понимаю проблему с потоками
...
Рейтинг: 0 / 0
Как в поток передать параметры из формы?
    #35963836
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EmilRegisда я вот именно что очень начинающий в vb))
просто до этого на нём не писал,а сейчас нужно написать именно на нёмЕсли нужны именно треды, то именно этот язык является худшим выбором для их реализации.

EmilRegisиспользуется бесконечный цикл,который без использования тредов вешает компЕсли он вешает комп без использования тредов, то гарантированно повесит и при использовании. Только в другом треде. А в цикл стоит добавить DoEvents. И вообще сделать из него сервис и не мучить треды.

Плюсую к вопросам Konst_One.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как в поток передать параметры из формы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]