dragi Geschrieben 27. Juli 2004 Geschrieben 27. Juli 2004 Hallo, kann ein Trayicon in Windows 2000/XP auch auf Drag n` Drop reagieren? Wenn ja wie? Hoffe ihr habt eine Idee Vielen Dank Dragi
geloescht_JesterDay Geschrieben 27. Juli 2004 Geschrieben 27. Juli 2004 Hallo, kann ein Trayicon in Windows 2000/XP auch auf Drag n` Drop reagieren? Wenn ja wie? 'also ich hab es noch nich probiert, aber hier mal meine Idee: Angelegt hab ich ein Try-Icon auf die Art: Type TNewNotifyIconData = record cbSize: DWORD; Wnd: HWND; uID: UINT; uFlags: UINT; uCallbackMessage: UINT; hIcon: HICON; //Version 5.0 is 128 chars, old ver is 64 chars szTip: array [0..127] of Char; dwState: DWORD; //Version 5.0 dwStateMask: DWORD; //Version 5.0 szInfo: array [0..255] of Char; //Version 5.0 DUMMYUNIONNAME: TDUMMYUNIONNAME; szInfoTitle: array [0..63] of Char; //Version 5.0 dwInfoFlags: DWORD; //Version 5.0 end; ... IconData: TNewNotifyIconData; ... procedure TForm1.AddSysTrayIcon; begin IconData.cbSize := SizeOf(IconData); IconData.Wnd := AllocateHWnd(SysTrayIconMsgHandler); {SysTrayIconMsgHandler is then callback message' handler} IconData.uID := 0; IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; IconData.uCallbackMessage := TRAY_CALLBACK; //user defined callback message IconData.hIcon := Application.Icon.Handle; //an Icon's Handle IconData.szTip := 'Tooltip'; if not Shell_NotifyIcon(NIM_ADD, @IconData) then ShowMessage('add failed'); end; Auf Windows-Messages reagiert das Icon über die Nachricht TRAY_CALLBACK procedure SysTrayIconMsgHandler(var Msg: TMessage); message TRAY_CALLBACK; ... procedure TfrmInfo.SysTrayIconMsgHandler(var Msg: TMessage); var Point: TPoint; begin // if Msg.lParam <> WM_MOUSEMOVE then case Msg.lParamLo of WM_MOUSEMOVE:; WM_LBUTTONDOWN: MessageBeep(0); WM_LBUTTONUP:; WM_LBUTTONDBLCLK: frmMain.show; WM_RBUTTONDOWN: begin GetCursorPos(Point); //*** Wichtig! Damit sich das Menü schliesst wenn die Maus irgendwo gedrückt wird SetForegroundWindow(Self.Handle); frmMain.mnuTray.PopUp(Point.x, Point.y); end; WM_RBUTTONUP:; WM_RBUTTONDBLCLK:; end; end; Auszug aus der Win-Hilfe: The DragAcceptFiles function registers whether a window accepts dropped files. Also uber DragAcceptFiles dein TrayIcon (Wnd: hWnd) registrieren und dann die WindowsMessage WM_DROPFILES in der Prozedur abfragen. Das müsste so eigentlich gehen...
dragi Geschrieben 30. Juli 2004 Autor Geschrieben 30. Juli 2004 Hallo, vielen Dank für den Code. Leider sperrt die traybar immer noch das Drag´n Drop. Wahrscheinlich ist das einfach nicht möglich :'( Gruss Dragi
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden