|
0 / 0 / 0
Регистрация: 05.11.2008
Сообщений: 9
|
||||||
Создание потока в DLL17.11.2008, 20:54. Показов 10977. Ответов 10
Метки нет (Все метки)
Приветствую всех.
В системе стартует DLL (с помощью ключей windows). То что она стартует, проверено выводом окна MessageBox. Теперь я хочу в этой DLL создать поток и пишу код:
0
|
||||||
| 17.11.2008, 20:54 | |
|
Ответы с готовыми решениями:
10
Создание потока из DLL Создание потока в DLL
|
|
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
|
| 18.11.2008, 18:24 | |
|
Насколько я понял из хелпа, нельзя создать поток во время инициализации DLL. Возможно, я неправильно понял хелп.
0
|
|
|
12 / 12 / 0
Регистрация: 08.10.2008
Сообщений: 105
|
|||||||
| 18.11.2008, 20:59 | |||||||
|
Во первых: код создания потока надо перенести в другую функцию, процедуру инициализации надо оставить в покое. Во вторых: эта функция (где создается поток) должна экспортироваться и видна снаружи библиотеки В третьих: вы должны после создания потока, создать обьект события Event (к примеру) который будет сигнализировать что запущеный поток завершился (с помощью wait-функции). В четвертых: перед завершением процедуры, выполняемой в другом потоке, нужно усановить ивент в сигнальное положение (чтоб wait-функция сработала). Фишка в том, что если не использовать wait-функцию (или другой способ синхронизации) то созданный вами поток завершится вместе с завершением создавшей его процедуры (так как в этот момент умирает весь процесс). Что бы все что я написал выше стало хоть немного понятнее приведу код на PowerBasic:
0
|
|||||||
|
0 / 0 / 0
Регистрация: 05.11.2008
Сообщений: 9
|
||||||
| 19.11.2008, 15:09 [ТС] | ||||||
|
Допустим вы правы, тогда как объяснить следующий код:
DLL эта стартовала при запуске windows, с помощью ключей реестра. И все в ней прекрасно работает, и запись в реестр, и сообщения выскакивают. Как тогда объяснить этот случай?. Код разрабатывался в XP (как и сейчас), а работает он в XP и в win2000.
0
|
||||||
|
12 / 12 / 0
Регистрация: 08.10.2008
Сообщений: 105
|
|
| 19.11.2008, 18:11 | |
|
А что тут объяснять? .Nikita, из вашего первого поста я понял что вы библеотечку запускаете так же как я, используя rundll32. Так вот в этом случае работать не будет не первый, не второй преведенный вами код. Если поместить запись в ключике реестра, в котром содержаться имена библиотек которые будут подгружаться во все запускаемые процессы (не помню как такой ключик называется, но узнать не сложно), то приведенный код будет работать и запускать поток.
А как вы запускаете вашу dll, с помощью какого ключа реестра?
0
|
|
|
0 / 0 / 0
Регистрация: 05.11.2008
Сообщений: 9
|
||
| 19.11.2008, 18:39 [ТС] | ||
|
Я писал в первом посту:
Библиотеку запускаю именно так как ты сказал, ключиком реестра во все процессы. Попробовал я запустить функцию (в том месте где запуск потока) и в этой функции создать поток, но результат тот же. Функция запускается (вывожу там MessageBox), а вот поток нет. И никак не пойму в чем дело. Кучу инфы перечитал, тщетно.
0
|
||
|
12 / 12 / 0
Регистрация: 08.10.2008
Сообщений: 105
|
||
| 20.11.2008, 18:31 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 05.11.2008
Сообщений: 9
|
|
| 21.11.2008, 11:56 [ТС] | |
|
В том то и дело что hThread отличен от NULL. Ноя все равно вызывал GetLastError и она мне выдавала Опереция успешно завершена.
0
|
|
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
||
| 21.11.2008, 22:04 | ||
|
Потоки можно создавать при инициализации dll
0
|
||
|
1 / 0 / 0
Регистрация: 16.05.2010
Сообщений: 36
|
|
| 06.12.2017, 00:13 | |
|
столкнулся с тойже проблемой, кто нибудь знает решение?
0
|
|
|
Maniac
|
|||
| 06.12.2017, 00:59 | |||
|
Dynamic-Link Library Best Practices
0
|
|||
| 06.12.2017, 00:59 | |
|
Помогаю со студенческими работами здесь
11
Создание .dll и присоеденение .dll к проекту путем непосредственного написания кода bass.dll Кодировка потока Реализовать два потока (Thread) в DLL Изменение частоты потока в BASS.DLL Перегрузка потока ввода вывода в dll Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|