Да конечно, вроде не проблема, есть функция TerminateThread. Не тут-то было. Я провел наверно сегодня часов 6 в поисках решения. Если пользоваться TerminateThread, то приложение, запущенное из VB просто виснет и все, то есть форма исчезает, а сама программа остается в памяти. Думая об этом, я закачал несколько примеров с интернета, например от Philipp Weidmann. Но эффект тот же. Может что-то и с Windows 2000, только пришел я к простому выводу, все нормально только в том случае, если поток заканчивается сам собой, то есть путем выхода из функции потока. Значит все просто, не нужно силой прерывать поток, нужно просто заставить его закончиться самому. Делаем кнопку Terminate:
В модуле переменную x делаем публичную:
Public x As Long Public Const CREATE_SUSPENDED = &H4 ........
А вот по Terminate или при закрытии формы присваиваем ей максимальное значение, что приводит к завершению потока естественным способом.
Private Sub Command1_Click() x = 100000 End Sub Private Sub Form_Unload(Cancel As Integer) Command1_Click End Sub
В данный момент все срабатывает, как положено, без зависаний. Очень надеюсь увидеть Ваши замечания по этому вопросу.