Usunięcia okna z paska zadań(start).

dział ogólny

Usunięcia okna z paska zadań(start).

Nowy postprzez banita » czwartek, 18 czerwca 2009, 16:11

Chce usunac aplikacje z paska ale okno pozostawic widoczne.
kod:
Kod: Zaznacz cały
ShowWindow(this->Handle,SW_HIDE);

powoduje usuniecie aplikacji z paska i ukrycie okna.
kod:
Kod: Zaznacz cały
   HWND handle_ = GetWindow(this->Handle,GW_OWNER);
   ShowWindow(handle_,SW_HIDE);

nie daje zadnego efektu.
Kod: Zaznacz cały
ShowWindow(Application->Handle,SW_HIDE);

rowniez nie daje zadnego efektu

mam program wraz ze zrodlami (DELPHI) w ktorym po nacisnieciu przycisku na pasku pojawia sie aplikacja, po ponownym nacisnieciu znika itd... przy czym samo okno aplikacji caly czas jest aktywne i mozna normlanie pracowac.
oto kod procedury w delphi:
Kod: Zaznacz cały
procedure TForm1.Button1Click(Sender: TObject);
var
  hwndOwner: HWnd;
begin
if applicationvisible=0 then applicationvisible:=1 else
applicationvisible:=0;
  hwndOwner := GetWindow(Handle, GW_OWNER);
   ShowWindow(hwndOwner,applicationvisible);
end;

niestety ten kod po przelozeniu na C++ nie daje zadnego efektu.

IDE to C++Builder 2007 + wszystkie update.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez Miroo_007 » czwartek, 18 czerwca 2009, 18:13

Mi pomogło umieszczenie programu w Zasobniku i usunięcie programu z paska narzędzi za pomocą:
Kod: Zaznacz cały
ShowWindow(Application->Handle,SW_HIDE);
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez Cyfrowy Baron » czwartek, 18 czerwca 2009, 18:25

► patrz serwis: Cyfrowy Baron dziaÅ‚: porady -> API; porada: Usuwanie ikony programu z paska zadaÅ„.

Najlepiej jest umieścić funkcję w zdarzeniu OnPaint.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez banita » czwartek, 18 czerwca 2009, 18:32

no wlasnie chodzi o to iz nie dziala. w pierwszym poscie opisalem jakie warianty probowalem i jakie byly efekty.
jesli kod z porady dziala bylbym niezmiernie wdzieczny za zalaczenie projektu z jednym buttonem ktory ukrywa/pokazuje program na pasku.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez Cyfrowy Baron » czwartek, 18 czerwca 2009, 21:05

A w jakim systemie Windows odpalasz ten program?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez lidamian » czwartek, 18 czerwca 2009, 21:35

U mnie Twoje rozwiązanie powoduje mignięcie belki na pasku. Co prawda rozwiązuje to problem ale widać, że nie jest to profesjonalne ;/ Znacie jakiś sposób na poprawienie tego defektu?
Avatar użytkownika
lidamian
Bladawiec
Bladawiec
 
Posty: 29
Dołączył(a): piątek, 19 września 2008, 15:25
PodziÄ™kowaÅ‚ : 4
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez banita » czwartek, 18 czerwca 2009, 21:47

Win XP SP3

w piwerszym poscie podalem kod funkcji w delphi i ten kod dziala poprawnie. niestety po przelozeniu tego do c++ brak jakiegokolwiek efektu w dzialaniu.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez GoldWolf » czwartek, 18 czerwca 2009, 21:54

banita napisał(a):Win XP SP3

w piwerszym poscie podalem kod funkcji w delphi i ten kod dziala poprawnie. niestety po przelozeniu tego do c++ brak jakiegokolwiek efektu w dzialaniu.

Dziwne bo wszystkim działa, a tak z ciekawość spróbuj coś takiego
Kod: Zaznacz cały
   ShowWindow(FindWindowEx(FindWindow("Shell_TrayWnd", NULL), HWND(0), "ReBarWindow32", NULL),
               SW_HIDE);
//Nie zapomnij o tym by przywrócić ;-)
   ShowWindow(FindWindowEx(FindWindow("Shell_TrayWnd", NULL), HWND(0), "ReBarWindow32", NULL),
               SW_SHOW);     
to wprawdzie połowiczny sukces, bo powinny zniknąć wszystko z paska. Wprawdzie ostani paramete NULL -> to jest nazwa okna ale mnie to nie działa.
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein

Błędów nie popełnia ten, kto nic nie robi. - Theodore Roosevelt
Avatar użytkownika
GoldWolf
Homos antropiczny
Homos antropiczny
 
Posty: 116
Dołączył(a): piątek, 16 stycznia 2009, 18:42
PodziÄ™kowaÅ‚ : 8
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Siódemka Profesjonalna
Kompilator: Microsoft Visual Studio 2010
Version 10.0.30319.1
Gadu Gadu: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez Cyfrowy Baron » piÄ…tek, 19 czerwca 2009, 07:23

Skoro to WinXP to nie rozumiem.

U mnie to działa bez zarzutu.
Co do migania ikoną na pasku zadań to można to zrobić tak:

► mruganie ikonÄ… na pasku zadaÅ„ 

Prawdopodobnie masz uszkodzony system, albo też używasz zmodyfikowanego windowsa ze zmienioną powłoką.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez banita » piÄ…tek, 19 czerwca 2009, 15:09

system jest oryginalny. nawet sp3 jest integrowany przez microsoft a nie dogrywany prze zemnie.
wyglad windowsa jest rowniez oryginalny(zune) tzn wydany przez microsoft, nic nie jest crackowane.

dla jasnosci powtarzam raz jeszcze. w pierwszym poscie dalem kod w delphi, posiadam exec tego programu(sam nie moge skompilwoac) i dziala tak jak chce.
exec na 100% pochodzi z tego kodu poniewaz jest to jeden z programow zawartych w komercyjnym "Collection of Delphi Examples", chyba ze daja inne a kompiluja co innego...

bardzo prosze o jeden malutki projekt ktory wykonuje taka czynnasc abym mogl zobaczyc czy nie przeoczylem jakiegos szczegulu.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez Cyfrowy Baron » piÄ…tek, 19 czerwca 2009, 15:59

Już znalazłem przyczynę.

Otwórz plik źródłowy projektu, np. Project1.cpp -> czyli w menu Project wybierz View Source:

Zobaczysz takie wpisy:

Kod: Zaznacz cały
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    try
    {
         Application->Initialize();
        SetApplicationMainFormOnTaskBar(Application, true);
         Application->CreateForm(__classid(TForm1), &Form1);
         Application->CreateForm(__classid(TForm2), &Form2);
         Application->Run();
    }
    catch (Exception &exception)
    {
         Application->ShowException(&exception);
    }
    catch (...)
    {
         try
         {
             throw Exception("");
         }
         catch (Exception &exception)
         {
             Application->ShowException(&exception);
         }
    }
    return 0;
}


usuń wpis: SetApplicationMainFormOnTaskBar(Application, true);

Powinno zostać:

Kod: Zaznacz cały
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    try
    {
         Application->Initialize();
         // tutaj byÅ‚ wpis który usunÄ…Å‚em.
         Application->CreateForm(__classid(TForm1), &Form1);
         Application->CreateForm(__classid(TForm2), &Form2);
         Application->Run();
    }
    catch (Exception &exception)
    {
         Application->ShowException(&exception);
    }
    catch (...)
    {
         try
         {
             throw Exception("");
         }
         catch (Exception &exception)
         {
             Application->ShowException(&exception);
         }
    }
    return 0;
}
//---------------------------------------------------------------------------


dalej postępuj jak w poradzie.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Usunięcia okna z paska zadań(start).

Nowy postprzez banita » piÄ…tek, 19 czerwca 2009, 17:40

dokladnie! to rozwiazuje problem. nie bardzo rozumiem czemu ta funkcja sluzy poniewaz dokumentacja nic nie mowi na jej temat, poza okresleniem prototypu. wydaje mi sie ze ta funkcja jest charakterystyczna tylko dla wersji 2007 buildera.

szczerze to nie bardzo rozumiem czemu po usunieciu tego wpisu, kod:
Kod: Zaznacz cały
ShowWindow(Application->Handle,SW_HIDE)

usuwa okno z paska a samo okno pozostaje widoczne.
za dokumentacja:
SW_HIDE
Hides the window and activates another window.

a zachowanie jest inne. samo okno jest nadal widoczne i aktywne. znika jedynie z paska.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana


Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości