Gå til innhold

Endre Showintaskbar til false for et annet program


Anbefalte innlegg

Jeg trenger å få et tredjeparts program som ligger i Taskbar til å ikke ligge der lengre. Programmet bør forsatt være på ALT+TAB, men det er ikke veldig viktig.

 

Altså, vinduet skal vises, men den skal ikke være på taskbaren.

 

Noen som vet om en måte å få til dette på? Et API eller noe?

 

 

Mvh ze5400

Lenke til kommentar
Videoannonse
Annonse
  • 1 måned senere...
Jeg trenger å få et tredjeparts program som ligger i Taskbar til å ikke ligge der lengre. Programmet bør forsatt være på ALT+TAB, men det er ikke veldig viktig.

 

Altså, vinduet skal vises, men den skal ikke være på taskbaren.

 

Noen som vet om en måte å få til dette på? Et API eller noe?

 

 

Mvh ze5400

8348728[/snapback]

 

Dette er burde ikke være så vanskelig bare du kan programmere, og kjenner til hvordan man bruker kommandoer til å "manipulere" windows. Bare å assigne riktig vindu til en variabel, også gjøre sånn at det ikke vises i Taskbar/Oppgavelinja :p

Lenke til kommentar
Jeg garanterer deg at ze kan programmere :)

 

Man skulle mistenke at dette ble gjort med ShowWindowAsynch eller SetWindowPlacement, men jeg kan ikke se noen argumenter som passer....taskbar blir ikke engang nevnt...

8760374[/snapback]

 

Da veit jeg at han kan programmere :p

Men jeg fant ut åssen man skulle gjøre det, man må først få HWND fra vinduet man vil finne. Jeg kan programmere litt i delphi, og det er ikke så vanskelig å konvertere til et annet språk tror jeg, så kan skrive koden her.

 

Klikk for å se/fjerne innholdet nedenfor

uses
 Windows;
...
function HideFromTaskbar(WindowCaption: string): Boolean;
var
hWnd: HWND;
begin
result := false; //Returnerer false hvis man ikke finner vinduet

hWnd := FindWindow(nil, PCHar(WindowCaption));

if hWnd <> 0 then
 begin
  ShowWindow(hWnd, SW_HIDE); //Skjuler vinduet du valgte
  SetWindowLong(hWnd, GWL_EXSTYLE, not(WS_EX_APPWINDOW)); //Fjerner WS_EX_APPWINDOW fra det vinduet du valgte
  ShowWindow(hWnd, SW_SHOW); //Viser vinduet igjen
 
  result := true; //Returnerer true når det forrige er gjort
 end;
end;

 

håper dette gir en pekepinn ;)

Var lett i Delphi, aner ikke hva ze programmerer i, men tror ikke det burde være vanskelig å konvertere koden :)

 

EDIT: Glemte å skrive uses-klassen i koden :p Dere må jo få en pekepinn på hva dere skal inkludere for å få tilgang til de funksjonene jeg har brukt :)

Endret av hjahre
Lenke til kommentar

Vil ikke not(WS_EX_APPWINDOW) blir til f.eks. 11111111111111110111111111111111?

Tror nesten man burde bruke exclusive Or der (^).

 

#define WIN32_LEAN_AND_MEAN
#include <Windows.h>

void HideFromTaskBar(HWND hWnd)
{
 // Bruk ShowWindowAsync på vinduer i andre threads
 ShowWindowAsync(hWnd, SW_HIDE);
 // SetWindowLong er byttet ut med funksjonen ShowWindowLongPtr
 SetWindowLongPtr(hWnd, GWL_EXSTYLE, GetWindowLongPtr(hWnd, GWL_EXSTYLE) ^ WS_EX_APPWINDOW);
 ShowWindowAsync(hWnd, SW_SHOW);
}

void HideFromTaskBar(char * windowtitle)
{
 HWND wnd = FindWindow(0, windowtitle);
 // Sjekk om window handlen vi har fått er riktig
 if(wnd != 0)
   HideFromTaskBar(wnd);
}

Endret av GeirGrusom
Lenke til kommentar
Vil ikke not(WS_EX_APPWINDOW) blir til f.eks. 11111111111111110111111111111111?

Tror nesten man burde bruke exclusive Or der (^).

8762969[/snapback]

 

Grunnen til at jeg brukte not, var at jeg leste litt rundt på nettet og det var en der som sa han hadde brukt not istedenfor or, på grunn av hvis han gjorde det så ville ikke programmet minimeres ordentlig. For på msdn, står det at man skal bruke

GetWindowLong(hwnd, GWL_EXSTYLE) or WS_EX_TOOLWINDOW //eller bare bruke WS_EX_TOOLWINDOW

for å gjemme et program fra oppgavelinja. Men da får programmet bare lukk-knappen. Og med

not(WS_EX_APPWINDOW)

skjuler den seg fint fra oppgavelinja men beholder de opprinnelige lukk, minimer og maksimer/gjenopprett-knappene.

Tenkte bare jeg kunne skrive litt hvorfor jeg valgte not og ikke or ;)

Lenke til kommentar

Høres ut som hack spør du meg :p

Men Exlcusive Or vil jo bare sette det ene bittet til 0, Vanlig or vil bare legge til dette bitet hvis det ikke allerede er satt.

 

I Delphi heter exclusive or Xor hvis jeg ikke tar feil.

 

Edit: Hvordan fant du ut dette? jeg lette og lette uten å finne det :)

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...