Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Programm bei Start minimieren (nicht anzeigen)
DelphiNoob - Mi 08.01.03 17:29
Titel: Programm bei Start minimieren (nicht anzeigen)
... direkt minimieren und in TNA.
STOP! Bevor nun jemand schreit: "Suchfunktion", möge er doch erstmal die Finger still halten ;) ! Danke...
Ich weiß wie man ein Programm in der TNA anzeigt, nur habe ich ein Problem!
Wenn ich mein Programm starte, erscheint auch brav das Symbol in der Systray, und auch der Taskbar Button wird entfernt.
Alles schön und gut, nun will ich das der Form nicht mehr da ist. Also mit "Hide;" versucht. Tut sich nichts. Dann per ShowWindow und SW_HIDE. Tut sich auch nichts...
Ich will diese *piep* Form einfach weg haben, und nur noch das Icon in der Tray (also nix minimieren oder so...)!!!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.FormCreate(Sender: TObject); begin
TaskBarAddIcon;
ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW );
end; |
Plz Help!
PS.: Ich habe für obiges Problem schon die Suchfunktion benutzt. Also gehässige Kommentare in der Richtung bitte bei sich behalten, ausdrucken, und an die Wand hängen.
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
matze - Mi 08.01.03 18:20
lass dir mal den projektquelltext anzeigen (gibt denke ich im menüpunkt project) und lösche dann einfach die codee zeile form1.show;
und schon wird das forumular beim programmstart nicht mehr angezeigt !!!
DelphiNoob - Mi 08.01.03 18:26
Ähm ja...
ich hab mal versucht...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| uses Forms, Unit1 in 'Unit1.pas' ;
{$R *.res}
begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. |
... die Zeile "Application.CreateForm(TForm1, Form1);" raus zu nehmen, dann tut sich aber nicht mehr viel...
Achso, und noch ne Frage: Wie schaff ich es, das wenn ich aufs icon in der TNA rechtsklicke Popupmenu XY angezeigt wird?
Thx
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
DelphiNoob - Mi 08.01.03 18:34
Popup Menü Prob hab ich so gelöst... funzt auch...
Dank des Forums :)!
Quelltext
1:
| Menu.Popup((Mouse.CursorPos.X),(Mouse.CursorPos.Y)); |
matze - Mi 08.01.03 18:35
nicht create rausnehmen !!! show rausnehmen !!!
DelphiNoob - Mi 08.01.03 18:50
Aber ich hab da doch kein Show!!!
Wenn ich auf Project ---> Quelltext anzeigen gehe, dann hab ich da:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| program AntiInisNew;
uses Forms, Unit1 in 'Unit1.pas' ;
{$R *.res}
begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. |
Hab ich nen Sehfehler oder wo is Show?
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
Ex0rzist - Mi 08.01.03 19:17
Probiere mal das in deiner Form1.Create-Prozedur: Application.ShowMainForm := False;
DelphiNoob - Mi 08.01.03 20:47
Tut mir leid, das bring auch nichts...
Wie machen das denn Programme wie z.b. Kazaa oder so?
Ich meine, die verschwinden zwar beim Minimieren, aber der Form ist ja auch GANZ WEG.
?! How do ?!
DelphiNoob - Mi 08.01.03 21:07
Und der Tipp wirkt auch nicht:
http://www.swissdelphicenter.ch/de/showcode.php?id=7
Ich poste einfach mal den ganzen Source...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| program AntiInisNew;
uses Forms, Unit1 in 'Unit1.pas' ;
{$R *.res}
begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellApi, AppEvnts, Menus;
const WM_TASKBAREVENT = WM_USER+1;
type TForm1 = class(TForm) Menu: TPopupMenu; Beenden1: TMenuItem; Explorer1: TMenuItem; DosCommand1: TMenuItem; Systemtasten1: TMenuItem; DesktopFunktionen1: TMenuItem; SymboleAnAus1: TMenuItem; askleisteAnAus1: TMenuItem; StartbuttonAnAus1: TMenuItem; SystrayAnaus1: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private procedure WMTASKBAREVENT(var message: TMessage); message WM_TASKBAREVENT; public end;
var Form1: TForm1; mHandle: THandle; implementation
{$R *.dfm}
procedure TForm1.WMTASKBAREVENT(var message: TMessage); begin case message.LParamLo of WM_RBUTTONDOWN : begin Menu.Popup((Mouse.CursorPos.X),(Mouse.CursorPos.Y)); end; end; end;
procedure TaskBarAddIcon; var tnid: TNOTIFYICONDATA ; begin with tnid do begin cbSize := sizeof(TNOTIFYICONDATA); Wnd := Form1.handle; uID := 1; uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; uCallbackMessage := WM_TASKBAREVENT; hIcon := application.icon.handle; end;
strcopy(tnid.szTip,'Anti INiS 1.2'); Shell_NotifyIcon(NIM_ADD, @tnid); end;
procedure TaskBarRemoveIcon; var tnid: TNOTIFYICONDATA ; begin tnid.cbSize := sizeof(TNOTIFYICONDATA); tnid.Wnd := Form1.handle; tnid.uID := 1; Shell_NotifyIcon(NIM_DELETE, @tnid); end;
procedure TForm1.FormCreate(Sender: TObject); begin
TaskBarAddIcon;
ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW );
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin TaskBarRemoveIcon; end;
Initialization mHandle:=CreateMutex(nil,True,'Anti INiS 1.2'); if GetLastError=ERROR_ALREADY_EXISTS then Halt;
finalization if mHandle<>0 then CloseHandle(mHandle)
end. |
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
matze - Mi 08.01.03 21:19
dann machs auf die mathode:
timer auf die kompo, timer zeit auf 0 ms stellen, im timer dann folgende action ausführen:
Delphi-Quelltext
1: 2:
| application.minimize; timer1.enabled := false; |
das ist zwar die holzhammer methode aber sie wirkt !!!
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
DelphiNoob - Do 09.01.03 13:48
Sowas hab ich mir auch schon überlegt.. das Problem ist nur, das du dann so ein kleinen Titelbalken mit einem [X] über dem Startbutton liegen hast.
Habs vorerst mal anders gelöst: Boarder = None, und dann beim Create Width und Heigth = 0.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!