powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / окно, панель задач, трей.
89 сообщений из 89, показаны все 4 страниц
окно, панель задач, трей.
    #37288149
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы было проще, спрошу про конкретный пример. На моём компьютере открываются 2 окна скайпа. у одного окна название "skype - 1", у другого "Skype - 2" Нужно, чтобы "Skype - 2":
1) не открывал своё окно(если открыл - закрыть, но не процесс, а только окно). при этом чтобы "Skype - 1" работал нормально.
2) убрать\удалить\скрыть значок "Skype - 2".
3) скрыть окно "Skype - 2" в приложениях (не обязательно)
Известны имена окон скайпа(неполные: "блаблаблаskypeбла - 1", расположение skype.
В итоге Skype (второй) должен работать невидимо. Заранее пасяп
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288181
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
Глухой слышал, как немой рассказывал, что слепой видел, как хромой быстро-быстро бежал
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288185
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашёл на этом форуме код(рабочииий!:), но остаётся сложность: я не знаю полное имя(вернее не в состоянии написать) скайпа. вот найденный код
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

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

Const WM_CLOSE = &H10

Private Sub Form_Load()
Dim lngHwnd As Long
Dim lngReturn As Long
lngHwnd = FindWindow(vbNullString, "Безымянный - Блокнот")
If lngHwnd <> 0 Then
lngReturn = PostMessage(lngHwnd, WM_CLOSE, 0&, 0&)
End If
End Sub
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288190
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ я сомневаюсь, что это лишь закрывает окно, а не убивает весь процесс
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288196
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

Вся Windows на сообщениях, в принципе построена.
ЗРЯ сомневаешься.
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288203
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробую упростить задачу...
1) как закрыть окно программы по фрагменту его имени
2) скрыть значок в трее
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288223
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroскрыть значок в трее

Каким образом ты отобоажаешь "значок в трее"?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288227
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

я не отображаю. но если у тя есть скайп(99%), то при запуске винды в правом нижнем углу у тя появляется зелёный круглый значок с галочкой. его нуно убрать програмно
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288239
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZerotimtim,

я не отображаю. но если у тя есть скайп(99%), то при запуске винды в правом нижнем углу у тя появляется зелёный круглый значок с галочкой. его нуно убрать програмно
А если нет скайпа и "зелёный круглый значок с галочкой" отсутствует?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288248
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

тогдапредставь скайп в воображении) нуно BelowZero1) закрыть окно программы по фрагменту его имени
2) скрыть значок в трее
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288261
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot BelowZero]timtim,

Процесс, окно, значок в трее - кого надо то?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288269
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

закрыть процесс (код чуть выше, но закрывает по полному имени, а у меня только кусок имени). убрать значок из треи. процесс не трогать
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288273
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

С этим знаком Shell_NotifyIcon?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288274
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

неа...
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288281
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
Прошерсти данную функцию тогда и запости результаты шерстения твоего в виде кода.
Иначе отстёгивай!
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288333
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДля удаления иконки вы должны знать ее ID и дескриптор окна-обработчика сообщений.
Для удаления иконки с Tray надо вызвать функцию Shell_NotifyIcon() с параметром NIM_DELETE и указателем на экземпляр структуры NOTIFYICONDATA, у которого должны быть заполнены следующие поля: cbSize, hWnd, uID ....................эхъ...
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288339
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero....................эхъ...
не сс ы!
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288347
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

Погружайся в Win API
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288360
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero1) как закрыть окно программы по фрагменту его имени
Разбирайся, давно и не глядя пользуюсь вот этим. Хотя счас глянул и вижу неточности с true/false as long но это ерунда.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
Public TargetName As String
Public TargetHwnd As Long

Sub KillProga(proga As String)
    Do
        TargetName = proga
        TargetHwnd =  0 
        ' Examine the window names.
        EnumWindows AddressOf WindowEnumerator,  0 
        ' See if we got an hwnd.
        If TargetHwnd =  0  Then
            Exit Do
        Else
            EndTask (TargetHwnd)
        End If
    Loop
End Sub

' Return False to stop the enumeration.
Public Function WindowEnumerator(ByVal app_hwnd As Long, _
    ByVal lParam As Long) As Long
Dim buf As String *  256 
Dim Title As String
Dim length As Long

    ' Get the window's title.
    length = GetWindowText(app_hwnd, buf, Len(buf))
    Title = Left$(buf, length)

    ' See if the title contains the target.
    If InStr(Title, TargetName) >  0  Then
        ' Save the hwnd and end the enumeration.
        TargetHwnd = app_hwnd
        WindowEnumerator = False
    Else
        ' Continue the enumeration.
        WindowEnumerator = True
    End If
End Function

Function EndTask(TargetHwnd As Long) As Long
    
    Dim rc As Integer
    Dim ReturnVal As Integer
'    If TargetHwnd = Form1.hwnd Or GetWindow(TargetHwnd, _
'        GW_OWNER) = Form1.hwnd Then
'        End
'    End If
    If IsWindow(TargetHwnd) = False Then
        GoTo EndTaskFail
    End If
    If (GetWindowLong(TargetHwnd, GWL_STYLE) _
        And WS_DISABLED) Then
        GoTo EndTaskSucceed
    End If
    
    'Close the window
    If IsWindow(TargetHwnd) Then
        If Not (GetWindowLong(TargetHwnd, GWL_STYLE) _
        And WS_DISABLED) Then
        rc = PostMessage(TargetHwnd, WS_CANCELMODE,  0 ,  0 &)
        rc = PostMessage(TargetHwnd, WM_CLOSE,  0 ,  0 &)
         DoEvents
        End If
    End If
    GoTo EndTaskSucceed
    
EndTaskFail:
    ReturnVal = False
    GoTo EndTaskEndSub
EndTaskSucceed:
    ReturnVal = True
EndTaskEndSub:
    EndTask = ReturnVal
End Function

А вообще есть штатная утилита виндов,забыл точное имя, которая грохает процесс по имени (м.б. и по неполному).
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288366
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раздобыл код, работающий с треем. добавляет, меняет, удаляет себя из трея кому интересно смотрите
Option Explicit
Private Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Integer
Private Const NIM_ADD = 0
Private Const NIM_MODIFY = 1
Private Const NIM_DELETE = 2
Private Const NIF_MESSAGE = 1
Private Const NIF_ICON = 2
Private Const NIF_TIP = 4
Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_MBUTTONDOWN = &H207
Private Const WM_MBUTTONUP = &H208
Private Const WM_MBUTTONDBLCLK = &H209
Private Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Public Function SetTrayIcon(Mode As Long, hWnd As Long, Icon As Long, tip As String) As Long
Dim nidTemp As NOTIFYICONDATA
nidTemp.cbSize = Len(nidTemp)
nidTemp.hWnd = hWnd
nidTemp.uID = 0&
nidTemp.uFlags = NIF_ICON Or NIF_TIP
nidTemp.uCallbackMessage = 0&
nidTemp.hIcon = Icon
nidTemp.szTip = tip & Chr$(0)
SetTrayIcon = Shell_NotifyIconA(Mode, nidTemp)
End Function



Private Sub picNotifier_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Îáðàáîòêà ñîáûòèé
Static Rec As Boolean, Msg As Long
Msg = X / Screen.TwipsPerPixelX
If Rec = False Then ' ×òîá íå ïîâòîðÿòü Çàïóñê
Rec = True
Select Case Msg
'Åñëè DoubleClick
Case WM_LBUTTONDBLCLK:
Me.Show
'Åñëè ëåâàÿ Êíîïêà íàæàòà
Case WM_LBUTTONDOWN:
'Åñëè ëåâàÿ Êíîïêà Îòæàòà
Case WM_LBUTTONUP:
'Ïðàâàÿ êíîïêà Click
Case WM_RBUTTONDBLCLK:
'Åñëè Ïðàâàÿ Êíîïêà íàæàòà
Case WM_RBUTTONDOWN:
'Åñëè Ïðàâàÿ Êíîïêà Îòæàòà
Case WM_RBUTTONUP:
' Çäåñü âû ìîæåòå âûçâàòü PoPup-ìåíþ:
' PopupMenu mnuPopMenu
End Select
Rec = False
End If
End Sub
' Äîáàâèòü èêîíêó ôîðìû â traybar
' SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Test"
' Èçìåíèòü èêîíêó è tooltip
'SetTrayIcon NIM_MODIFY, Me.hWnd, Me.Icon, "It works!"
' Óäàëèòü èêîíêó èç traybar'a
'SetTrayIcon NIM_DELETE, Me.hWnd, 0&, ""
Private Sub Command1_Click()
SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Test"
End Sub
Private Sub Command2_Click()
SetTrayIcon NIM_MODIFY, Me.hWnd, Me.Icon, "It works!"
End Sub
Private Sub Command3_Click()
SetTrayIcon NIM_DELETE, Me.hWnd, 0&, ""
End Sub
.
чтобы удалить скайп из трея можно SetTrayIcon NIM_DELETE, Me.hWnd, 0&, "" но теперь как узнать hWnd скайпа и какой-то дескриптор.... ааааа програмирование не для слабонервных...
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288368
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot BelowZero]автор Для удаления иконки с Tray надо вызвать функцию Shell_NotifyIcon() с параметром NIM_DELETE и указателем на экземпляр структуры NOTIFYICONDATA
Иконка из трея не удалится в любом случае пока не обновишь сам трей!
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288379
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

спс за код, пока что не получается (пробую закрыть болкнот). буду завтра ломать голову
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288394
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroбуду завтра ломать голову
сообщения....Only
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288403
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroДмитрий77,
(пробую закрыть болкнот). буду завтра ломать голову
killproga "Безымянный"
killproga "Блокнот"

А вот ни б ол кнот, ни notepad вы так не закроете. Оно смотрит на заголовок окна
Instr ("слово", "есть такое слово там")
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288404
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimBelowZeroбуду завтра ломать голову
сообщения....Only
? не понял
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288416
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наберите в справке Win слово Taskkill (тока без ашшибак)
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288424
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,пробовал заменять
TargetName = proga на TargetName = Блокнот или тупо вставлять
Private Sub Form_Load()
KillProga "Блокнот"
End Sub
Но после 14 часов за кодами мозг уже едэээээт
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37288437
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

Синий код!
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37289231
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

не понял... что синий код?) в чём мораль?)
vb6 ругается на чатсь кода EnumWindows AddressOf WindowEnumerator, 0 invalide use of AddressOf Operator. возможно(наверно, скорее всего) я что-то не так делаю. не могу закрыть блокнот
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37289319
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroне понял... что синий код?) в чём мораль?)
как положено код оформить не судьба что ли?
и поиск по форуму не работает у тебя?
Как закрыть приложение?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37289383
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimBelowZeroне понял... что синий код?) в чём мораль?)
как положено код оформить не судьба что ли?
и поиск по форуму не работает у тебя?
Как закрыть приложение?
я читал этот топик перед созданием своего. в этом топика первый код закрывает окно только по полному имени.
Другой код у меня не идёт хз почему(он приложен выше Дмитрием). остальные коды в топике кикают процесс, а этого мне не нуно.
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37289799
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZerovb6 ругается на чатсь кода EnumWindows AddressOf WindowEnumerator, 0 invalide use of AddressOf Operator. возможно(наверно, скорее всего) я что-то не так делаю.
Ну, батенька...Естественно код выдран из контекста (рабочего) как есть и выписыванием констант и API-деклараций я себя не утруждал. Или прикажете вам отдельным проектом все оформить? Да, я крайнее время часто выкладываю готовые (причем неплохие и имеющие некоторую ценность) тесты, но делаю это когда мне нужно , и чтобы не напрягать сильно здесь присутствующих (и ничем мне не обязанных людей) сложными вопросами (простые вопросы как бы сам решаю). А в данном случае, после вашего хвастовства в соседнем топике, и этого то куска выкладывать не хотелось.
timtimBelowZero,
Прошерсти ...и запости результаты шерстения твоего в виде кода.
Иначе отстёгивай!Вот здесь абсолютно солидарен.
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37289823
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroя читал этот топик перед созданием своего. в этом топика первый код закрывает окно только по полному имени.
Другой код у меня не идёт хз почему(он приложен выше Дмитрием). остальные коды в топике кикают процесс, а этого мне не нуно.
Гы... Он ( не по полному имени) оказывается приложен Дмитрием в том самом топике 3 года назад.
Вот поэтому и не брезгую опубликовать свое решение, когда я его нашел. (Вот и пример "cам с собой").
Форум это как бы БД, у себя давно забыл где это, а на форуме порой быстро находишь собственный код/решение.

Т.е. вы один раз нашли, второй раз вам выложили, и все не можете разобраться.
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290010
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

если бы смог 1 раз разобраться, создавать тему не стал бы. мои вопросы на форуме, возможно(наверняка), самые элементарные и глупые, при этом у них свыше 8 тысяч просмотров. из них 100 про, которые помогали в решении вопроса. значит почти 8000 человек также не смогли разобраться в первом коде(видно по комментам: "код не рабочий" и тд) и ищут по топикам решение интересующего их вопроса. так как с каждым днём количество просмотров этой темы растёт, значит ещё пара тысяч человек ищут, как всё-таки закрыть окно по неполному имени
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290068
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77BelowZerovb6 ругается на чатсь кода EnumWindows AddressOf WindowEnumerator, 0 invalide use of AddressOf Operator. возможно(наверно, скорее всего) я что-то не так делаю.
Ну, батенька...Естественно код выдран из контекста (рабочего) как есть и выписыванием констант и API-деклараций я себя не утруждал. Или прикажете вам отдельным проектом все оформить? Да, я крайнее время часто выкладываю готовые (причем неплохие и имеющие некоторую ценность) тесты, но делаю это когда мне нужно , и чтобы не напрягать сильно здесь присутствующих (и ничем мне не обязанных людей) сложными вопросами (простые вопросы как бы сам решаю). А в данном случае, после вашего хвастовства в соседнем топике, и этого то куска выкладывать не хотелось.
timtimBelowZero,
Прошерсти ...и запости результаты шерстения твоего в виде кода.
Иначе отстёгивай!Вот здесь абсолютно солидарен.
сложность в том, что уже есть
Код: plaintext
1.
Public Function WindowEnumerator(ByVal app_hwnd As Long, _
    ByVal lParam As Long) As Long
поэтому пока не догоняю, как ещё задекларировать
Код: plaintext
AddressOf WindowEnumerator
. пока безуспешно путешествую по похожим топикам
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290175
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

если написать самому тратить время на написание кода я бы ещё понял но у вас есть готовые строчки констант и деклараций к коду, но вы не можете их предоставить Дмитрий77делаю это когда мне нужно из-за личной неприязни а именно Дмитрий77вашего хвастовства в соседнем топике. круть... особенно радует Дмитрий77и этого то куска выкладывать не хотелось
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290178
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
Что конкретно не получается?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290184
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
закрыть чужое окно по фрагменту имени этого окна
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290188
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroзакрыть чужое окно по фрагменту имени этого окна
я так понял по полному имени можете??
а узнать количество окон можете?? или только циклом??
узнать имя этих окон можете??
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290191
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

могу закрыть по полному имени. узнать количество открытых окон и их имена(а в последствии сравнить фрагмент имени и полученные имена, выбрать нужное, закрыть выбранное окно) не могу...
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290198
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroзакрыть чужое окно по фрагменту имени этого окна
Как ты перебераешь окна?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290200
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero, написали по не русски

закрыть по полному имени могу

узнать количество открытых окон и их имена(а в последствии сравнить фрагмент имени и полученные имена, выбрать нужное, закрыть выбранное окно) не могу...

Так что ли???
И что Вы не набрели на топик где мне на винограде всё дали, чуть попозже помогу
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290210
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

да, грустно сознавать, но я могу лишь переделать знакомую часть готового кода, переписать под свои нужды, сам написать не в силах(впервые встречаюсь с работой с чужими окнами).т.к. не попался готовый работоспособный код, то, хотя я знаю, какие действия нужно выполнить, написать на языке vb то, с чем работаю впервые, не в силах.
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290219
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
$
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290220
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

сколько? способ оплаты?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290223
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
Что необходимо сделать?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290226
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

1) программа должно закрывать чужое окно, в какой бы момент оно не окрылось или уже было открыто
2) убирать значок этой посторонней программы из трея, в какой бы момент значок не был добавлен или уже был добавлен
3) скрывать приложение этой чужой программы в диспетчере задач
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290241
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
Бюджет какой?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290252
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroно у вас есть готовые строчки констант и деклараций к коду, но вы не можете их предоставить
Они могут быть разбросаны по проекту и чтобы заработало надо делать чистый тестовый проект и искать декларацию/определение того, на что ругается.
Понятно, что я бы искал в своем рабочем проекте, но есть еще google, в кот. можно набрать например:
"Declare EnumWindows VB6"
и получить ответ в верхних 3-х ссылках.

Код: plaintext
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

С C++ на VB6 никогда переводить не пытались. Там API и константы на блюдечке в нужном виде не лежат и остается только google.

>сложность в том, что уже есть
>Public Function WindowEnumerator(ByVal app_hwnd As Long, _
> ByVal lParam As Long) As Long
>поэтому пока не догоняю, как ещё задекларировать

А ее не надо декларировать, это не API и я ее вам привел полностью, а ели есть другая WindowEnumerator (ваша, где-то без понимания нарытая и вставленная в проект), то можно переименовать мою в WindowEnumerator_1 например. И вообще, сделайте сначала пустой тестовый проект, вставьте туда мои 3 ф-ции и разбирайтесь. А то у вас похоже бардак полный.
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290264
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
Public TargetName As String
Public TargetHwnd As Long
Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Sub KillProga(proga As String)
    Do
        TargetName = proga
        TargetHwnd =  0 
        ' Examine the window names.
        EnumWindows [color=red]AddressOf WindowEnumerator[/color],  0 
        ' See if we got an hwnd.
        If TargetHwnd =  0  Then
            Exit Do
        Else
            EndTask (TargetHwnd)
        End If
    Loop
End Sub

' Return False to stop the enumeration.
Public Function WindowEnumerator(ByVal app_hwnd As Long, _
    ByVal lParam As Long) As Long
Dim buf As String *  256 
Dim Title As String
Dim length As Long

    ' Get the window's title.
    length = GetWindowText(app_hwnd, buf, Len(buf))
    Title = Left$(buf, length)

    ' See if the title contains the target.
    If InStr(Title, TargetName) >  0  Then
        ' Save the hwnd and end the enumeration.
        TargetHwnd = app_hwnd
        WindowEnumerator = False
    Else
        ' Continue the enumeration.
        WindowEnumerator = True
    End If
End Function

Function EndTask(TargetHwnd As Long) As Long
    
    Dim rc As Integer
    Dim ReturnVal As Integer
'    If TargetHwnd = Form1.hwnd Or GetWindow(TargetHwnd, _
'        GW_OWNER) = Form1.hwnd Then
'        End
'    End If
    If IsWindow(TargetHwnd) = False Then
        GoTo EndTaskFail
    End If
    If (GetWindowLong(TargetHwnd, GWL_STYLE) _
        And WS_DISABLED) Then
        GoTo EndTaskSucceed
    End If
    
    'Close the window
    If IsWindow(TargetHwnd) Then
        If Not (GetWindowLong(TargetHwnd, GWL_STYLE) _
        And WS_DISABLED) Then
        rc = PostMessage(TargetHwnd, WS_CANCELMODE,  0 ,  0 &)
        rc = PostMessage(TargetHwnd, WM_CLOSE,  0 ,  0 &)
         DoEvents
        End If
    End If
    GoTo EndTaskSucceed
    
EndTaskFail:
    ReturnVal = False
    GoTo EndTaskEndSub
EndTaskSucceed:
    ReturnVal = True
EndTaskEndSub:
    EndTask = ReturnVal
End Function

Private Sub Form_Load()
KillProga "Áåçûìÿííûé"
End Sub
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290280
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero+
Сам понял хоть что?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290295
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

что проект ругается на одну строчку. поискал обьявления и декларации для EnumWindows для WindowEnumerator но пока безрезультатно(vb не перестаёт ругаться). +vb туго воспринимает "паблики" заменяю на "приваты" но это ничего...
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290302
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
раз пробуешь - значит получится рано или поздно
Удачи!
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290307
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

мдя удача в написании кодов самое то) в топку знания и усердие)
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290317
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroв топку знания и усердие)
Всё в Ваших руках!:)
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290335
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полюбуюсь на ошибки от Vb6 ещё пару дней... но если кто-то захочет помочь с кодом - отговаривать не буду)
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290343
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroполюбуюсь на ошибки от Vb6 ещё пару дней... но если кто-то захочет помочь с кодом - отговаривать не буду)
BelowZeroно на этой проге я уже заработал около 90 косарей
Что без заработка будешь делать?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37290366
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimBelowZeroполюбуюсь на ошибки от Vb6 ещё пару дней... но если кто-то захочет помочь с кодом - отговаривать не буду)
BelowZeroно на этой проге я уже заработал около 90 косарей
Что без заработка будешь делать?
Бедненький...

На.

timtim,
неужели не ясно, что все равно ничего не заплатит, не поймет и будет ныть до бесконечности. Оно того не стоит.
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37291230
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

я не зарабатываю на прогах, так получилось. создаю только для личного пользования, в инет не выкладываю из-за нескольких проблем

Дмитрий77,

грубовато, но большая пасяп за код, я в тебе не сомневался)
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37294684
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только что проверил код: он убил всю программу по этому окну, а не просто закрыл её( а как просто закрыть окно? при закрытии вручную или через альт+ф4 окно просто закрывается. тоже самое нуно сделать программно...
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37294822
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroтолько что проверил код: он убил всю программу по этому окну, а не просто закрыл её( а как просто закрыть окно? при закрытии вручную или через альт+ф4 окно просто закрывается. тоже самое нуно сделать программно...
какую команду нуно послать чужому окну, чтобы оно просто закрылось? (при этом продолжало работать)
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37294833
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эхь... тада буду сам попутно записывать успехи...
wm_close кикает всю прогу и процессы
sw_minimized фиг знает что делает, но после него окно застревает и не двигается с места...
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37294908
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
работает при использовании ShowWindow и SW_HIDE. да так работает, что вручную это окно уже не расхайдить
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37294929
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
не врубаюсь вывело на лист
97. Default IME - 11
98. M - 1
99. Default IME - 11
100. Default IME - 11
101. M - 1
102. Default IME - 11
103. Default IME - 11
104. M - 1
105. Default IME - 11
106. Default IME - 11
107. Default IME - 11
108. Default IME - 11
109. Default IME - 11
110. Default IME - 11
111. Default IME - 11
112. Default IME - 11
.......
118
Где количество, имя окон, хндл окон или чего уже я не пойму
Главное почему так много, почему повторения и как их всё же правильно обозвать??????
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37294945
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

код для чего нужен?
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37294948
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=855294&msg=10749463
код кикает прогу по имени. заменяешь строчку с close на хайд и окошко будет прятаться
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37294961
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroЦипихович Эндрю,

код для чего нужен?

для общего развития!!
что там сложного уничтожить
идешь по прогам процессам приложениям ЧТО ЭТО??? как называется???, у меня их 315!!!!!!
и соображаешь удалить или нет
Я просто не пойму, что будет если я скажу удалить эту
307. Default IME - 11
??????????
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295264
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

сорь вчера ответить не мог... а суть вопроса я не понял... скажи, для чего(что он должен делать) тебе нужен код(из пройденных топиков) я напишу.
*почему у вас выводит
Ципихович Эндрюне врубаюсь вывело на лист
97. Default IME - 11
98. M - 1
99. Default IME - 11
100. Default IME - 11
101. M - 1
102. Default IME - 11
103. Default IME - 11
104. M - 1
105. Default IME - 11
106. Default IME - 11
107. Default IME - 11
108. Default IME - 11
109. Default IME - 11
110. Default IME - 11
111. Default IME - 11
112. Default IME - 11
.......
118
знаете только вы. для удаления приложения по фрагменту имени используйте код дмитрия http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid={topic.id}&msg=10749463
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295272
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и снова проблема... SW_HIDE не просто прячет окно. эта команда делает чужую программу недееспособной... подскажите команду, которая работала бы по принципу "закрыть окошко". не хочется посылать окну команду альт+ф4
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295308
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эхь... подожду ночи все хакеры днём отсыпаются) или работают...
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295314
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
*почему у вас выводит знаю только я
ОК
приведённый мною скрипт в модуль, откройте Ворд, программу Programms на выполнение и что Вам сгенерирует выложите, посмотрим

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
Option Explicit

Private все_программы As String
Private хндл_окна As String
Private количество_всех_программ As Integer

Public TargetName As String
Public TargetHwnd As Long

Public Const GWL_STYLE = - 16 
Public Const WS_DISABLED = &H8000000
Public Const WS_CANCELMODE = &H1F
Public Const WM_CLOSE = &H10


Public Declare Function EnumWindows Lib "user32" ( _
ByVal lpEnumFunc As Long, _
ByVal lParam As Long) As Long

Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" ( _
ByVal hWnd As Long, _
ByVal lpString As String, _
ByVal cch As Long) As Long

Declare Function IsWindow Lib "user32" ( _
ByVal hWnd As Long) As Long

Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long

Declare Function PostMessage Lib "user32" Alias "PostMessageA" ( _
ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Sub KillProga(программа, количество_всех_программ, все_программы, хндл_окна As String)
    
    Do
        TargetName = программа
        TargetHwnd =  0 
        ' Examine the window names.
        EnumWindows AddressOf WindowEnumerator,  0 
        ' See if we got an hwnd.
        If TargetHwnd =  0  Then
            Exit Do
        Else
            EndTask (TargetHwnd)
        End If
    Loop
    
End Sub

' Return False to stop the enumeration.
Public Function WindowEnumerator( _
ByVal app_hwnd As Long, _
ByVal lParam As Long) As Long

Dim buf As String *  256 
Dim Title As String
Dim Length As Long

    ' Get the window's title.
    Length = GetWindowText(app_hwnd, buf, Len(buf))
    Title = Left$(buf, Length)
    
    'If Len(Title) <> 0 Then
    количество_всех_программ = количество_всех_программ +  1 
    все_программы = все_программы & " " & количество_всех_программ & ". " & Title & " - " & Length & Chr( 13 )
    'End If
    
    ' See if the title contains the target.
    If InStr(Title, TargetName) >  0  Then
        ' Save the hwnd and end the enumeration.
        TargetHwnd = app_hwnd
        WindowEnumerator = False
    Else
        ' Continue the enumeration.
        WindowEnumerator = True
    End If
    
End Function

Function EndTask(TargetHwnd As Long) As Long
    
    Dim rc As Integer
    Dim ReturnVal As Integer
'    If TargetHwnd = Form1.hwnd Or GetWindow(TargetHwnd, _
'        GW_OWNER) = Form1.hwnd Then
'        End
'    End If
    If IsWindow(TargetHwnd) = False Then
        GoTo EndTaskFail
    End If
    If (GetWindowLong(TargetHwnd, GWL_STYLE) _
        And WS_DISABLED) Then
        GoTo EndTaskSucceed
    End If
    
    'Close the window
    If IsWindow(TargetHwnd) Then
        If Not (GetWindowLong(TargetHwnd, GWL_STYLE) _
        And WS_DISABLED) Then
        rc = PostMessage(TargetHwnd, WS_CANCELMODE,  0 ,  0 &)
        rc = PostMessage(TargetHwnd, WM_CLOSE,  0 ,  0 &)
         DoEvents
        End If
    End If
    GoTo EndTaskSucceed
    
EndTaskFail:
    ReturnVal = False
    GoTo EndTaskEndSub
EndTaskSucceed:
    ReturnVal = True
EndTaskEndSub:
    EndTask = ReturnVal

End Function

Sub Programms()

Dim программа As String
программа = "QQQQQQQQQQQQQQQ"

KillProga программа, количество_всех_программ, все_программы, хндл_окна
MsgBox$ все_программы
Selection.TypeText Text:=все_программы

End Sub
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295340
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

не понял... я умею ток в VB6... и всё работает...
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295343
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

всё работает...
Я рад за Вас, пусть будет ВБ6, список всех можете вывести??
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295350
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

выходит как минимум строк(сколько точчно не видно) большинство =0
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295351
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

*60 строк
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295353
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero, так вот я и спрашиваю, что это процессы, окна, приложения, почему есть повторения????????
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295354
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже после закрытия выругивается на
selection.TypeText Text:=âñå_ïðîãðàììû
объяви selection как-нить
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295356
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

а что это за код вообще?) у меня выводит названия всех запущенных окон на компе
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295358
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
это 60 потому что больше в МСГБОКС не влазит, а так их около 300 шт.
всё правильно что ругается selection.TypeText Text:=âñå_ïðîãðàììû
Если Вы не в Ворде, но результат достиг, вопрос тот же, что это за список???
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295359
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

объясните, что вы хотите сделать, помогу
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295360
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюBelowZero,
это 60 потому что больше в МСГБОКС не влазит, а так их около 300 шт.
всё правильно что ругается selection.TypeText Text:=âñå_ïðîãðàììû
Если Вы не в Ворде, но результат достиг, вопрос тот же, что это за список???
Ципихович Эндрюназвания всех запущенных окон на компе
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295363
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroBelowZero,

объясните, что вы хотите сделать, помогу

я лишь хочу знать что это за список и почему много повторений???
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295366
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не многовато ли 300 шт., почему повторения в списке???
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295367
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

тогда скажите, откуда вы вообще достали этот код и как он относится к теме закрытия окна?)
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295370
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрюне многовато ли 300 шт., почему повторения в списке???
уберите все нулевые строки будет меньше. нет, не много, т.к. Shocker.Proимеет место непонимание. Когда ты открываешь (допустим) свою форму, открывается МНОЖЕСТВО окон. Каждая кнопка - это окно, каждый текстбокс и т.п., у каждого свой хендл. Можешь запустить Spy++ из комплекта VB6 и наглядно все увидеть.
Когда ты запускаешь приложение, ты не создаешь окно. Кучу окон создает само приложение в результате своей работы.
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295379
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroЦипихович Эндрю,

тогда скажите, откуда вы вообще достали этот код и как он относится к теме закрытия окна?)
да это же код Дмитрия (вроде) в каждом посте Вы мне на него указываете, немного переделал
Отношение - когда будет список, могу и закрыть и всё остальное, теоретически практически не делал
Шокеру спасибо, просмотрел, тогда когда он писал я не вдумывался и Вам спасибо за напоминание
Тогда вопрос, что за пустые окна и как узнать какие окна относятся я к какому приложению
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295392
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

пустые окна? - забей на них
к какому приложению.. т.е. узнать имя главного окна? я не вникал не было надобности посмотри тут
http://decoding.narod.ru/practic/wndinfo/wndinfo.html
сейчас я сам залип на BelowZeroSW_HIDE не просто прячет окно. эта команда делает чужую программу недееспособной... подскажите команду, которая работала бы по принципу "закрыть окошко". не хочется посылать окну команду альт+ф4
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295474
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

ладно забил не забил, а как это расценить???
20. Document3 - Microsoft Word - 26
21. Document1 - Microsoft Word - 26

два разных окна, а хндл один?????????
...
Рейтинг: 0 / 0
окно, панель задач, трей.
    #37295625
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

я уж не знаю уже что такое "Главное меню"?????? прога, приложение, процесс, но с этим кодом мы пролетаем, ну это чисто поизголяться, проверить её на живучесть

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
Option Explicit

Private все_программы As String
Private хндл_окна As String
Private количество_всех_программ As Integer

Public TargetName As String
Public TargetHwnd As Long

Public Const GWL_STYLE = - 16 
Public Const WS_DISABLED = &H8000000
Public Const WS_CANCELMODE = &H1F
Public Const WM_CLOSE = &H10

'функция EnumWindows
'Описание:
'function EnumWindows(EnumFunc: TFarProc, lParam: Longint): Bool;
'Пеpечисляет все pодительские окна на экpане, пеpедавая функции обpатного вызова описатель окна и lParam
'Пеpечисление заканчивается, если функция обpатного вызова возвpащает нуль или если пеpечислены все окна.
'Паpаметpы:
'EnumFunc: Адpес экземпляpа пpоцедуpы функции обpатного вызова.
'lParam: Значение, пеpеданное функции обpатного вызова.
'Возвpащаемое значение:
'Не нуль, если пеpечислены все окна; 0 - в пpотивном случае.
'функция находится в файле user32.dll

Public Declare Function EnumWindows Lib "user32" ( _
ByVal lpEnumFunc As Long, _
ByVal lParam As Long) As Long

'функция GetWindowText
'Описание:
'function GetWindowText(Wnd: HWnd; Str: PChar; MaxCount: Integer): Integer;
'Копиpует в Str заголовок окна или текст оpгана упpавления.
'Паpаметpы:
'Wnd: Идентификатоp окна или оpгана упpавления.
'Str: Буфеp, пpинимающий стpоку.
'MaxCount: Размеp буфеpа Str.
'Возвpащаемое значение:
'Фактическое число скопиpованных байт или 0, если текст отсутствует.
'функция находится в файле user32.dll

Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" ( _
ByVal hWnd As Long, _
ByVal lpString As String, _
ByVal cch As Long) As Long

'функция IsWindow
'Описание:
'function IsWindow(Wnd: HWnd): Bool;
'Опpеделяет, является ли окно допустимым существующим окном.
'Паpаметpы:
'Wnd: Идентификатоp окна.
'Возвpащаемое значение:
'Не нуль, если окно достовеpно; 0 - если нет.
'функция находится в файле user32.dll
 
Declare Function IsWindow Lib "user32" ( _
ByVal hWnd As Long) As Long

'функция GetWindowLong
'Описание:
'function GetWindowLong(Wnd: HWnd; Index: Integer): Longint;
'Считывает инфоpмацию об окне или о значениях дополнительного байта окна.
'Паpаметpы:
'Wnd: Идентификатоp окна.
'Index: Смещение в байтах или одна из следующих констант: gwl_ExStyle, gwl_Style или gwl_WndProc. См. pаздел "Смещения поля окна, gwl_" в главе 1.
'Возвpащаемое значение:
'Инфоpмация, хаpактеpная для окна.
'функция находится в файле user32.dll

Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long

'функция PostMessage
'Описание:
'function PostMessage(Wnd: HWnd; Msg, wParam: Word; lParam: Longint): Bool;
'Напpавляет сообщение окну пpикладной задачи.
'Паpаметpы:
'Wnd: Окно, котоpое будет пpинимать сообщение, или $FFFF для всех пеpекpываемых или всплывающих окон.
'Msg: Тип сообщения.
'wParam: Дополнительная инфоpмация о сообщении.
'lParam: Дополнительная инфоpмация о сообщении.
'Возвpащаемое значение:
'Не нуль в случае успешного завеpшения; 0 - если нет.
'функция находится в файле user32.dll
 
Declare Function PostMessage Lib "user32" Alias "PostMessageA" ( _
ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Sub Programms()
   
Dim программа As String
программа = "Главное меню" '"QQQQQQQQQQQQQQQ"
    
    Do
        TargetName = программа
        TargetHwnd =  0 
        ' Examine the window names - Изучите имена окон
        EnumWindows AddressOf WindowEnumerator,  0 
        ' See if we got an hwnd - Смотрите, если мы получили HWND
        If TargetHwnd =  0  Then
            Exit Do
        Else
            EndTask (TargetHwnd)
        End If
    Loop
    
MsgBox$ все_программы
Selection.TypeText Text:=все_программы
    
End Sub

' Return False to stop the enumeration - Вернуть False, чтобы остановить перечисления
Public Function WindowEnumerator( _
ByVal app_hwnd As Long, _
ByVal lParam As Long) As Long

Dim buf As String *  256 
Dim Title As String
Dim Length As Long

    ' Get the window's title - Получить титул окна
    Length = GetWindowText(app_hwnd, buf, Len(buf))
    Title = Left$(buf, Length)
    
    'If Len(Title) <> 0 Then
    количество_всех_программ = количество_всех_программ +  1 
    все_программы = все_программы & " " & количество_всех_программ & ". " & Title & " - " & Length & Chr( 13 )
    'End If
    
    ' See if the title contains the target - Смотрите, если название содержит целевые
    If InStr(Title, TargetName) >  0  Then
        ' Save the hwnd and end the enumeration - Сохранить HWND и конце перечисления
        TargetHwnd = app_hwnd
        WindowEnumerator = False
    Else
        ' Continue the enumeration - Продолжить перечисления
        WindowEnumerator = True
    End If
    
End Function

Function EndTask(TargetHwnd As Long) As Long
    
    Dim rc As Integer
    Dim ReturnVal As Integer
'    If TargetHwnd = Form1.hwnd Or GetWindow(TargetHwnd, _
'        GW_OWNER) = Form1.hwnd Then
'        End
'    End If
    If IsWindow(TargetHwnd) = False Then
        GoTo EndTaskFail
    End If
    If (GetWindowLong(TargetHwnd, GWL_STYLE) _
        And WS_DISABLED) Then
        GoTo EndTaskSucceed
    End If
    
    'Close the window - Закрыть окно
    If IsWindow(TargetHwnd) Then
        If Not (GetWindowLong(TargetHwnd, GWL_STYLE) _
        And WS_DISABLED) Then
        rc = PostMessage(TargetHwnd, WS_CANCELMODE,  0 ,  0 &)
        rc = PostMessage(TargetHwnd, WM_CLOSE,  0 ,  0 &)
         DoEvents
        End If
    End If
    GoTo EndTaskSucceed
    
EndTaskFail:
    ReturnVal = False
    GoTo EndTaskEndSub
EndTaskSucceed:
    ReturnVal = True
EndTaskEndSub:
    EndTask = ReturnVal

End Function
...
Рейтинг: 0 / 0
89 сообщений из 89, показаны все 4 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / окно, панель задач, трей.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]