Zurück   RR:Board > Computer > Programmierung & Entwicklung

Entwicklung und Coding in verschiedenen Programmiersprachen: Assembly, C++, C#, Perl, Delphi, .NET, Visual Basic...
Antwort
 
Themen-Optionen Thema durchsuchen

[Delphi] - In Tray verschieben
Alt 29.08.2007, 18:48   # 1
Smokers
Moderator
MIB
team
Bewertung:
Smokers hat die Renommee-Anzeige deaktiviert
Registriert seit: Sep 2005
Internet: VDSL 50Mbit
Beiträge: 2.178
Power: 29
Also habe folgendes Problem:
Habe ein Chatprogramm geschrieben/angepasst....wobei das zweitere zutrifft( steh ich zu ),
und nun würde ich jedoch gerne das Programm aus der Taskbar verschwinden lassen und in ein Tray Symbol das zur laufzeit ausgewählt werden soll , verwandeln.
Jedoch kenne ich mich mit den ShellAPIS wenig aus.

Könnte mir da mal jemand ein paar denk anstöße geben?
Habe schon google benutzt und nur fertige Scripte gefunden die mir
1. nicht wirklich einen Lösungsansatz geben
2. nicht auf meine Form etc zu übertragen gehen.

hier der Quellcode:

Code:
unit Chatmain; interface uses Classes, Messages, SysUtils, Graphics, Controls, ShellApi, Dialogs, Forms, Windows, QControls, QStdCtrls, QExtCtrls, QButtons, QForms, Sockets, QMenus, QTypes; type TForm1 = class(TForm) memRecv: TMemo; Panel1: TPanel; memSend: TMemo; Panel2: TPanel; btnSend: TButton; TcpClient1: TTcpClient; TcpServer1: TTcpServer; Panel3: TPanel; Label1: TLabel; edtRemoteHost: TEdit; combohide: TComboBox; btnhide: TButton; Label2: TLabel; procedure btnSendClick(Sender: TObject); procedure TcpServer1Accept(sender: TObject; ClientSocket: TCustomIpClient); procedure btnActivateServerClick(Sender: TObject); procedure memSendKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; // you must create your own thread to synch // writing to a gui component TClientDataThread = class(TThread) private public ListBuffer :TStringList; TargetList :TStrings; procedure synchAddDataToControl; constructor Create(CreateSuspended: Boolean); procedure Execute; override; procedure Terminate; end; var Form1: TForm1; //DataThread: TClientDataThread; implementation {$R *.xfm} //------------- TClientDataThread impl ----------------------------------------- constructor TClientDataThread.Create(CreateSuspended: Boolean); begin inherited Create(CreateSuspended); FreeOnTerminate := true; ListBuffer := TStringList.Create; end; procedure TClientDataThread.Terminate; begin ListBuffer.Free; inherited; end; procedure TClientDataThread.Execute; begin Synchronize(synchAddDataToControl); end; procedure TClientDataThread.synchAddDataToControl; begin TargetList.AddStrings(ListBuffer); end; //------------- end TClientDataThread impl ------------------------------------- procedure TForm1.btnActivateServerClick(Sender: TObject); begin TcpServer1.LocalPort := '5705' ; TcpServer1.Active := True; end; procedure TForm1.btnSendClick(Sender: TObject); var I: Integer; begin if memsend.Text <> '' then begin TcpClient1.RemoteHost := edtRemoteHost.Text; TcpClient1.RemotePort := '5705'; try if TcpClient1.Connect then for I := 0 to memSend.Lines.Count - 1 do TcpClient1.Sendln(memSend.Lines[i]); finally TcpClient1.Disconnect; end; //by Smokers start memrecv.Text := memrecv.text + #13+#10 + 'Du sagtest: ' +#13+#10+ memsend.Text; memsend.Clear; memsend.SetFocus; end; end; procedure TForm1.TcpServer1Accept(sender: TObject; ClientSocket: TCustomIpClient); var s: string; DataThread: TClientDataThread; begin // create thread DataThread:= TClientDataThread.Create(true); // set the TagetList to the gui list that you // with to synch with. DataThread.TargetList := memRecv.lines; // Load the Threads ListBuffer DataThread.ListBuffer.Add('__ "'+ClientSocket.LookupHostName(ClientSocket.RemoteHost) + '" schreibt: __'); s := ClientSocket.Receiveln; while s <> '' do begin DataThread.ListBuffer.Add(s); s := ClientSocket.Receiveln; end; // Call Resume which will execute and synch the // ListBuffer with the TargetList DataThread.Resume; end; procedure TForm1.memSendKeyPress(Sender: TObject; var Key: Char); begin if key = #13 then begin btnsend.Click; key:= #0; end; end; end.

  Smokers ist offline   Mit Zitat antworten

Alt 29.08.2007, 19:13   # 2
asdrexit
Kabel Wurm
rot rot rot 
Bewertung:
asdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkte
Registriert seit: Jul 2005
Beiträge: 858
Power: 24
DSDT
  asdrexit ist offline   Mit Zitat antworten

AW: In Tray verschieben
Alt 29.08.2007, 19:35   # 3
Smokers
Moderator
MIB
team
Bewertung:
Smokers hat die Renommee-Anzeige deaktiviert
Registriert seit: Sep 2005
Internet: VDSL 50Mbit
Beiträge: 2.178
Power: 29
Themenstarter
Kenne dieses Beispiel,

wenn ich es in mein Projekt erstmal Simpel einbaue bekomme ich anderuernde Kompilierungsfehler:

Inkompatible Typen :"HWND' und 'QOpenScrollViewH' ( so 8 mal )
und Undefinierter Bezeichner 'LParamLo'
etc


?? ^^°

  Smokers ist offline   Mit Zitat antworten

AW: In Tray verschieben
Alt 29.08.2007, 19:43   # 4
asdrexit
Kabel Wurm
rot rot rot 
Bewertung:
asdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkte
Registriert seit: Jul 2005
Beiträge: 858
Power: 24
Poste mal pls den Code wo du es schon eingebaut hast. Vllt kann ich dir helfen ihn richtig einzubauen.
  asdrexit ist offline   Mit Zitat antworten

AW: In Tray verschieben
Alt 29.08.2007, 19:49   # 5
Smokers
Moderator
MIB
team
Bewertung:
Smokers hat die Renommee-Anzeige deaktiviert
Registriert seit: Sep 2005
Internet: VDSL 50Mbit
Beiträge: 2.178
Power: 29
Themenstarter
Code:
unit Chatmain; interface uses Classes, Messages, SysUtils, Graphics, Controls, ShellApi, Dialogs, Forms, Windows, QControls, QStdCtrls, QExtCtrls, QButtons, QForms, Sockets, QMenus, QTypes; const WM_TASKBAREVENT = WM_USER + 1; type TForm1 = class(TForm) memRecv: TMemo; Panel1: TPanel; memSend: TMemo; Panel2: TPanel; btnSend: TButton; TcpClient1: TTcpClient; TcpServer1: TTcpServer; Panel3: TPanel; Label1: TLabel; edtRemoteHost: TEdit; combohide: TComboBox; btnhide: TButton; Label2: TLabel; procedure btnSendClick(Sender: TObject); procedure TcpServer1Accept(sender: TObject; ClientSocket: TCustomIpClient); procedure btnActivateServerClick(Sender: TObject); procedure memSendKeyPress(Sender: TObject; var Key: Char); private { Private declarations } procedure WMTaskbarEvent(var Message: TMessage); message WM_TASKBAREVENT; public { Public declarations } end; // you must create your own thread to synch // writing to a gui component TClientDataThread = class(TThread) private public ListBuffer :TStringList; TargetList :TStrings; procedure synchAddDataToControl; constructor Create(CreateSuspended: Boolean); procedure Execute; override; procedure Terminate; end; var Form1: TForm1; //DataThread: TClientDataThread; implementation {$R *.xfm} //start new: procedure TaskBarAddIcon; var tnid: TNotifyIconData; Owner: HWnd; 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, 'Tooltipp'); Shell_NotifyIcon(NIM_ADD, @tnid); Owner:=GetWindow(Form1.Handle,GW_OWNER); If Owner<>0 Then ShowWindow(Owner,SW_HIDE); end; procedure TaskBarRemoveIcon; var tnid: TNotifyIconData; Owner: HWnd; begin tnid.cbSize := SizeOf(TNotifyIconData); tnid.Wnd := Form1.Handle; tnid.uID := 1; Shell_NotifyIcon(NIM_DELETE, @tnid); Owner:=GetWindow(Form1.Handle,GW_OWNER); If Owner<>0 Then Begin ShowWindow(Owner,SW_Show); ShowWindow(Owner,SW_Normal); End; end; procedure TForm1.WMTaskbarEvent(var Message: TMessage); var Point: TPoint; begin case Message.LParamLo of WM_LBUTTONDOWN: TaskBarRemoveIcon; WM_RBUTTONDOWN: begin SetForegroundWindow(Handle); GetCursorPos(point); popupmenu1.popup(point.x,point.y); end; end; end; procedure TForm1.ApplicationEvents1Minimize(Sender: TObject); begin TaskBarAddIcon; end; //end new //------------- TClientDataThread impl ----------------------------------------- constructor TClientDataThread.Create(CreateSuspended: Boolean); begin inherited Create(CreateSuspended); FreeOnTerminate := true; ListBuffer := TStringList.Create; end; procedure TClientDataThread.Terminate; begin ListBuffer.Free; inherited; end; procedure TClientDataThread.Execute; begin Synchronize(synchAddDataToControl); end; procedure TClientDataThread.synchAddDataToControl; begin TargetList.AddStrings(ListBuffer); end; //------------- end TClientDataThread impl ------------------------------------- procedure TForm1.btnActivateServerClick(Sender: TObject); begin TcpServer1.LocalPort := '5705' ; TcpServer1.Active := True; end; procedure TForm1.btnSendClick(Sender: TObject); var I: Integer; begin if memsend.Text <> '' then begin TcpClient1.RemoteHost := edtRemoteHost.Text; TcpClient1.RemotePort := '5705'; try if TcpClient1.Connect then for I := 0 to memSend.Lines.Count - 1 do TcpClient1.Sendln(memSend.Lines[i]); finally TcpClient1.Disconnect; end; //by Smokers start memrecv.Text := memrecv.text + #13+#10 + 'Du sagtest: ' +#13+#10+ memsend.Text; memsend.Clear; memsend.SetFocus; end; end; procedure TForm1.TcpServer1Accept(sender: TObject; ClientSocket: TCustomIpClient); var s: string; DataThread: TClientDataThread; begin // create thread DataThread:= TClientDataThread.Create(true); // set the TagetList to the gui list that you // with to synch with. DataThread.TargetList := memRecv.lines; // Load the Threads ListBuffer DataThread.ListBuffer.Add('__ "'+ClientSocket.LookupHostName(ClientSocket.RemoteHost) + '" schreibt: __'); s := ClientSocket.Receiveln; while s <> '' do begin DataThread.ListBuffer.Add(s); s := ClientSocket.Receiveln; end; // Call Resume which will execute and synch the // ListBuffer with the TargetList DataThread.Resume; end; procedure TForm1.memSendKeyPress(Sender: TObject; var Key: Char); begin if key = #13 then begin btnsend.Click; key:= #0; end; end; end.


\\\\
Hie rnochmal zum download als Projekt

http://xup.raidrush.ws/ndl_e638d1548...1fb496f333fd3/

  Smokers ist offline   Mit Zitat antworten

AW: In Tray verschieben
Alt 29.08.2007, 20:01   # 6
asdrexit
Kabel Wurm
rot rot rot 
Bewertung:
asdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkte
Registriert seit: Jul 2005
Beiträge: 858
Power: 24
Arbeitest du mit Kylix ?
  asdrexit ist offline   Mit Zitat antworten

AW: In Tray verschieben
Alt 29.08.2007, 20:17   # 7
Smokers
Moderator
MIB
team
Bewertung:
Smokers hat die Renommee-Anzeige deaktiviert
Registriert seit: Sep 2005
Internet: VDSL 50Mbit
Beiträge: 2.178
Power: 29
Themenstarter
Nein Delphi 7.
Hab zwar auch Delphi 2006 drauf aber nutze nur den 7ner.

  Smokers ist offline   Mit Zitat antworten

AW: In Tray verschieben
Alt 29.08.2007, 20:23   # 8
asdrexit
Kabel Wurm
rot rot rot 
Bewertung:
asdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkte
Registriert seit: Jul 2005
Beiträge: 858
Power: 24
Warum benutzt du dann die CLX anstatt der VCL ???

Änder mal so deine Uses ab, dann solltest du es kompilieren können.
Code:
uses Classes, Messages, SysUtils, Graphics, Controls, ShellApi, Dialogs, Forms, Windows, Controls, StdCtrls, ExtCtrls, Buttons, Forms, Sockets, Menus, Types;
  asdrexit ist offline   Mit Zitat antworten

AW: In Tray verschieben
Alt 29.08.2007, 20:52   # 9
Smokers
Moderator
MIB
team
Bewertung:
Smokers hat die Renommee-Anzeige deaktiviert
Registriert seit: Sep 2005
Internet: VDSL 50Mbit
Beiträge: 2.178
Power: 29
Themenstarter
Also 2 fehler hab ich noch :

[Fehler] Chatmain.pas(107): Undefinierter Bezeichner: 'LParamLo'
[Fehler] Chatmain.pas(117): Undefinierter Bezeichner: 'ApplicationEvents1Minimize'
[Fehler] Chatmain.pas(117): ';' erwartet, aber '(' gefunden //*by Smokers
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Chatmain.pas' kann nicht compiliert werden


* =
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);

\\und bei uses fügt er autom.:

QStdCtrls, QControls, QExtCtrls, QTypes, QMenus;

hinzu

  Smokers ist offline   Mit Zitat antworten

AW: In Tray verschieben
Alt 29.08.2007, 21:42   # 10
EuroCop
Final Releaser
rot rot rot rot rot 
Bewertung:
EuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 Punkte
EuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 PunkteEuroCop hat mehr als 25.000 Punkte
Registriert seit: Aug 2005
Internet: DSL 6000
Beiträge: 1.743
Power: 32
nimm doch einfach cooltrayicon das ist eine sehr einfach zu benuzende komponente die auch ein paar beispiele enthält

hier der download http://rapidshare.com/files/52112212...yIcon.zip.html
  EuroCop ist offline   Mit Zitat antworten

AW: In Tray verschieben
Alt 29.08.2007, 23:08   # 11
asdrexit
Kabel Wurm
rot rot rot 
Bewertung:
asdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkteasdrexit hat 1000 bis 2499 Punkte
Registriert seit: Jul 2005
Beiträge: 858
Power: 24
Dann wird er wahrscheinlich trotzdem noch Probleme haben. Ich frag mich, warum Delphi die CLX einbindet ....
  asdrexit ist offline   Mit Zitat antworten
Antwort

RR:Board > Computer > Programmierung & Entwicklung > [Delphi] - In Tray verschieben


Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[XP] - Flash FXP in Tray bekommen corehard Windows 5 10.01.2009 14:22
Outlook EXPRESS in Tray minimieren? kuli Windows 5 15.12.2007 21:24
[VisualBasic] - [.Net] Nach start in tray & Minimize to tray Knusperkeks Programmierung & Entwicklung 6 04.08.2007 19:21
programme in tray rush Windows 6 08.01.2007 20:17
winamp in tray ? iLLuminat Audio und Video 6 14.09.2006 16:48



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
vBulletin Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.