powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / окно, панель задач, трей.
25 сообщений из 89, страница 1 из 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
25 сообщений из 89, страница 1 из 4
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / окно, панель задач, трей.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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