Anwendung aus der Taskleiste löschen

Anfängerfragen zum Programmieren mit PureBasic.
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Anwendung aus der Taskleiste löschen

Beitrag 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
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Anwendung aus der Taskleiste löschen

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Beitrag von Tompazi »

Und wie bring ich das zum laufen? ein

Code: Alles auswählen

hWnd = FindWindow_(0,"WindowName")
hat nicht gereicht.

MfG Tompazi
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Du bist aber clever genug nicht nach Fenstertiteln zu suchen die sich verändern, oder? Nimm lieber den Klassennamen zum suchen.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Beitrag 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..

Code: Alles auswählen

  RegisterClass_("Klassenname")


:oops: :oops:
MfG Tompazi
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Code: Alles auswählen

hWnd = FindWindow_("Notepad, SciCalc oder sonst was^^",0)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Beitrag von Tompazi »

:?
Etwas genauer bitte

MfG Tompazi
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

http://msdn.microsoft.com/en-us/library/ms633499.aspx

Also du kannst entweder nach Fenstertitel suchen oder auch nach Classname.

Fenstertitel:

Code: Alles auswählen

hWnd = FindWindow_(0,"Unbenannt - Editor")
Ist aber nicht so geeignet.
Wenn Fenstertitel geändert wird, dann kann dein Programm das Fenster nicht mehr finden.

Classname:

Code: Alles auswählen

hWnd = FindWindow_("Notepad",0)
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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Beitrag von Tompazi »

Danke, laut diesem Programm ist der CLassName: "WindowClass_0"

Code: Alles auswählen

 hWnd = FindWindow_("WindowClass_0",0)
Debug hWnd
und so finde ich auch ein Programm aber der Code von ts-soft läuft trotzdem nicht

MfG Tompazi
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten