es := GetWindowLong(Application.Handle, GWL_EXSTYLE);
es := es or (not WS_EX_APPWINDOW);
SetWindowLong(Application.Handle, GWL_EXSTYLE, es);
как убрать программу с панели задач
видны только они. Только не пишите что то типа:
ShowWindow(FindWindow(nil,'Program Manager'),SW_HIDE);
ShowWindow (Application.handle, SW_HIDE);
hTaskbar := FindWindow('Shell_TrayWnd', Nil);
ShowWindow(hTaskBar, SW_HIDE);
это не помогает.:confused:
Попробуй посмотреть тут:
var
es: Integer;
begin
es := GetWindowLong(Application.Handle, GWL_EXSTYLE);
es := es or (not WS_EX_APPWINDOW);
SetWindowLong(Application.Handle, GWL_EXSTYLE, es);
es := GetWindowLong(YourForm.Handle, GWL_EXSTYLE);
es := es or WS_EX_TOOLWINDOW;
SetWindowLong(YourForm.Handle, GWL_EXSTYLE, es);
end;
Релорт, твой код не помогает. Он скрывает программу только из Alt+Tab, а на панели задач она так и остается.:confused:
Код:
приводят к ожидаемому результату :)
Ты избранный :)
странно вообще как оно у тебя к ожидаемому результату приводит, когда там надо не or not WS_EX_APPWINDOW, a and not WS_EX_APPWINDOW
Код:
bool __fastcall TBSetState(HWND hwnd,int status)
{ ITaskbarList *pITaskbarList;
if (!hwnd) return false;
CoInitialize(NULL);
HRESULT hr=CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,
IID_ITaskbarList, (void**)&pITaskbarList);
if (FAILED(hr)) return false;
hr=pITaskbarList->HrInit();
if (SUCCEEDED(hr))
switch(status)
{ case 0: hr=pITaskbarList->DeleteTab(hwnd); break;
case 1: hr=pITaskbarList->AddTab(hwnd); break;
case 2: hr=pITaskbarList->ActivateTab(hwnd); break;
case 3: hr=pITaskbarList->SetActiveAlt(hwnd); break; }
pITaskbarList->Release();
CoUninitialize();
if (FAILED(hr)) return false; // Cmd error
return true;
}
{ ITaskbarList *pITaskbarList;
if (!hwnd) return false;
CoInitialize(NULL);
HRESULT hr=CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,
IID_ITaskbarList, (void**)&pITaskbarList);
if (FAILED(hr)) return false;
hr=pITaskbarList->HrInit();
if (SUCCEEDED(hr))
switch(status)
{ case 0: hr=pITaskbarList->DeleteTab(hwnd); break;
case 1: hr=pITaskbarList->AddTab(hwnd); break;
case 2: hr=pITaskbarList->ActivateTab(hwnd); break;
case 3: hr=pITaskbarList->SetActiveAlt(hwnd); break; }
pITaskbarList->Release();
CoUninitialize();
if (FAILED(hr)) return false; // Cmd error
return true;
}
а не сильно ли это жёстко? помоему, отнимание у окна WS_EX_APPWINDOW хватает с головой....
Не всегда. Если приложение многооконное, то там некоторые артифакты всплывают.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowWindow(Handle, SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE);
end;
begin
ShowWindow(Handle, SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE);
end;
;)
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Hide;
end;
begin
Hide;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Handle, SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE);
end;
Realt ты гений