Страница: 1 |
Страница: 1 |
Вопрос: Помогите
Добавлено: 19.03.06 21:04
Автор вопроса: SL | ICQ: 277007669
почему когда я использую функции setwindowlong и getwindowlong (из user32.dll), а потом из kernel32.dll, например, openprocess, terminateprocess, getexitcodeprocess, винда напрочь виснет???
Private Sub Form_Initialize()
Dim ErrorCode, hWndForm, hWndLast, Length, PID, ExitCode As Long, WindowText As String
ErrorCode = SetWindowLong(FormLoad.hwnd, GWL_EXSTYLE, GetWindowLong(FormLoad.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
If ErrorCode = 0 Then GetError GetLastError
ErrorCode = SetLayeredWindowAttributes(FormLoad.hwnd, &HFF, 0, LWA_COLORKEY)
If ErrorCode = 0 Then GetError GetLastError
ErrorCode = SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_HIGHEST)
If ErrorCode = 0 Then GetError GetLastError
ErrorCode = SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS)
If ErrorCode = 0 Then GetError GetLastError
StartLoop:
hWndForm = GetWindow(Me.hwnd, GW_HWNDFIRST)
If hWndForm = 0 Then GetError GetLastError
hWndLast = GetWindow(Me.hwnd, GW_HWNDLAST)
If hWndLast = 0 Then GetError GetLastError
Do Until hWndForm = hWndLast
Length = GetWindowTextLength(hWndForm)
If Length < 4 Then GoTo EndLoop
WindowText = Space(Length)
ErrorCode = GetWindowText(hWndForm, WindowText, Length + 1)
If ErrorCode = 0 Then GetError GetLastError
If CharUpper(Left(WindowText, 4)) = CharUpper("Меню") Then
ErrorCode = GetWindowThreadProcessId(hWndForm, PID)
If ErrorCode = 0 Then GetError GetLastError
If GetCurrentProcessId = PID Then GoTo EndLoop
PID = OpenProcess(PROCESS_TERMINATE Or PROCESS_QUERY_INFORMATION, False, PID)
If PID = 0 Then GetError GetLastError
ErrorCode = GetExitCodeProcess(PID, ExitCode)
If ErrorCode = 0 Then GetError GetLastError
ErrorCode = TerminateProcess(PID, ExitCode)
If ErrorCode = 0 Then GetError GetLastError
End If
EndLoop:
Loop
End Sub
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
SL
ICQ: 277007669
Вопросов: 10
Ответов: 86
Профиль | | #1
Добавлено: 19.03.06 21:05
да, функция geterror возвращает текстовое описание ошибки
(она своя)
Номер ответа: 2
Автор ответа:
SL
ICQ: 277007669
Вопросов: 10
Ответов: 86
Профиль | | #2
Добавлено: 19.03.06 21:09
да, соответственно, описание всех функций в модуле есть
Номер ответа: 3
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #3
Добавлено: 20.03.06 10:38
Deadlock. Делаем слип в несколько мс.
Номер ответа: 4
Автор ответа:
SL
ICQ: 277007669
Вопросов: 10
Ответов: 86
Профиль | | #4
Добавлено: 20.03.06 14:31
нуна делать после SetWindowLong????
Номер ответа: 5
Автор ответа:
SL
ICQ: 277007669
Вопросов: 10
Ответов: 86
Профиль | | #5
Добавлено: 20.03.06 19:47
кажется, понял - нуна, чтобы ни какой ашипки не возникло....
если возникает - винда виснет напрочь!
Номер ответа: 6
Автор ответа:
SL
ICQ: 277007669
Вопросов: 10
Ответов: 86
Профиль | | #6
Добавлено: 20.03.06 19:48
да, On Error не помогает
Номер ответа: 7
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #7
Добавлено: 20.03.06 21:41
Form_load. И поменьше API
Номер ответа: 8
Автор ответа:
SL
ICQ: 277007669
Вопросов: 10
Ответов: 86
Профиль | | #8
Добавлено: 21.03.06 14:44
лана, пока работает...
если будут проблемы, скажу