Hey.
Gibt es in AutoIt einen Befehl, der das Aktuelle Fenster in den Tray minimiert?
Hab in der Doku nichts dazu gefunden.
mfg
Hey.
Gibt es in AutoIt einen Befehl, der das Aktuelle Fenster in den Tray minimiert?
Hab in der Doku nichts dazu gefunden.
mfg
Also eine direkte Funktion gibt es nicht, aber man kann sich das zusammenbasteln. Ein Traymenu erstellen und dann
[autoit]Opt("TrayIconHide", 1)
[/autoit]hinzufügen, dass es nicht sichtbar ist. Wenn es in den Tray gesendet werden soll, einfach die gui
[autoit]GUISetState(@SW_HIDE, $main_gui)
[/autoit]stellen und
[autoit]Opt("TrayIconHide", 0)
[/autoit].
Du kannst einfach das Fenster verschwinden lassen mit
[autoit]
GUISetState(@SW_HIDE, $gui)
Musst dir dann halt einfach ne Funktion schreiben, die dieses ausführt.
//Edit: Ok, leviathan's Antwort ist etwas besser
Da es ja kein AutoIt Gui ist, muss ich also WinSetState nehmen oder?
Hallo
Startet den Editor, Minimiert ihn zum Tray und zeigt ihn wieder.
#NoTrayIcon
Run("Notepad.exe")
WinWait("Unbenannt")
MsgBox(0,"","Klicke auf OK um den Editor zum Tray zu minimieren...")
TraySetIcon("Notepad.exe")
WinSetState("Unbenannt","",@SW_HIDE)
Opt("TrayIconHide",0)
MsgBox(0,"","Klicke auf OK um den Editor wieder zu zeigen...")
WinSetState("Unbenannt","",@SW_SHOW)
Opt("TrayIconHide",1)
MsgBox(0,"","Erfolgreich!")
Mfg Spider
Hi,
etwas eleganter sieht es so aus ...
Run("Notepad.exe")
#NoTrayIcon
WinWait("Unbenannt")
MsgBox(0,"","Klicke auf OK um den Editor zum Tray zu minimieren...")
TraySetIcon("Notepad.exe")
WinSetState("Unbenannt","",@SW_MINIMIZE)
WinSetState("Unbenannt","",@SW_HIDE)
Opt("TrayIconHide",0)
[/autoit] [autoit][/autoit] [autoit]MsgBox(0,"","Klicke auf OK um den Editor wieder zu zeigen...")
WinSetState("Unbenannt","",@SW_SHOW)
Opt("TrayIconHide",1)
MsgBox(0,"","Erfolgreich!")
Gruß
Seit wann kann man den Editor in den Tray zwingen?
das tray gehört ja dann nicht direkt zum editor.
es wird ja extra erstellt von dir. eigentlich kann man das ja nicht machen ohne autoit o.ä^^
Hä? Des is ja voll unlogisch. Dass man mit AutoIt was machen kann das sonst nicht geht.
ich finde das das eigentlich sehr logisch ist. wie würdest du denn sonst das tray incon erstellen ohne autoit?
und wie würdest du deine ganzen programm fertig bekommen ohne autoit?
Aber wenn man es über AutoIt ansprechen kann muss ja irgendwo ne Versteckte Funktion integriert sein.
hmm....ich glaube du hast immer noch nicht verstanden.
die funktion TraySetIcon("Notepad.exe") erstellt ein icon aber es gehört dann nicht zum notepad.
das notepad.exe in der klammer legt nur fest wie das erstellte icon aussieht
hast du es nun verstanden? notepad hat keine verstecke funktion die das kann.
außerdem hat snoozer doch ganz am anfang schon gesagt das, das nur mit ein paar umwegen möglich ist.
Ach so. Ja dann. Jetzt ist es wieder logisch.
So, hier mal meine Version:
;===============================================================================
;
; Author(s): Prog@ndy
; Description:: Lässt ein Programm in den Tray minimieren. Dieses wird durch
; SHIFT-Linksklick auf das Fenster ausgewählt und so auch immer neu minimiert.
;
;===============================================================================
;
#NoTrayIcon
#include<Misc.au3>
;Run("Notepad.exe")
Opt("TrayMenuMode",1)
ToolTip("Fenster zum Verstecken auswählen" & @LF & "Zum Wählen [SHIFT]-LinksKlick auf das Fenster",@DesktopWidth - 50,@DesktopHeight - 50,"Minimize To Tray",-1,4)
$WindowHandle = -1
While 1
While Not _IsPressed("10")
Sleep(10)
WEnd
If _IsPressed("01") Then
If IsHWnd($WindowHandle) Then
MsgBox(0,"","")
If $WindowHandle == WinGetHandle("") Then _Hide()
Else
ToolTip("")
$WindowHandle = WinGetHandle("")
$PID = _ProcessGetPidByWindow($WindowHandle)
$Path = _ProcessGetPath($PID)
TraySetIcon($Path)
$aboutitem = TrayCreateItem(StringLeft(WinGetTitle($WindowHandle),25) & " wiederherstellen")
TrayCreateItem("")
$exititem = TrayCreateItem("MinimizeToTray beenden")
_Hide()
EndIf
EndIf
WEnd
Func _ProcessGetPath($PID)
$Path = DllStructCreate("char[1000]")
$dll = DllOpen("Kernel32.dll")
$handle = DllCall($dll,"int", "OpenProcess","dword",0x0400 + 0x0010,"int",0,"dword",$PID)
$ret = DllCall("Psapi.dll","long","GetModuleFileNameEx","long",$handle[0],"int",0,"ptr",DllStructGetPtr($Path),"long",DllStructGetSize($Path))
$ret = DllCall($dll,"int", "CloseHandle","hwnd",$handle[0])
DllClose($dll)
$ProgramPath = DllStructGetData($Path,1)
Return $ProgramPath
EndFunc
Func _ProcessGetPidByWindow($WindowHandle)
$ptr = DllStructCreate("long")
$ret = DllCall("user32.dll","ptr","GetWindowThreadProcessId","hwnd",$WindowHandle,"long",DllStructGetPtr($ptr))
$PID = DllStructGetData($ptr,1)
Return $PID
EndFunc
Func _Hide()
WinSetState($WindowHandle,"",@SW_MINIMIZE)
WinSetState($WindowHandle,"",@SW_HIDE)
Opt("TrayIconHide",0)
While 1
$msg = TrayGetMsg()
Select
Case $msg = 0
ContinueLoop
Case $msg = $aboutitem
_Show()
ExitLoop
Case $msg = $exititem
_Show()
Exit
EndSelect
WEnd
EndFunc
Func _Show()
WinSetState($WindowHandle,"",@SW_SHOW)
WinSetState($WindowHandle,"",@SW_RESTORE)
Opt("TrayIconHide",1)
EndFunc
ProgrammFenster per SHIFT-Klick auswählen. Lässt sich immer wieder minimieren. MinimizeTotray wird beendet, indem im Minimierten zustand auf beenden geklickt wird.
@progandy: ich denke es währe sehr praktisch wenn du das in eine udf packen könntest^^
machst du das vllt mal?
das script find ich aber echt gelungen.
Hallo zusammen,
leider ist mir dieses Thema noch etwas unklar.
Ich möchte meine Anwendung (welche normal kein Trayicon besitzt) durch einen Klick auf den Minimieren Button
in den Tray minimieren (keine Anzeige mehr in der Taskleiste).
Hab meiner GUI am Anfang noch Folgendes mitgegeben..
[autoit]
Opt("TrayIconHide", 1) ;Icon beim Start verstecken
Opt("TrayMenuMode",1) ;WENN das Tray angezeigt wird, Standardtraymenüeinträge (Script pausieren/beenden) nicht anzeigen
GUISetOnEvent($GUI_EVENT_MINIMIZE,"Form1_1Minimize") ;wenn Minimieren-Button gedrückt wird Funktion "Form1_1Minimize" ausführen
[/autoit]Das mit dem Minimieren in den Tray funzt einwandfrei.
Nur was ich nich versteh, wo muss ich was tipseln, damit die Anwendung bei einem Single-Click auf das Trayicon wieder angezeigt wird??
Also Trayicon ausblenden und in Taskleiste wieder einblenden..
Viiiieeelen Dank Leute
Moin,
TrayIconSetClick (flag)
Du kannst dir auch folgendes mal ansehen ...
http://www.autoitscript.com/forum/index.php?s=ebc2f085b48873bd6f103c4630e9eb74&showtopic=20967
Lade dir die UDF herunter und sieh dir das Beispiel WinToTray an ...
Gruß
Greenhorn
Hi Greenhorn,
danke für den Hinweis.
Bin leider trotzdem nich wesentlich weiter gekommen *g*
C:\Program Files\AutoIt3\Include\ModernMenu.au3(23,72) : ERROR: $SRCCOPY previously declared as a 'Const'
If Not IsDeclared("SRCCOPY") Then Global Const $SRCCOPY = 0x00CC0020
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(30,75) : ERROR: $WM_DRAWITEM previously declared as a 'Const'
If Not IsDeclared("WM_DRAWITEM") Then Global Const $WM_DRAWITEM = 0x002B
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(31,81) : ERROR: $WM_MEASUREITEM previously declared as a 'Const'
If Not IsDeclared("WM_MEASUREITEM") Then Global Const $WM_MEASUREITEM = 0x002C
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(33,68) : ERROR: $WM_USER previously declared as a 'Const'
If Not IsDeclared("WM_USER") Then Global Const $WM_USER = 0x0400
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(34,71) : ERROR: $WM_TIMER previously declared as a 'Const'
If Not IsDeclared("WM_TIMER") Then Global Const $WM_TIMER = 0x0113
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(44,71) : ERROR: $SM_CXSMICON previously declared as a 'Const'
If Not IsDeclared("SM_CXSMICON") Then Global Const $SM_CXSMICON = 49
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(45,77) : ERROR: $SM_CXMENUCHECK previously declared as a 'Const'
If Not IsDeclared("SM_CXMENUCHECK") Then Global Const $SM_CXMENUCHECK = 71
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(56,78) : ERROR: $DT_VCENTER previously declared as a 'Const'
If Not IsDeclared("DT_VCENTER") Then Global Const $DT_VCENTER = 0x00000004
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(57,76) : ERROR: $DT_BOTTOM previously declared as a 'Const'
If Not IsDeclared("DT_BOTTOM") Then Global Const $DT_BOTTOM = 0x00000008
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(58,83) : ERROR: $DT_SINGLELINE previously declared as a 'Const'
If Not IsDeclared("DT_SINGLELINE") Then Global Const $DT_SINGLELINE = 0x00000020
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(59,76) : ERROR: $DT_NOCLIP previously declared as a 'Const'
If Not IsDeclared("DT_NOCLIP") Then Global Const $DT_NOCLIP = 0x00000100
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(61,69) : ERROR: $COLOR_MENU previously declared as a 'Const'
If Not IsDeclared("COLOR_MENU") Then Global Const $COLOR_MENU = 4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(62,76) : ERROR: $COLOR_MENUTEXT previously declared as a 'Const'
If Not IsDeclared("COLOR_MENUTEXT") Then Global Const $COLOR_MENUTEXT = 7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(63,78) : ERROR: $COLOR_HIGHLIGHT previously declared as a 'Const'
If Not IsDeclared("COLOR_HIGHLIGHT") Then Global Const $COLOR_HIGHLIGHT = 13
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(64,85) : ERROR: $COLOR_HIGHLIGHTTEXT previously declared as a 'Const'
If Not IsDeclared("COLOR_HIGHLIGHTTEXT") Then Global Const $COLOR_HIGHLIGHTTEXT = 14
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(65,77) : ERROR: $COLOR_GRAYTEXT previously declared as a 'Const'
If Not IsDeclared("COLOR_GRAYTEXT") Then Global Const $COLOR_GRAYTEXT = 17
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(210,77) : ERROR: $WM_MOUSEMOVE previously declared as a 'Const'
If Not IsDeclared("WM_MOUSEMOVE") Then Global Const $WM_MOUSEMOVE = 0x0200
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\ModernMenu.au3(212,77) : ERROR: $WM_LBUTTONUP previously declared as a 'Const'
If Not IsDeclared("WM_LBUTTONUP") Then Global Const $WM_LBUTTONUP = 0x0202
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
H:\_AutoIt\ping_assi.au3 - 18 error(s), 0 warning(s)
WTF?
Hab die ModernMenu included.. sonst nüscht...
Das ist eigentlich nicht weiter schlimm, Du kannst das Skript ohne den "Wrapper" trotzdem ausführen.
Die Konsolenausgabe ist von der au3check.exe und ist eigentlich ein Bug.
Damit Du es tritzdem in SciTE starten kannst, musst Du die ausgegebenen Deklarationen in der ModernMenu.au3 auskommentieren.
Oder Du nimmst diese:
autoit.de/wcf/attachment/4692/
Gruß
Greenhorn
Hi Greenhorn,
einen kleinen Schritt bin ich weiter (danke ), aber egal was ich mach, die Anwendung wird immer kurz gestartet und sofort wieder beendet
Man sieht weder die GUI noch ein TrayIcon.. geht alles ratzfatz *g*
Um dieses Programm handelt es sich..
[ offen ] Pingen und Logfile bei Statusänderung schreiben
Gruß, Raylow