Seite 1 von 2
Anwendung aus der Taskleiste löschen
Verfasst: 29.07.2008 01:00
von Tompazi
Wie kann ich
eine bestimmte Anwendung aus der Taskleiste löschen?
Ich hab mich umgeschaut und das hier gefunden (Es löscht alle Anwendungen aus der Taskleiste):
Code: Alles auswählen
ShowWindow_(FindWindowEx_(FindWindowEx_(FindWindow_("Shell_TrayWnd",0),0,"ReBarWindow32",0),0,"MSTaskSwWClass",0),#SW_HIDE)
Delay(3000)
ShowWindow_(FindWindowEx_(FindWindowEx_(FindWindow_("Shell_TrayWnd",0),0,"ReBarWindow32",0),0,"MSTaskSwWClass",0),#SW_SHOW)
(wäre nett wenn mir jemand diesen Code erklärt)
Ich hab ein bisschen herum gespielt aber bin nicht drauf gekommen...
MfG Tompazi
Re: Anwendung aus der Taskleiste löschen
Verfasst: 29.07.2008 07:33
von ts-soft
Tompazi hat geschrieben:Wie kann ich eine bestimmte Anwendung aus der Taskleiste löschen?
Code: Alles auswählen
Procedure HideFromTaskBar(hWnd.l, Flag.l)
Protected TBL.ITaskbarList
CoInitialize_(0)
If CoCreateInstance_(?CLSID_TaskBarList, 0, 1, ?IID_ITaskBarList, @TBL) = #S_OK
TBL\HrInit()
If Flag
TBL\DeleteTab(hWnd)
Else
TBL\AddTab(hWnd)
EndIf
TBL\Release()
EndIf
CoUninitialize_()
DataSection
CLSID_TaskBarList:
Data.l $56FDF344
Data.w $FD6D, $11D0
Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
IID_ITaskBarList:
Data.l $56FDF342
Data.w $FD6D, $11D0
Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
EndDataSection
EndProcedure
Verfasst: 29.07.2008 11:55
von Tompazi
Und wie bring ich das zum laufen? ein
hat nicht gereicht.
MfG Tompazi
Verfasst: 29.07.2008 12:14
von Fluid Byte
Du bist aber clever genug nicht nach Fenstertiteln zu suchen die sich verändern, oder? Nimm lieber den Klassennamen zum suchen.
Verfasst: 29.07.2008 12:31
von Tompazi
Sorry, Ich blicke da nicht ganz durch, was ist der Klassenname des Programms/Fensters. In msdn steht:
lpClassName
[in] Pointer to a null-terminated string that specifies the class name or a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpClassName; the high-order word must be zero.
If lpClassName points to a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names.
If lpClassName is NULL, it finds any window whose title matches the lpWindowName parameter.
Also ich muss den Klassennamen zuerst setzten, so gehts aber nicht..
MfG Tompazi
Verfasst: 29.07.2008 12:31
von RSBasic
Code: Alles auswählen
hWnd = FindWindow_("Notepad, SciCalc oder sonst was^^",0)
Verfasst: 29.07.2008 12:35
von Tompazi
Etwas genauer bitte
MfG Tompazi
Verfasst: 29.07.2008 12:49
von RSBasic
http://msdn.microsoft.com/en-us/library/ms633499.aspx
Also du kannst entweder nach Fenstertitel suchen
oder auch nach Classname.
Fenstertitel:
Ist aber nicht so geeignet.
Wenn Fenstertitel geändert wird, dann kann dein Programm das Fenster nicht mehr finden.
Classname:
Das ist die beste Lösung, da Classname immer gleich bleibt, egal ob Titel geändert wird oder nicht.
Um Classname ermitteln zu können, gibt es u.a. das Programm:
http://web56.login-1.loginserver.ch/rsb ... ShoWin.exe (Dieses Programm habe ich nicht selber programmiert)
Enfach Fadenkreuz auf das komplette Fenster ziehen/zeigen, dann bekommst du Classname des Fensters.
Verfasst: 29.07.2008 13:17
von Tompazi
Danke, laut diesem Programm ist der CLassName: "WindowClass_0"
und so finde ich auch ein Programm aber der Code von ts-soft läuft trotzdem nicht
MfG Tompazi
Verfasst: 29.07.2008 13:25
von Fluid Byte
Das ist dann doch eine mit PB erstellte Anwendung. Ist das eventuell sogar deine? Oder vielleicht eine bekannte Anwendung aus CodeArchiv oder Forum wo der Quelltext mit bei ist.