powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Убрать значок из трея
25 сообщений из 113, страница 2 из 5
Убрать значок из трея
    #37293925
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sonic_ruнадо понимать что делает
FindWindowEx
и что такое
HWND(Handle окна)
по второй ссылке кстати есть и функция ShowWindow
по ссылке:
Код: 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.
 procedure  TForm1.Timer1Timer(Sender: TObject); 
 var 
  Wnd: HWND;                    // Hahdle найденного окна  
  Pos: TPoint;                  // Позиция курсора  
  Rect: TRect;                  // Координаты окна  
  buff:  array [ 0 .. 255 ]  of  char;  // Буфер  
  WndText:  string ;              // Текст окна  
  NameClass:  string ;            // Класс окна  
 begin 
    // Получаем позицию курсора  
   GetCursorPos( Pos ); 
    // Получаем Handle окна под курсором  
   Wnd := WindowFromPoint( Pos ); 
   GetWindowRect( Wnd, Rect ); 
   GetWindowText( Wnd, buff, SizeOf( buff ) ); 
   WndText := StrPas( buff ); 
   GetClassName( Wnd, buff, SizeOf( buff ) ); 
   NameClass := StrPas( buff ); 
  
    // Выводим координаты курсора  
   LabelPosX.Caption := 'X: ' + IntToStr( Pos.X ); 
   LabelPosY.Caption := 'Y: ' + IntToStr( Pos.Y ); 
  
   LabelHandle.Caption := 'Handle: ' + IntToStr( Wnd ); 
   LabelName.Caption := 'Name: ' + WndText; 
   LabelClass.Caption := 'Class: ' + NameClass; 
   LabelLeft.Caption := 'Left = ' + IntToStr( Rect.Left ); 
   LabelTop.Caption := 'Top = ' + IntToStr( Rect.Top ); 
   LabelWidth.Caption := 'Width = ' + IntToStr( Rect.Right - Rect.Left ); 
   LabelHeight.Caption := 'Height = ' + IntToStr( Rect.Bottom - Rect.Top ); 
  
    // Получаем Handle родительского окна  
   Wnd := GetParent( Wnd ); 
   GetWindowRect( Wnd, Rect ); 
   GetWindowText( Wnd, buff, SizeOf( buff ) ); 
   WndText := StrPas( buff ); 
   GetClassName( Wnd, buff, SizeOf( buff ) ); 
   NameClass := StrPas( buff ); 
  
   LabelParentHandle.Caption := 'ParentHandle: ' + IntToStr( Wnd ); 
   LabelParentName.Caption := 'ParentName: ' + WndText; 
   LabelParentClass.Caption := 'ParentClass: ' + NameClass; 
   LabelParentLeft.Caption := 'ParentLeft = ' + IntToStr( Rect.Left ); 
   LabelParentTop.Caption := 'ParentTop = ' + IntToStr( Rect.Top ); 
   LabelParentWidth.Caption := 'ParentWidth = ' + IntToStr( Rect.Right - Rect.Left ); 
   LabelParentHeight.Caption := 'ParentHeight = ' + IntToStr( Rect.Bottom - Rect.Top ); 
 end ; 
Можно где-то увидеть в ВБ или ВБА???????
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37293928
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не могу сообразить... больше всего напрягает это
hnd = FindWindow("Shell_TrayWnd", vbNullString)
hnd = FindWindowEx(hnd, 0, "TrayNotifyWnd", vbNullString)
hnd = FindWindowEx(hnd, 0, "TrayClockWClass", vbNullString)

то же самое что
хомяк = зверёк
хомяк = животное хомячное и маленькое
хомяк = животное хомячное и большое

масло масляное какое-то... но если это работает, значит хомяк и правда большое маленькое хомячное животное
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294197
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эх... придётся начинать сначала... хендл окна одной и той же программы при разных запусках и разных компах разный?
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294198
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroэх... придётся начинать сначала... хендл окна одной и той же программы при разных запусках и разных компах разный?
конечно, его выделяет ОС при создании окна.
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294201
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Prа если чужую программу открывает мой ехе то я могу сам задать чужой проге хэндл чтобы не сводить мозг хомяками... или хотя бы автоматом узнавать какой хэндл даёт чёжому окну ОС
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294204
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорь за ошибки, не проверил перед нажатием "Опубликовать"
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294207
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroShocker.Prа если чужую программу открывает мой ехе то я могу сам задать чужой проге хэндл чтобы не сводить мозг хомяками... или хотя бы автоматом узнавать какой хэндл даёт чёжому окну ОСимеет место непонимание. Когда ты открываешь (допустим) свою форму, открывается МНОЖЕСТВО окон. Каждая кнопка - это окно, каждый текстбокс и т.п., у каждого свой хендл. Можешь запустить Spy++ из комплекта VB6 и наглядно все увидеть.
Когда ты запускаешь приложение , ты не создаешь окно . Кучу окон создает само приложение в результате своей работы.
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294215
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero ...а вот с практической частью у меня не лады
А с теоретической как?
Ты знаешь, что ты хочешь сделать?
Каков алгоритм?
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294216
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
воть код с первой странице топика:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Dim hnd As Long
Private Sub Command1_Click()
 ShowWindow hnd,  0 
End Sub
Private Sub Command2_Click()
 ShowWindow hnd,  1 
End Sub

Private Sub Form_Load()
 hnd = FindWindow("Shell_TrayWnd", vbNullString)
 hnd = FindWindowEx(hnd,  0 , "TrayNotifyWnd", vbNullString)
 [color=red]hnd = FindWindowEx(hnd,  0 , "TrayClockWClass", vbNullString)[/color]
 Command1.Caption = "скрываем часы"
 Command2.Caption = "показываем часы"
End Sub
если заменить эту строчку на найденный хендл чужой программы, то значок этой чужой проги, наконец, уберётся с трея?..
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294218
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimBelowZero ...а вот с практической частью у меня не лады
А с теоретической как?
Ты знаешь, что ты хочешь сделать?
Каков алгоритм?
я хочу (использую код из предыдущего топика) по неполному имени найти хэндл чужой программы и по этому хэндлу покикать значки в трее
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294222
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

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

http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=855873&msg=10761488
если я заменю
Код: plaintext
hnd = FindWindowEx(hnd,  0 , "TrayClockWClass", vbNullString)
на
Код: plaintext
hnd = FindWindowEx(hnd,  0 , vbNullString, '''''''имя чужого окна''''''')
код сможет убрать значок чужого приложения?
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294229
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

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

с горем попалам наверно смогу найти хэндл чужого нужного мне окна благодаря прошлому топику... но потом... не знаю... но чутьё мне подсказывает что фраза "покикать значки в трее по хэндлу" расплывается в несколько десятков строк с незнакомыми функциями. или я ошибаюсь и всё намного проще? ***наивно и хаотично жму f5***
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294235
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

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

моего? да я что-то такое находил вчера... ща ещё раз поищщу
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294240
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroмоего?
Т.е. ты пишешь сообщения в форуме, а код в VB набирает кто то другой?
Я правильно понял?
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294242
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
Option Explicit
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Const NIM_ADD = &H0
Private Const NIM_DELETE = &H2
Private Const NIM_MODIFY = &H1
Private Const WM_MOUSEMOVE = &H200
Private Const NIF_MESSAGE = &H1
Private Const NIF_TIP = &H4
Private Const NIF_ICON = &H2
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
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
Private tray As NOTIFYICONDATA

Private Sub Command1_Click()
    Shell_NotifyIcon NIM_ADD, tray
End Sub

Private Sub Command2_Click()
    Shell_NotifyIcon NIM_DELETE, tray
End Sub

Private Sub Form_Load()
    Command1.Caption = "эта кнопка добавляет иконку в трей"
    Command2.Caption = "удаляет"
    tray.cbSize = Len(tray)
    tray.hIcon = Me.Icon
    tray.hwnd = Me.hwnd
    tray.szTip = "всплывающая подсказка" & Chr( 0 )
    tray.uCallbackMessage = WM_MOUSEMOVE
    tray.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    tray.uID =  0 
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim msg As Long

    msg = X / Screen.TwipsPerPixelX

    Select Case msg
        Case WM_LBUTTONDBLCLK
            Me.Print "Äâîéíîé êëèê ëåâîé êíîïêîé"
        Case WM_LBUTTONDOWN
            Me.Print "Ëåâàÿ êíîïêà ìûøè íàæàòà"
        Case WM_LBUTTONUP
            Me.Print "Ëåâàÿ êíîïêà ìûøè îòæàòà"
        Case WM_RBUTTONDBLCLK
            Me.Print "Äâîéíîé êëèê ïðàâîé êíîïêîé"
        Case WM_RBUTTONDOWN
            Me.Print "Ïðàâàÿ êíîïêà ìûøè íàæàòà"
        Case WM_RBUTTONUP
            Me.Print "Ïðàâàÿ êíîïêà ìûøè îòæàòà"
    End Select
End Sub
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294245
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimBelowZeroмоего?
Т.е. ты пишешь сообщения в форуме, а код в VB набирает кто то другой?
Я правильно понял?
я имел ввиду код, который добюавляет и удаляет из трея иконку моего приложения?
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294249
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

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

У тебя есть код который добавляет\меняет иконку твоего приложения.
Что ты предпринял дальше для достижения своей цели?
эм... код сверху в сообщении с крестиком) дальше ищу строчку кода, от которой зависит, с каким окном будет работать прога и запихать туда код, чтобы удался не свой ярлык из трея а чужой...
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294252
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimУ тебя есть код который добавляет\меняет иконку твоего приложения.
сорь я думал это вопрос
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294255
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero .... дальше ищу строчку кода , от которой зависит, с каким окном будет работать прога и запихать туда код , чтобы удался не свой ярлык из трея а чужой...
Про запихать туда код расскажи языком VB.
Что делал?
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294265
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

отходил...
такс... ищем главную строчку
Код: plaintext
Shell_NotifyIcon NIM_DELETE, tray
так... шелнотифайикон функция... ним делете - убрать значок... tray это наверно трей) никаких обозначений окон имён и хэндлов нет... значит они по умолчанию 0. значит куда-нить надо впихнуть удаление не по умолчанию а по хэндлу или искать другой код...
...
Рейтинг: 0 / 0
Убрать значок из трея
    #37294281
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в инете нет ничего похожего но я нашёл очень замечательный сайт с описанием:
"Но и не будет здесь и жеваных-пережеваных 'Как поместить иконку в трей'"
т.е. эта тема жёвана-пережёвана где-то там, куда не долетают лучи солнца и не работает техника
...
Рейтинг: 0 / 0
25 сообщений из 113, страница 2 из 5
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Убрать значок из трея
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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