ze5400 Skrevet 10. april 2007 Del Skrevet 10. april 2007 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
Jonas Skrevet 10. april 2007 Del Skrevet 10. april 2007 Søkte litt rundt etter kode og fant samtidig ut at det finnes et par taskbar-verktøy allerede. Ta en kikk her. Lenke til kommentar
ze5400 Skrevet 10. april 2007 Forfatter Del Skrevet 10. april 2007 Har søkt etter det alt De programmene jeg finner gjemmer vinduene også, og det er ikke det jeg vil oppnå. Koden jeg finner er for å gjemme sitt eget program. Lenke til kommentar
hjahre Skrevet 1. juni 2007 Del Skrevet 1. juni 2007 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 Lenke til kommentar
GeirGrusom Skrevet 1. juni 2007 Del Skrevet 1. juni 2007 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... Lenke til kommentar
hjahre Skrevet 1. juni 2007 Del Skrevet 1. juni 2007 (endret) 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 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 Dere må jo få en pekepinn på hva dere skal inkludere for å få tilgang til de funksjonene jeg har brukt Endret 1. juni 2007 av hjahre Lenke til kommentar
GeirGrusom Skrevet 2. juni 2007 Del Skrevet 2. juni 2007 (endret) 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 2. juni 2007 av GeirGrusom Lenke til kommentar
hjahre Skrevet 2. juni 2007 Del Skrevet 2. juni 2007 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
GeirGrusom Skrevet 2. juni 2007 Del Skrevet 2. juni 2007 (endret) Høres ut som hack spør du meg 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 2. juni 2007 av GeirGrusom Lenke til kommentar
hjahre Skrevet 2. juni 2007 Del Skrevet 2. juni 2007 Oki, jeg visste ikke hva or og xor gjorde for å være her ærlig, men nå veit jeg det Jeg søkte litt på nettet, jeg fant denne sida (http://www.programmersheaven.com/mb/delphikylix/58783/58783/readmessage.aspx) også tenkte jeg at det måtte gå an å finne et hvilket som helst vindu, og da fant jeg FindWindow i hjelpefila. Deretter lagde jeg koden, var ikke noe vanskeligere enn det Lenke til kommentar
Emancipate Skrevet 3. juni 2007 Del Skrevet 3. juni 2007 Du kan også lage et usynlig vindu og sette dette vinduet som parent til det vinduet du vil fjerne knappen fra. Lenke til kommentar
GeirGrusom Skrevet 4. juni 2007 Del Skrevet 4. juni 2007 Men for man registrert vinduer for andre threads da? Lenke til kommentar
Emancipate Skrevet 4. juni 2007 Del Skrevet 4. juni 2007 Men for man registrert vinduer for andre threads da? 8777187[/snapback] Hæh? Du lager selvfølgelig vinduet i din egen prosess. Så bruker du SetWindowLong(hWndHide, GWL_HWNDPARENT, hWndInvisibleDummy). Lenke til kommentar
GeirGrusom Skrevet 4. juni 2007 Del Skrevet 4. juni 2007 ....og det funker? trodde ikke man kunne jobbe på tvers av threads på den måten.... Lenke til kommentar
Emancipate Skrevet 4. juni 2007 Del Skrevet 4. juni 2007 Det funker i hvertfall i XP. I Vista må programmet ditt sikkert ha samme rettigheter som programmet du skal skjule knappen til. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå