Форум: "WinAPI";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];
ВнизСкрыть приложение с панели задач Найти похожие ветки
← →
Stanislav © (2006-01-18 11:15) [0]Имеется Handle окна, можно ли скрыть с панели задач приложение, которому пренадлежит окно?
Или узнать Handle самого приложения?
← →
Игорь Шевченко © (2006-01-18 11:53) [1]У приложения нету Handle
> можно ли скрыть с панели задач приложение, которому пренадлежит
> окно?
Вряд ли
← →
Stanislav © (2006-01-18 13:07) [2]А можно ли запретить закрывать (С помощью кнопки закрыть или Alt+F4) окно зная его Handle ?
← →
Stanislav © (2006-01-18 13:25) [3]Спасибо, разобрался!
← →
VirEx © (2006-01-18 17:30) [4]
> [1] Игорь Шевченко © (18.01.06 11:53)
у VCL есть
изменить стиль (добавить в расширенный стиль WS_EX_TOOLWINDOW)
← →
Игорь Шевченко © (2006-01-18 17:48) [5]VirEx © (18.01.06 17:30) [4]
Окно после этого пересоздавать не надо ?
← →
Rouse_ © (2006-01-18 18:42) [6]А что, ShowWindow(Application.Handle, SW_HIDE); уже не в почете? :)
← →
Игорь Шевченко © (2006-01-18 18:43) [7]Rouse_ © (18.01.06 18:42) [6]
Окно-то не свое
← →
Rouse_ © (2006-01-18 18:44) [8]Хм... не доглядел :)
← →
VirEx © (2006-01-18 18:52) [9]getparent()?
← →
VirEx © (2006-01-18 18:55) [10]или getwindowlong(findwindow("form1",nil),GWL_HWNDPARENT)
или getwindow(findwindow("form1",nil),GW_OWNER)
← →
VirEx © (2006-01-18 18:56) [11]или getwindowlong(findwindow(nil,"form1"),GWL_HWNDPARENT)
или getwindow(findwindow(nil,"form1"),GW_OWNER)
← →
Rouse_ © (2006-01-18 23:36) [12]Мдя... хотел зайти с другой стороны... Но так не получилось. На всякий случай держи код экспериментов :)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, CommCtrl;
type
TForm1 = class(TForm)
lvButtons: TListView;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
TaskBarHandle: THandle;
public
function GetAllTaskBarButtons: Boolean;
function GetTaskBarButtonText(const Index: Integer): String;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.GetAllTaskBarButtons: Boolean;
var
TmpHandle: THandle;
I, ButtonCount: Integer;
begin
TmpHandle := FindWindow("Shell_TrayWnd", nil);
if TmpHandle = 0 then RaiseLastOSError;
TmpHandle := FindWindowEx(TmpHandle, 0, "ReBarWindow32", nil);
if TmpHandle = 0 then RaiseLastOSError;
TmpHandle := FindWindowEx(TmpHandle, 0, "MSTaskSwWClass", nil);
if TmpHandle = 0 then RaiseLastOSError;
TaskBarHandle := FindWindowEx(TmpHandle, 0, "ToolbarWindow32", nil);
if TaskBarHandle = 0 then RaiseLastOSError;
ButtonCount := SendMessage(TaskBarHandle, TB_BUTTONCOUNT, 0, 0);
for I := 0 to ButtonCount - 1 do
if SendMessage(TaskBarHandle, TB_ISBUTTONHIDDEN, I, 0) <> 0 then
lvButtons.Items.Add.Caption := GetTaskBarButtonText(I);
end;
function TForm1.GetTaskBarButtonText(const Index: Integer): String;
var
TaskBarProcessID, TaskBarProcessHandle: THandle;
AllocCaption: Pointer;
BytesRead: Cardinal;
Size: Integer;
ButtonCaption: String;
begin
GetWindowThreadProcessId(TaskBarHandle, TaskBarProcessID);
TaskBarProcessHandle := OpenProcess(PROCESS_VM_OPERATION or
PROCESS_VM_READ or PROCESS_VM_WRITE, False, TaskBarProcessID);
if TaskBarProcessHandle = 0 then
RaiseLastOSError
else
try
AllocCaption := VirtualAllocEx(TaskBarProcessHandle, nil,
MAXCHAR, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);
if AllocCaption = nil then
RaiseLastOSError
else
try
Size := SendMessage(TaskBarHandle, TB_GETBUTTONTEXT, Index, Integer(AllocCaption));
if Size = 0 then RaiseLastOSError;
if Size < 0 then Exit;
SetLength(ButtonCaption, Size + 1);
if not ReadProcessMemory(TaskBarProcessHandle, AllocCaption,
@ButtonCaption[1], Size, BytesRead) then
RaiseLastOSError;
if ButtonCaption = "Windows TaskManager"#0 then
SendMessage(TaskBarHandle, TB_HIDEBUTTON{TB_DELETEBUTTON}, Index, 0);
Result := ButtonCaption;
finally
VirtualFreeEx(TaskBarProcessHandle, AllocCaption, 0, MEM_RELEASE);
end;
finally
CloseHandle(TaskBarProcessHandle);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetAllTaskBarButtons;
end;
end.
Нужно копаться в самом шеле...
← →
Rouse_ © (2006-01-18 23:40) [13]ЗЫ: с TB_ISBUTTONHIDDEN явно погорячился :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.013 c