In Tray starten?
-
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { ShowWindow(Application->Handle, SW_HIDE); try { ShowWindow(Application->Handle, SW_HIDE); Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); ShowWindow(Application->Handle, SW_HIDE); Application->Run(); ShowWindow(Application->Handle, SW_HIDE); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; }
void __fastcall TForm1::FormCreate(TObject *Sender) { ShowWindow(Application->Handle, SW_HIDE); DWORD dwExStyle=GetWindowLong(Application->Handle,GWL_EXSTYLE); dwExStyle |= WS_EX_TOOLWINDOW; SetWindowLong(Application->Handle,GWL_EXSTYLE,dwExStyle); }
TrayIcon1->Hide = true;
TrayIcon1->Visible = true;
-
In Deinem Code steht nicht
Application->ShowMainForm = false;
Schau mal nochmal zu den von mir geposteten Code.
Hier noch ein Link:
http://www.bytesandmore.de/rad/index.htm?http://www.bytesandmore.de/rad/cpp/snipp/sc06024.phpGruss
-
Oh
, sowas auch
.. tschuldigung
Stimmt, scheinbar verliert er nun nicht mehr den Focus beim start. aber wie bekomme ich das Programm wieder aus der Task?
void __fastcall TForm1::TrayIcon1Click(TObject *Sender) { Application->ShowMainForm = true; }
..machts leider nicht. Ich kann den Task auch nur noch mit den Taskmanager beenden.
-
Hallo Reiner.
Du musst ein PopupMenu in die TrayIconkomponente einbinden. Damit kannst Du dann z.B. eine Ereignisbehandlungsroutine für "Beenden" schreiben.
-
Danke. Aber sichtbar bekommt man die Form nicht mehr?
-
Doch schon. Aber dann bekommt die Form den Focus.
Zum sichtbar machen:
Application->ShowMainForm = true; ShowWindow(Application->Handle, SW_SHOW); Application->ProcessMessages();
-
TrayIcon1->PopupMenu = PopupMenu1;
TrayIcon1->PopupMenuOn = imClick;
TrayIcon1->RestoreOn = imClick
TrayIcon1->OnClick = RestoreClick;// header TPopupMenu *PopupMenu1; TMenuItem *Restore; // cpp void __fastcall TForm1::RestoreClick(TObject *Sender) { Application->ShowMainForm = true; ShowWindow(Application->Handle, SW_SHOW); Application->ProcessMessages(); }
Aber ich bekomme weder ein Popup noch es wieder gross
Den Focus darf es nur nicht beim Starten verlieren, wenn ein Benutzer damit arbeiten will ist es ok.
-
Hallo
Was noch gefehlt hat, war, dass die Form auch noch mit Show() gezeigt werden muss.
void __fastcall TForm1::Zeigen1Click(TObject *Sender) { // Form wird wieder hergestellt // Item des PopupMenus Application->ShowMainForm = true; ShowWindow(Application->Handle, SW_SHOW); Form1->Show(); Application->ProcessMessages(); } //--------------------------------------------------------------------------- void __fastcall TForm1::TrayIcon1Click(TObject *Sender) { // PopupMenu zeigen POINT test; GetCursorPos(&test); PopupMenu1->Popup(test.x, test.y); }
Du kannst auch das OnMouseUp-Ereignis nehmen, um zu prüfen, ob linle oder rechte Maustaste gedrückt wurde.
-
Wahnsinn! Es funktioniert jetzt alles, Fokus bleibt erhalten und man kann damit arbeiten.
Schade das es nur über diesen albernen Umweg geht.
Grosses Dankeschön! Und vielen Dank für deine Gedult *verbeug*
-
Gerne wieder...
MFG