powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / и снова трей
20 сообщений из 120, страница 5 из 5
и снова трей
    #37373472
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

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

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

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

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

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

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

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

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

ещё раз нуно=нужно
прога=программа
цы=P\S и тд. стандартный задротский язык
...
Рейтинг: 0 / 0
и снова трей
    #37373542
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

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

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

У ЦЭ спроси.
...
Рейтинг: 0 / 0
и снова трей
    #37373566
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробую так
Код: plaintext
1.
2.
3.
4.
ret = FindWindow("Shell_TrayWnd", "")
ret = FindWindowEx(ret,  0 , "TrayNotifyWnd", vbNullString)
ret = FindWindowEx(ret,  0 , "SysPager", vbNullString)
ret = FindWindowEx(ret,  0 , "ToolbarWindow32", vbNullString)
SendMessage(ret, TB_DELETEBUTTON, ????, vbNullString)
ток что-то не соображу, что вставить вместо ????. название кнопки?
...
Рейтинг: 0 / 0
и снова трей
    #37373697
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попытался скачать дельфи - с 4 попытки смог - запустил - от переусердия полетела седьмая винда... попробовал на ХР - тоже на .уй всё снеслось. Ладно хоть семёрка восстанавливается. е.ал я это программирование во все щели. можете забанить топик
...
Рейтинг: 0 / 0
и снова трей
    #37373722
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroе.ал я это программирование во все щелинаконец-то
Кажется, Антонарий таки смог подсказать Белову верную дорогу
...
Рейтинг: 0 / 0
и снова трей
    #37373783
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор как бы говорит нам, каким из подаренных природой органов он таки научился пользоваться.
...
Рейтинг: 0 / 0
и снова трей
    #37373817
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашёл нужный отhttp://www.sql.ru/forum/actualpost.aspx?bid=22&tid=867083&mid=0&p=5рывок кода на дельфи
Код: 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.
 const 
  TB_GETBUTTON     = WM_USER +  23 ;
  TB_BUTTONCOUNT   = WM_USER +  24 ;
  TB_GETBUTTONTEXT = WM_USER +  75 ;
  TB_DELETEBUTTON  = WM_USER +  22 ;
 type 
  TTBBUTTON =  record 
    iBitmap : Integer;
    idCommand : Integer;
    fsState : byte;
    fsStyle : byte;
     {$IFDEF WIN64} 
    hReserved :  array  [ 0 .. 5 ]  of  byte;
     {$ELSE} 
     {$IFDEF WIN32} 
    hReserved :  array  [ 0 .. 1 ]  of  byte;
     {$ENDIF} 
     {$ENDIF} 
    dwData : Pointer;
    iString : PChar;
   end ;
 procedure  DeleteToolBarButton( const  ButtonText : WideString);
 const 
  BUFFER_SIZE = $ 1000 ;
 var 
  OpProc : THandle;
  ProcID : THandle;
  ToolBar : THandle;
  Window : HWND;
  ButtonsCount : integer;
  i : Integer;
  Buffer : Pointer;
  DButton : TTBButton;
  RBytes : Cardinal;
  BTextLength : Integer;
  BText : WideString;
 begin 
  ToolBar := FindWindow('Shell_TrayWnd',  nil );
  ToolBar := FindWindowEx(ToolBar,  0 , 'ReBarWindow32',  nil );
  ToolBar := FindWindowEx(ToolBar,  0 , 'MSTaskSwWClass',  nil );
  ToolBar := FindWindowEx(ToolBar,  0 , 'ToolbarWindow32',  nil );
   if  ToolBar =  0   then 
    Exit;
  ButtonsCount := SendMessage(ToolBar, TB_BUTTONCOUNT,  0 ,  0 );
  GetWindowThreadProcessId(ToolBar, @ProcID);
  OpProc := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID);
   try 
    Buffer := VirtualAllocEx(OpProc,  nil , BUFFER_SIZE, MEM_COMMIT, PAGE_READWRITE);
     for  i :=  0   to  ButtonsCount  do 
       begin 
        SendMessage(ToolBar, TB_GETBUTTON, i, Integer(Buffer));
        RBytes :=  0 ;
        ReadProcessMemory(OpProc, Buffer, @DButton, SizeOf(TTBButton), RBytes);
        ReadProcessMemory(OpProc, DButton.dwData, @Window, SizeOf(HWND), RBytes);
         if  Window =  0   then 
          Continue;
        BTextLength := SendMessage(ToolBar, TB_GETBUTTONTEXT, DButton.idCommand, Integer(Buffer));
        SetLength(BText, BTextLength);
        ReadProcessMemory(OpProc, Buffer, @(BText[ 1 ]), BTextLength * SizeOf(BText[ 1 ]), RBytes);
         if  BText = ButtonText  then 
           begin 
            SendMessage(ToolBar, TB_DELETEBUTTON, i,  0 );
            Break;
           end ;
       end ;
   finally 
    VirtualFreeEx(OpProc, Buffer,  0 , MEM_RELEASE);
    CloseHandle(OpProc);
   end ;
 end ;
 procedure  TForm1.Button1Click(Sender: TObject);
 begin 
  DeleteToolBarButton('Диспетчер задач Windows');
 end ;
попробовал перевести в vb - какая-то муть получается. не поможете?
Код: 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.
Option Explicit
Private Const WM_USER = &H400
Private Const TB_GETBUTTON = WM_USER +  23 
 Private Const TB_BUTTONCOUNT = WM_USER +  24 
 Private Const TB_GETBUTTONTEXT = WM_USER +  75 
 Private Const TB_DELETEBUTTON = WM_USER +  22 
    

Private Type WIN32_FIND_DATA
  TTBButton As Variant
    iBitmap As Long 'Integer;
    idCommand As Long ' Integer;
    fsState As Byte
    fsStyle As Byte
    '{$IFDEF WIN64}
    'hReserved : array [0..5] of byte;
    '{$ELSE}
    '{$IFDEF WIN32}
    'hReserved : array [0..1] of byte;
    '{$ENDIF}
    '{$ENDIF}
    dwData As Variant 'Pointer;
    iString As Variant ' PChar;
  End Type
  
  Private Function DeleteToolBarButton(ButtonText As Long)

  '

  Private Const BUFFER_SIZE = &O1000
Var
Dim OpProc As Variant
Dim ProcID As Variant
Dim ToolBar As Variant
Dim Window As Variant
Dim ButtonsCount As Variant
Dim i As Variant
Dim Buffer As Variant
Dim DButton As Variant
Dim RBytes As Variant
Dim BTextLength As Variant
Dim BText As Variant
  'OpProc : THandle;
  'ProcID : THandle;
  'ToolBar : THandle;
  'Window : HWND;
  'ButtonsCount : integer;
  'i : Integer;
  'Buffer : Pointer;
  'DButton : TTBButton;
  'RBytes : Cardinal;
  'BTextLength : Integer;
  'BText : WideString;
  ToolBar = FindWindow(Shell_TrayWnd, vbNullString)
  ToolBar = FindWindowEx(ToolBar,  0 , ReBarWindow32, vbNullString)
  ToolBar = FindWindowEx(ToolBar,  0 , MSTaskSwWClass, vbNullString)
  ToolBar = FindWindowEx(ToolBar,  0 , ToolbarWindow32, vbNullString)
  If ToolBar =  0  Then Exit Sub
  ButtonsCount = SendMessage(ToolBar, TB_BUTTONCOUNT,  0 ,  0 )
  GetWindowThreadProcessId ToolBar, ProcID
  OpProc = OpenProcess(PROCESS_ALL_ACCESS, False, ProcID)
  Buffer = VirtualAllocEx(OpProc, vbNullString, BUFFER_SIZE, MEM_COMMIT, PAGE_READWRITE)
    For i =  0  To ButtonsCount
        SendMessage ToolBar, TB_GETBUTTON, i, Val(Buffer)
        RBytes =  0 
        ReadProcessMemory OpProc, Buffer, DButton, SizeOf(TTBButton), RBytes
        ReadProcessMemory OpProc, DButton.dwData, Window, SizeOf(hWnd), RBytes
        If Window =  0  Then
        BTextLength = SendMessage(ToolBar, TB_GETBUTTONTEXT, DButton.idCommand, Val(Buffer))
        SetLength BText, BTextLength
        ReadProcessMemory OpProc, Buffer, BText, BTextLength * SizeOf(BText), RBytes
            If BText = ButtonText Then
            SendMessage ToolBar, TB_DELETEBUTTON, i,  0 
            'Break;
            End If
        End If
Next i
    VirtualFreeEx OpProc, Buffer,  0 , MEM_RELEASE
    CloseHandle OpProc
End Function




Private Sub Command1_Click()
DeleteToolBarButton Text1.Text
End Sub
...
Рейтинг: 0 / 0
и снова трей
    #37373868
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переведённый код, работает не совсем корректно. Нужно разобраться с типами. Также изменил имена классов, так как для кнопок "окна уведомлений" они другие, чем описаны. (Описаны классы для получения кнопок с панели задач) Может будет время я или кто-то другой скорректирует

Код: 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.
Option Explicit

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long

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 lpszText1 As String, ByVal lpszText2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Declare Function VirtualAllocEx Lib "kernel32.dll" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByVal lpBuffer As Long, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long


Private Const WM_USER As Long = &H400

Private Const TB_GETBUTTON = WM_USER +  23 
Private Const TB_BUTTONCOUNT = WM_USER +  24 
Private Const TB_GETBUTTONTEXT = WM_USER +  75 
Private Const TB_DELETEBUTTON = WM_USER +  22 

Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Private Const SYNCHRONIZE As Long = &H100000
Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)

Private Const iBuffer_SIZE As Long = &H1000
Private Const MEM_COMMIT As Long = &H1000
Private Const PAGE_READWRITE As Long = &H4

Private Type TTBButton
    iBitmap     As Long
    idCommand   As Long
    fsState     As Byte
    fsStyle     As Byte
    hReserved   As Integer
    dwData      As Long
    iString     As Long
End Type

Public Sub DeleteToolBarButton(ByVal ButtonText As String)
    Dim hOpProc       As Long
    Dim ProcID        As Long, ThreadID As Long
    Dim ToolBar       As Long
    Dim Window        As Long
    Dim ButtonsCount  As Long
    Dim I             As Long
    Dim iBuffer       As String
    Dim DButton       As TTBButton
    Dim RBytes        As Long
    Dim BTextLength   As Long
    Dim BText         As String
    
    Dim sBuff As String
    
    ToolBar = FindWindow("Shell_TrayWnd", vbNullString)
    ToolBar = FindWindowEx(ToolBar,  0 , "TrayNotifyWnd", vbNullString)
    ToolBar = FindWindowEx(ToolBar,  0 , "SysPager", vbNullString)
    ToolBar = FindWindowEx(ToolBar,  0 , "ToolbarWindow32", vbNullString)
    If ToolBar =  0  Then Exit Sub
    
    'ПИД
    ProcID = Shell("taskmgr.exe", vbMinimizedNoFocus)
    ButtonsCount = SendMessage(ToolBar, TB_BUTTONCOUNT, ByVal  0 &, ByVal  0 &)
    ThreadID = GetWindowThreadProcessId(ToolBar, ProcID)
    hOpProc = OpenProcess(PROCESS_ALL_ACCESS, False, ProcID)
    
    iBuffer = VirtualAllocEx(hOpProc, ByVal  0 &, iBuffer_SIZE, MEM_COMMIT, PAGE_READWRITE)
    
    For I =  0  To ButtonsCount
        Call SendMessage(ToolBar, TB_GETBUTTON, I, iBuffer)
        RBytes =  0 
        
        Call ReadProcessMemory(hOpProc, iBuffer, VarPtr(DButton), Len(DButton), RBytes)
        Call ReadProcessMemory(hOpProc, DButton.dwData, VarPtr(Window),  4 , RBytes)
        
        If Window =  0  Then GoTo Continue
          
        BTextLength = SendMessage(ToolBar, TB_GETBUTTONTEXT, DButton.idCommand, iBuffer)
        
        If BTextLength >  0  Then
            BText = Space(BTextLength)
    
            Call ReadProcessMemory(hOpProc, iBuffer, StrPtr(BText), BTextLength, RBytes)

            If BText = ButtonText Then
                Call SendMessage(ToolBar, TB_DELETEBUTTON, I,  0 )
                Exit For
            End If
        End If
Continue:
      Next

    'Call VirtualFreeEx(hOpProc, iBuffer, 0, MEM_RELEASE) '<< Declare
    Call CloseHandle(hOpProc)
End Sub
 
Private Sub Form_Load()
    Call DeleteToolBarButton("Диспетчер задач Windows")
End Sub
...
Рейтинг: 0 / 0
и снова трей
    #37373887
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLAD,

огромное спасибо))

только что теперь вписывать в Call DeleteToolBarButton("?????"), ведь кнопки в трее не имеют названий. наверное. (я хочу удалить иконку Skype)
...
Рейтинг: 0 / 0
и снова трей
    #37380465
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ммм изначальный код на дельфи убирал иконку(кнопку) с панели задач по имени этой иконки(кнопки). это имя ясно прописывается при наведении мышкой на значок. переделанный код, любезно предоставленный VSVLAD, должен удалять значок не с панели задач, а из трея по имени значка(кнопки). но как узнать имя кнопки в трее? нуно удалить иконку(кнопку) скайпа. т.е.
Код: plaintext
Call DeleteToolBarButton("тут требуется вписать название кнопки скайпа в трее. но откуда я его знаю")
...
Рейтинг: 0 / 0
20 сообщений из 120, страница 5 из 5
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / и снова трей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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