Beiträge von sc4ry
-
-
beim ersten klick soll das fenster on top gesetzt werden, im tray menü soll der eintrag dann "checked" sein.
beim 2ten klick soll dann on top zurückgesetzt werden und im tray menü der eintrag unchecked.das dürfte noch nicht mal das große prob sein, für mich ist das prob, die einträge inkl variable ins traymenü zu kriegen
-
Hiho,
also die funktion ist echt super.
leider hat nicht alles einwandfrei geklappt, so dass ich es ein bissel abändern musste, aber so ist es immernoch super.jedoch gibt es eine sache, da weiß ich wieder nicht weiter.
und zwar wird der kalender "immer" angezeigt, sobald ich mit der maus über das traysymbol fahre. egal wie kurz, der kalender blitzt kurz auf und verschwindet wieder.
kann man das vllt so machen, dass er wirklich nur kommt, wenn man ca 3 sek mit der maus auf dem symbol ist?code ist zZ
Spoiler anzeigen
[autoit]#NoTrayIcon
[/autoit] [autoit][/autoit] [autoit]
#Include <GUIConstants.au3>
#Include <GUIMonthCal.au3>Opt("GuiOnEventMode",1)
[/autoit] [autoit][/autoit] [autoit]
Opt("TrayIconHide", 0)
Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1)Global $writer, $calender
[/autoit] [autoit][/autoit] [autoit]
Global $timerStart, $timerMouse
Global $bTimerStarted, $bMouseOver, $bCalShown
Global $iCalLeft, $iCalRight, $iCalTop, $iCalBottom$traycalender = TrayCreateItem("Kalender")
[/autoit] [autoit][/autoit] [autoit]
TrayItemSetOnEvent($traycalender,"_TrayCalender")
$trayinput = TrayCreateItem("Eingabe")
TrayItemSetOnEvent($trayinput,"_TrayInput")
$trayexit = TrayCreateItem("Exit")
TrayItemSetOnEvent($trayexit,"_TrayExit")AdlibEnable( "CheckMouseCalender" )
[/autoit] [autoit][/autoit] [autoit]; eigene Funktion bei Linksklick.
[/autoit] [autoit][/autoit] [autoit]
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "TrayMenuLeftClick")
TraySetOnEvent($TRAY_EVENT_MOUSEOVER, "TrayMenuCheckCalender")$iCalLeft = @DesktopWidth - 200
[/autoit] [autoit][/autoit] [autoit]
$iCalRight = @DesktopWidth - 20
$iCalTop = @DesktopHeight - 210
$iCalBottom = @DesktopHeight - 30
$calender = GUICreate("Kalender", 180, 180, $iCalLeft, $iCalTop, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW )
WinSetOnTop($calender, "", 1)
;WinSetTrans($calender,'', 150)
_GUICtrlMonthCal_Create($calender, 5, 5)$writer = GUICreate("WRiTeR", 250, 400, @DesktopWidth - 270, @DesktopHeight - 430, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW )
[/autoit] [autoit][/autoit] [autoit]
WinSetOnTop($writer,'',1)
WinSetTrans($writer,'', 100)
GUICtrlCreateEdit("", 5, 5, 240, 390)TraySetState() ; Traymenü anzeigen
[/autoit] [autoit][/autoit] [autoit]
TraySetClick(16) ; bei Secondary Up Menü anzeigen.
GUISetState(@SW_SHOW, $writer)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _TrayCalender()
[/autoit] [autoit][/autoit] [autoit]
$bTimerStarted = False
;WinSetState($writer,'',@SW_HIDE)
WinSetState($calender,'',@SW_SHOW)
EndFuncFunc _TrayInput()
[/autoit] [autoit][/autoit] [autoit]
$bTimerStarted = False
WinSetState($calender,'',@SW_HIDE)
;WinSetState($writer,'',@SW_SHOW)
EndFuncFunc _TrayExit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc TrayMenuCheckCalender()
[/autoit] [autoit][/autoit] [autoit]
$bMouseOver = True
$timerMouse = @MIN * 100 + @SEC
EndFuncFunc TrayMenuLeftClick()
[/autoit] [autoit][/autoit] [autoit]
$winstate = WinGetState($writer,'')
If BitAnd($winstate, 2) Then
WinSetState($writer,'',@SW_HIDE)
Else
WinSetState($writer,'',@SW_SHOW)
EndIf
EndFuncFunc CheckMouseCalender()
[/autoit]
$bHideCal = False
If $bCalShown Then
$pos = MouseGetPos()
If $pos[0] < $iCalLeft Or $pos[0] > $iCalRight Or $pos[1] < $iCalTop Or $pos[1] > $iCalBottom Then
$bHideCal = True
EndIf
EndIf
If $bHideCal And (@MIN * 100 + @SEC) - $timerMouse > 2 Then
$bTimerStarted = False
$bMouseOver = False
If $bCalShown Then
WinSetState($calender,'',@SW_HIDE)
;WinSetState($writer,'',@SW_SHOW)
$bCalShown = False
EndIf
ElseIf $bMouseOver Then
Local $timerDiff
If $bTimerStarted Then
If $timerStart > @SEC Then
$timerDiff = (@SEC + 60) - $timerStart
Else
$timerDiff = @SEC - $timerStart
EndIf
If $timerDiff > 2 Then
;WinSetState($writer,'',@SW_HIDE)
WinSetState($calender,'',@SW_SHOW)
$bCalShown = True
EndIf
Else
$bTimerStarted = True
$timerStart = @SEC
EndIf
EndIf
EndFunc -
aktive fenster auslesen
PID der aktiven fenster auslesen
prozessnamen der aktiven fenster auslesen
prozessnamen in traymenü aufnehmen
.. hab ich schon geschafft *g*wie mach ich es nun, dass ich über nen klick auf nen traymenü eintrag, ein fenster OnTop setze, den eintrag im traymenü "checke" und bei nem erneuten klick wieder alles rückgängig mache?
iwie kann ich den einträgen keine variable zuordnen ($TrayEntry[$i] zB)Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <array.au3>
#include <Process.au3>$var = WinList()
[/autoit] [autoit][/autoit] [autoit]For $i = 1 to $var[0][0]
[/autoit] [autoit][/autoit] [autoit]
; Only display visble windows that have a title
If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
$ProcessName = _ProcessGetName(WinGetProcess($var[$i][0]))
TrayCreateItem($ProcessName)
EndIf
NextFunc IsVisible($handle)
[/autoit] [autoit][/autoit] [autoit]
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIfEndFunc
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
Sleep(1000)
WEnd -
also ich habe noch ne ältere version von autoit + scite, da steht nichts drin.
da es der arbeitsrechner ist, nutze ich auch die portable version, aber bis jetzt hab ich keine hilfe gefunden, in der dies enthalten ist.könnte mir wer kurz nen auszug dazu posten?
-
Hiho,
mir ist wieder was nettes für eins meiner Programme eingefallen, und zwar um das andauernde switchen zw den fenstern zu unterbinden,
dass man fenter "ON TOP" setzen kann (vllt zusätzlich noch transparent, mal gucken)das ganze entweder übers traymenü oder das über das traymenü eine liste aufgerufen werden kann, in der man dies einstellen kann (On Top - nicht mehr On Top).
nun suche ich eine funktion, die mir alle aktuellen fenster ausliest. dachte es gäbe wingetalltitle, anscheinend aber nicht.
nun gibt es aber WinList ... doch nach einem test werden mir wesentlich mehr fenster angezeigt, als in der taskleiste sind.gibt es da was, was mir helfen könnte oder aus mehreren sachen zusammengebaut werden kann?
-
hallo,
uiuiui, dank euch allen.
da sind ja jede menge tips bei *g*
ich werd es mal durchtesten und dann das für mich beste/sinnvollste/einfachste raussuchen.thx =)
-
Hiho,
ich würde gerne ein nettes tool für die cmd bauen, bei dem man verschiedene parameter nutzen kann.
wie das normal geht, hab ich schon gemacht, jedoch hätte ich nun eine besonderheit und würde gerne von euch wissen, wir ihr das umsetzen würdet.das programm soll verschiedene schalter haben, als bsp: -s -o -l -m
hinter den schaltern werden TEILWEISE weitere angaben gemacht: -s 56 -o blubb -l -mdurch die schalter sind verschiedene befehle zugeordnet, so dass die reihenfolge egal ist.
wie setzt man das am besten um?bis jetzt hab ich es so, dass die parameter immer in der gleichen reihenfolge angegeben sein müssen.
-
oder einmal copy/paste in ne datei =)
-
hört sich für mich auch so an.
da frag ich mich aber, warum du soviele buttons machen willst.kannste net ein dropdown menü machen, aus dem du dann den gewünschten § aussuchst, drückst auf nen button und das prog schreibt den text aus ner text-/ini-datei in das feld?
dürfte wesentlich weniger aufwand sein, als 100 buttons zu erstellen =)
-
thx JanSchmidt
klappt wunderbar. hätte ich mir einiges an programmierarbeit sparen können *g*
naja, nehm ich halt bissel scriptcode wieder raus =)@ mega, dank dir auch, leider klappt das bei mir nicht so wie in deinem code, aber vom endeffekt her, sind die ja gleich, dann bleib ich bei dem anderen =)
-
hiho,
so, also das ganze klappt wunderbar.
jetzt habe ich noch ne funktion gebaut, die bei betätigung eines buttons, zum aufrufen des 2ten fensters, dieses dahin verschiebt, wo das hauptfenster ist:
If Not $GuiPosExt[0] <> $GuiPos[0] Or $GuiPosExt[1] <> $GuiPos[1] Then WinMove($guitool, "", $GuiPosExt[0] - 403, $GuiPosExt[1] + 65 )
das funktioniert auch wunderbar.
ist es dennoch möglich, eine funktion zu bauen, die das 2te fenster mitverschiebt, sobald das hauptfenster verschoben wird, bzw dass dann nachzieht? -
ehm ja, ist ne super idee und klappt wunderbar *g*
-
oh ja, das ist mal ne geile idee, wenn das script fertig ist, bitte veröffentlichen *g*
da warte ich die ganze zeit vergebens, das ms mal nen button entwickelt ...wieso bin ich da eigentlich nicht drauf gekommen oO *lol*
-
Hiho,
hät mal ne frage.
und zwar hab ich ein MainGui, dass beim start des programmes aufgerufen wird.
im hintergrund werden 2 weitere fenster "generiert", die auf knopfdruck erscheinen (und verschwinden).das hauptfenster ist mittig auf dem desktop, die beiden anderen fenster sollen, wenn sie erscheinen, nicht über dem hauptfenster liegen, sondern genau neben dem fenster erscheinen.
kante an kante und ecke an ecke (gleiche größe vorausgesetzt).das ganze müsste man doch anhand einer formel mit @DesktopWidth/-Hidth und dem automatischem "Mittigsetzen" des hauptfensters berechnen können, oder?
aber wie =/
-
also es ist so ein kleines informations-fenster, was nach dem start des pcs geladen wird. ich kann halt nicht genau sagen, wann dieses fenster anfängt, die nachricht zu laden.
denke das geht aber schneller.infos zum fenster:
protocol: http
type: html document
connection: not encrypted
address: wie unten
size: xxxx bytesder code ist
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#NoTrayIcon
#include <Date.au3>$script = "S.T.A.R.T.E.R"
[/autoit] [autoit][/autoit] [autoit]
$ini = ($script & "-Settings.ini")
$info = IniRead(@scriptdir & "\" & $ini, "Close Windows after Start", "HDInfo", "")If $info = 1 Then
[/autoit]
$hddate = IniRead(@scriptdir & "\" & $ini, "Close Windows after Start", "HDInfo-Date", "")
$OldSize = IniRead(@scriptdir & "\" & $ini, "Close Windows after Start", "HDInfo-Size", "")
If $hddate = _NowDate() Then
WinKill("HDInfo2k")
ProcessClose("HDINFO2k.exe")
Exit
Else
$HDInfoSize = InetGetSize("http://helpdesk-info..../msg_DUS_loc.htm")
If $HDInfoSize = $OldSize Then
WinKill("HDInfo2k")
ProcessClose("HDINFO2k.exe")
Else
EndIf
EndIf
IniWrite(@scriptdir & "\" & $ini, "Close Windows after Start", "HDInfo-Date", _NowDate())
IniWrite(@scriptdir & "\" & $ini, "Close Windows after Start", "HDInfo-Size", $HDInfoSize)
Else
EndIfich habe nur einen http-link, den ich aus den eigenschaften dieses fenster herauskopiert habe.
oder kann ich die eigenschaften von dem teil abfragen (weil da die größe auch drin steht), jedoch scheint das teil ja auch nicht lokal als tempfile zu liegen, oder kann man das iwie rausfinden? -
Hiho,
kann man die funktion irgendwie beschleunigen?
also sie funktioniert einwandfrei, aber sie ist seeeeeeeeeeeehr langsam.ich weiß nicht wodran es liegt.
ich befinde mich im LAN und rufe eine Site/Nachricht ab, die max 2000 bytes groß ist.
das ganze dauert jedoch bis zu 1 Min. -
ui krass, dies sieht beides wirklich nice aus.
werd es mir heute abend in ruhe mal angucken, big thx =) -
ja genau, das ist schon ziemlich geil.
was ich dann noch gerne hätte, ka ob das überhaupt möglich ist, dass der kalender erscheint, wenn man nur die maus für ca. 3 sek auf das traysymbol hält (ohne klick).
wenn dann die maus vom traysymbol wieder weggeht, soll der kalender wieder ausgeblendet werden (es sein denn, die maus befindet sich danach auf dem kalender, um zB zw den monaten zu switchen) ...weißt du was ich meine?
-
hiho.
ah, ne eigene funktion hört sich auch schonmal gut an =)
also hier ist mein script in mini, mit der funktion (die auch beibehalten werden soll, wenns geht), rechts und links-klick auf das tray mit unterschiedlichen aktionen auszuführen
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#NoTrayIcon
#Include <GuiConstants.au3>Opt("GuiOnEventMode",1)
[/autoit] [autoit][/autoit] [autoit]
Opt("TrayIconHide", 0)
Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1)Global $writer
[/autoit] [autoit][/autoit] [autoit]$trayexit = TrayCreateItem("Exit")
[/autoit] [autoit][/autoit] [autoit]
TrayItemSetOnEvent(-1,"_TrayExit")
; eigene Funktion bei Linksklick.
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "TrayMenuLeftClick")$writer = GUICreate("WRiTeR", 250, 400, @DesktopWidth - 270, @DesktopHeight - 430, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW )
[/autoit] [autoit][/autoit] [autoit]
WinSetOnTop($writer,'',1)
WinSetTrans($writer,'', 100)
GUICtrlCreateEdit("", 5, 5, 240, 390)TraySetState() ; Traymenü anzeigen
[/autoit] [autoit][/autoit] [autoit]
TraySetClick(16) ; bei Secondary Up Menü anzeigen.
GUISetState(@SW_SHOW, $writer)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _TrayExit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc TrayMenuLeftClick()
[/autoit]
$winstate = WinGetState($writer,'')
If BitAnd($winstate, 2) Then
WinSetState($writer,'',@SW_HIDE)
Else
WinSetState($writer,'',@SW_SHOW)
EndIf
EndFuncschonmal vielen dank =)