![]() |
Fenster(Handle) aus Taskleiste entfernen
Wie bekomme ich es hin ein fremdes Programm zeigen zulassen aber der Eintrag aus der Taskbar soll weg ?
Hoffe mit kann jemand helfen =) |
Re: Fenster(Handle) aus Taskleiste entfernen
Sie mal hier nach:
![]() |
Re: Fenster(Handle) aus Taskleiste entfernen
inwiefern soll mir eine Entwicklungsfirma helfen können ? hab auf der Seite keine codes oder so gefunden ?
Oh sorry habs doch gefunden aber das hab ich ja schon so gemacht ShowWindow(H, SW_Hide); // Taskbar vertecken H steht für ein belibiges Handle nur das Problem ist das das fenster komplett veerschwindet -.- |
Re: Fenster(Handle) aus Taskleiste entfernen
Dann eben
![]() |
Re: Fenster(Handle) aus Taskleiste entfernen
|
Re: Fenster(Handle) aus Taskleiste entfernen
Hi nochmal das bringt mich alles nicht weiter :(
SW_HIDED versteckt das ganze Programm un bringt mir so garnix :( |
Re: Fenster(Handle) aus Taskleiste entfernen
Hast du wohl das GetParent() übersehen. ;)
|
Re: Fenster(Handle) aus Taskleiste entfernen
Was meinst du damit ? muss ich das benutzen ? wo wird darauf eingegangen ?
|
Re: Fenster(Handle) aus Taskleiste entfernen
GetParent() nützt doch auch nix, wenn das fremde Programm kein Delphi-Programm ist.
Aber was ist mit DeleteTab() über dieses Interface, das müsste doch klappen? |
Re: Fenster(Handle) aus Taskleiste entfernen
:oops: Heisst ja GetWindow...
Das ganze benutzt man so:
Delphi-Quellcode:
ShowWindow versteckt in diesem Fall das Fenster.
ShowWindow(GetWindow(Handle,GW_OWNER),SW_HIDE);
GetWindow findet in diesem Fall den Taskbar-Eintrag des Fensters. |
Re: Fenster(Handle) aus Taskleiste entfernen
Die Handles hab ich ja alle die ich brauche muss nur noch wissen wie ich es hinbekomme das net das ganze Programm versteckt wird -.- wie meinst du das scp ?
|
Re: Fenster(Handle) aus Taskleiste entfernen
Ich meine, das bei Delphi-Programmen (wie im anderen Beitrag schon beschrieben) der Taskbar-Eintrag und das Hauptform getrennt sind.
Das sind zwei verschiedene Fenster, in der Regel TApplication und TForm1. Deswegen kann man hier auf einfache Weise den Taskbareintrag verstecken. Was aber aber fremden Programmen in nonVCL oder C++ usw. nicht geht. |
Re: Fenster(Handle) aus Taskleiste entfernen
An die Handles komme ich so
Code:
Is das dedn soweit richtig ? habe ich im Netz gefunden =)
function GetText(Wnd: HWND): string;
var textlength: Integer; Text: PChar; begin textlength := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0); if textlength = 0 then Result := '' else begin GetMem(Text, textlength + 1); SendMessage(Wnd, WM_GETTEXT, textlength + 1, Integer(Text)); Result := Text; FreeMem(Text); end; end; function EnumWindowsProc(Wnd: HWND; lParam: lParam): BOOL; stdcall; begin Result := True; if (IsWindowVisible(Wnd) ) and ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or (GetWindowLong(Wnd, GWL_HWNDPARENT) = GetDesktopWindow)) and (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then begin //ShowWindow(wnd, SW_Show); // Taskbar vertecken form1.Listbox2.Items.add(IntToStr(Wnd)); if IsIconic(wnd) then begin {versteckt} Form1.Listbox1.Items.Add('Handle: ' + IntToStr(Wnd) + ',Text: ' + GetText(Wnd) + ' Versteckt!') end else begin Form1.Listbox1.Items.Add('Handle: ' + IntToStr(Wnd) + ',Text: ' + GetText(Wnd) + ' Sichtbar!'); end; end; end; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Param: Longint; begin listbox1.Clear; EnumWindows(@EnumWindowsProc, Param); end; nun wollte ich halt die Fenster aus der Taskbar holen |
Re: Fenster(Handle) aus Taskleiste entfernen
Sollte es keine Delphi VCL Anwendung sein, klappt das natürlich, da nur die VCL das unsichtbare Anwendungsfenster hat.
|
Re: Fenster(Handle) aus Taskleiste entfernen
aber nun selbst wenn ich es so mache
ShowWindow(form1.handle, SW_Hide); verschwindet auch immer die ganze Anwendung :( mach ich da was falsch ? |
Re: Fenster(Handle) aus Taskleiste entfernen
Das wurde dir oben doch erklärt. :roll:
|
Re: Fenster(Handle) aus Taskleiste entfernen
hab es nun so probiert
Owner:=GetWindow(Wnd,GW_OWNER); ShowWindow(Owner, SW_Hide); // Taskbar vertecken nur das geht nur mit Form1.handle statt wnd -.- kann mri den keiner grade mti dem Code den ich gepostet hab nen kleines Bsp machen ? :(( |
Re: Fenster(Handle) aus Taskleiste entfernen
Die einzige Möglichkeit wäre, unter Verwendung von
![]()
Delphi-Quellcode:
uses
ComObj; const CLSID_TaskbarList: TGUID = '{56FDF344-FD6D-11d0-958A-006097C9A090}'; type ITaskbarList = interface ['{56FDF342-FD6D-11d0-958A-006097C9A090}'] function HrInit: HResult; stdcall; function AddTab(hwnd: Cardinal): HResult; stdcall; function DeleteTab(hwnd: Cardinal): HResult; stdcall; function ActivateTab(hwnd: Cardinal): HResult; stdcall; function SetActiveAlt(hwnd: Cardinal): HResult; stdcall; end; function DeleteTabEntry(Wnd: hWnd) : boolean; const IID_ITaskBarList: TGUID ='{56FDF342-FD6D-11D0-958A-006097C9A090}'; var FTaskbarList: ITaskBarList; begin result := (Wnd <> 0); if result then try FTaskbarList := CreateComObject(CLSID_TaskbarList) as ITaskbarList; FTaskbarList.HrInit; result := (FTaskbarList.DeleteTab(Wnd) = S_OK); except On EOleSysError do result := false else raise; end; end; |
Re: Fenster(Handle) aus Taskleiste entfernen
coool das geht nur wie zum himmelswillen bekomm ich dedn wida dahin ? geht das auch irgendwie ? danke schonmals =)
|
Re: Fenster(Handle) aus Taskleiste entfernen
Hat sich erledigtg :D danke schonmal echt super =)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz