Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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
лана, пока работает...
если будут проблемы, скажу:)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам