Anzeige der Onlineverbindung im Tray

hier bitte nur *nach* Benutzen der Boardsuche (siehe oben) posten

Moderatoren: |Gordon|, Jean, Moderatoren

garfield02
Einsteiger
Beiträge: 2
Registriert: 20.09.06, 8:50

Anzeige der Onlineverbindung im Tray

Beitrag von garfield02 » 20.09.06, 8:55

Hallo,

ich gehe über DSL und einen Linksys Router per WLAN und Laptop ins Internet.
In den letzten Wochen habe ich häufiger Störungen auf der Leitung
(Arcor DSL 16000) und würde gern mit einem Blick erkennen, ob die DSL Verbindung noch besteht. An einem anderen PC, der direkt per Ethernet mit dem Router verbunden ist, läuft Routercontrol. Leider bekomme ich dieses Proggi am Notebook nicht zum laufen und suche daher etwas Ähnliches.

Schon mal Danke für Eure Tipps
MfG

garfield02

Benutzeravatar
Kostenlos
Mitglied
Beiträge: 578
Registriert: 22.07.06, 0:55

Beitrag von Kostenlos » 20.09.06, 11:45

Hier ein einfaches AutoIt3-Script. Ein Icon setzt sich ins Tray, dass den Status per Icon anzeigt. Es gibt ein Kontextmenü bestehend aus Beenden und Autostart. Beenden sollte selbst erklärend sein. Autstart auch. Ist ein Haken vor dem Autostart wird das Script automatisch mit Windows gestartet.

Einfach entpacken und OnlineTray.exe starten. Standardmässig wird ein Ping an www.google.de gesendet, möchte man eine andere Adresse nutzen, einfach eine Datei Settings.ini mit folgendem Inhalt erstellen:

Code: Alles auswählen

[Settings]
Address=www.hiddensoft.com
Adresse natürlich entsprechend anpassen.

Hier das Script:

Code: Alles auswählen

#NoTrayIcon
#include <Constants.au3>

Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)

Dim $quit, $auto, $var, $icon, $address

$auto = TrayCreateItem("Autostart")
$quit = TrayCreateItem("Beenden")
TrayItemSetOnEvent($auto, "Autostart")
TrayItemSetOnEvent($quit, "Quit")
$var = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "OnlineTray")

If $var = @ScriptDir & "\OnlineTray.exe" Then 
	TrayItemSetState($auto, 65)
ElseIf $var Then
	DeleteAutoRun()
EndIf

$address = IniRead("Settings.ini", "Settings", "Address", "www.google.de")

While 1
	$var = Ping($address, 250)
	If $var Then
		$icon = 88
		TraySetToolTip("Online")
	Else
		$icon = 109
		TraySetToolTip("Offline")
	EndIf
	TraySetIcon(@SystemDir & "\shell32.dll", $icon)
	TraySetState()
	Sleep(1000)
WEnd

Func Quit()
	Exit
EndFunc

Func Autostart()
	If TrayItemGetState($auto) = 65 Then
		$var = RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "OnlineTray", "REG_SZ", @ScriptDir & "\OnlineTray.exe")
	Else
		DeleteAutoRun()
	EndIf 
EndFunc

Func DeleteAutoRun()
	RegDelete("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "OnlineTray")
EndFunc
Download (EXE): http://rapidshare.de/files/33772593/OnlineTray.rar.html
Liebe Grüße,
Kostenlos
-----------------------------------------------------------
Kostenlos ist nicht umsonst...

Jedes Windows-Problem lässt sich mit einem Script lösen ;)

garfield02
Einsteiger
Beiträge: 2
Registriert: 20.09.06, 8:50

Beitrag von garfield02 » 20.09.06, 15:14

Hallo kostenlos,

super vielen Dank, genau das was ich gesucht habe
MfG

garfield02

schuminator
Einsteiger
Beiträge: 7
Registriert: 20.10.06, 11:22

Beitrag von schuminator » 20.10.06, 11:27

Hallo!
Könnte jemand das Proggi noch mal zur Verfügung stellen? So was suche ich auch schon lange.

Danke!
schuminator
-> [url=http://www.cmsshowcase.de]CMS Showcase- sortiert nach CMS-Kategorien[/url] <-

Benutzeravatar
m;c
regelmäßiger Besucher
Beiträge: 14
Registriert: 13.10.06, 8:03

Beitrag von m;c » 20.10.06, 11:58

schuminator hat geschrieben:Hallo!
Könnte jemand das Proggi noch mal zur Verfügung stellen? So was suche ich auch schon lange.

Danke!
schuminator
Hi!

Entweder Du compilierst Dir den Code einfach selbst mit dem genannten Prg (EFB-Suche) oder Du teilst mir mit, an welche Adresse Du das EXE File geschickt haben willst. Kann ich Dir schicken.

m;c
Unmöglich ist ein Wort, dass Menschen viel zu oft benutzen.

Seven Of Nine -
Tertiäres Attribut von Unimatrix 01

Benutzeravatar
AbteriX
Mitglied
Beiträge: 29
Registriert: 12.03.06, 18:01

Beitrag von AbteriX » 20.10.06, 13:20

Kostenlos hat geschrieben:Hier ein einfaches AutoIt3-Script. [...]
[ ... code ... ]
Download (EXE): http://rapidshare.de/files/33772593/OnlineTray.rar.html
AbteriX

digga
Mitglied
Beiträge: 90
Registriert: 30.03.04, 20:05

Beitrag von digga » 20.10.06, 13:46

Meiner Firewallstatusanzeige nach zu urteilen, öffnet dieses kleine Script, in der obigen Form, mehr Verbindungen als mein Filesharingprogramm und produziert gar nicht wenig Traffic :-)

Man sollte, denk ich, ins Argument der Sleepfunktion noch ne Null mehr schreiben.. Oder allgemein gesagt: Nach belieben anpassen.

Benutzeravatar
Icfu
Mitglied
Beiträge: 1456
Registriert: 28.05.05, 3:29

Beitrag von Icfu » 20.10.06, 13:52

@AbteriX:
Vor dem Schicken mal testklicken,
spart man sich gar manche Zicken. ;)

Ich habe die kompilierte Exe für Leute ohne AutoIt-Installation hier hochgeladen:
http://icfu.totalcmd.net/Tools/OnlineTray.exe

Edit: Erneut mit 3.2.11 beta kompiliert, da die 3.2.9 das Script funktionsunfähig gemacht hat.

Icfu
Zuletzt geändert von Icfu am 20.10.06, 14:39, insgesamt 1-mal geändert.
Holy Frankenfuck! Snakes!

Benutzeravatar
Icfu
Mitglied
Beiträge: 1456
Registriert: 28.05.05, 3:29

Beitrag von Icfu » 20.10.06, 15:34

@Kostenlos:
Auch mit der finalen AutoIt-Version 3.2.0.1, kompiliert oder pures Script, funktioniert der Autostart-Eintrag hier nicht; es wird kein Haken gesetzt und kein Eintrag in die Registry geschrieben.

Irgendeine Idee?

Icfu
Holy Frankenfuck! Snakes!

Benutzeravatar
Kostenlos
Mitglied
Beiträge: 578
Registriert: 22.07.06, 0:55

Beitrag von Kostenlos » 20.10.06, 16:54

Als ich das Script im September verfasste habe ich auch ewig daran gebastelt bis es endlich lief, irgendwas scheint da unter AutoIt3 und dem TrayMenu nicht zu passen, denn am Anfang lief es einwandfrei.

Da ich den Quelltext nicht mehr hatte habe ich gerade einfach den aus meinem alten Posting genommen und es funzte tatächlich nicht. Ein wenig daran geändert, hin und her, dann lief es endlich so wie es sollte. Mit WinMerge die Dateien verglichen und: beide Dateien waren wieder genau gleich, doch jetzt lief es! *verwirrt bin*

Ich habe den Code jetzt dahingehend geändert, dass AutoIt nicht automatisch das Ankreuzen des Autostart-Eintrags übernimmt, sondern es das Script machen lassen.

Änderungen:

Code: Alles auswählen

Opt("TrayMenuMode", 1)
wurde zu

Code: Alles auswählen

Opt("TrayMenuMode", 3)
und

Code: Alles auswählen

Func Autostart()
   If TrayItemGetState($auto) = 65 Then
      $var = RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "OnlineTray", "REG_SZ", @ScriptDir & "\OnlineTray.exe")
   Else
      DeleteAutoRun()
   EndIf
EndFunc
wurde zu

Code: Alles auswählen


Func Autostart()
   If TrayItemGetState($auto) = 68 Then
      $var = RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "OnlineTray", "REG_SZ", @ScriptDir & "\OnlineTray.exe")
	  TrayItemSetState($auto, 65)
   Else
      TrayItemSetState($auto, 68)
	  DeleteAutoRun()
  EndIf
  TraySetState()
EndFunc
Also jetzt komplett:

Code: Alles auswählen

#NoTrayIcon
#include <Constants.au3>

Opt("TrayMenuMode", 3)
Opt("TrayOnEventMode", 1)

Dim $quit, $auto, $var, $icon, $address

$auto = TrayCreateItem("Autostart")
$quit = TrayCreateItem("Beenden")
TrayItemSetOnEvent($auto, "Autostart")
TrayItemSetOnEvent($quit, "Quit")
$var = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "OnlineTray")

If $var = @ScriptDir & "\OnlineTray.exe" Then
   TrayItemSetState($auto, 65)
ElseIf $var Then
   DeleteAutoRun()
EndIf

$address = IniRead("Settings.ini", "Settings", "Address", "www.google.de")

While 1
   $var = Ping($address, 250)
   If $var Then
      $icon = 88
      TraySetToolTip("Online")
   Else
      $icon = 109
      TraySetToolTip("Offline")
   EndIf
   TraySetIcon(@SystemDir & "\shell32.dll", $icon)
   TraySetState()
   Sleep(1000)
WEnd

Func Quit()
   Exit
EndFunc

Func Autostart()
   If TrayItemGetState($auto) = 68 Then
      $var = RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "OnlineTray", "REG_SZ", @ScriptDir & "\OnlineTray.exe")
	  TrayItemSetState($auto, 65)
   Else
      TrayItemSetState($auto, 68)
	  DeleteAutoRun()
  EndIf
  TraySetState()
EndFunc

Func DeleteAutoRun()
   RegDelete("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "OnlineTray")
EndFunc
Bitte testet das Mal. Bei mir läuft's ;)


Hier nochmal kompiliert inkl. Source-Code:

Download: http://files.to/get/242521/5328/OnlineTray.rar
Liebe Grüße,
Kostenlos
-----------------------------------------------------------
Kostenlos ist nicht umsonst...

Jedes Windows-Problem lässt sich mit einem Script lösen ;)

Benutzeravatar
Kostenlos
Mitglied
Beiträge: 578
Registriert: 22.07.06, 0:55

Beitrag von Kostenlos » 20.10.06, 18:03

Hier nochmal eine etwas erweiterte Version, in der das TrayIcon bei getrennter Verbindung blinkt.

Einfach in der While-Schleife noch im If-Abschnitt bei Online

Code: Alles auswählen

TraySetState(9)
und bei Offline

Code: Alles auswählen

TraySetState(5)
einfügen.

Hier nochmal kompiliert (alt und neu inkl. Source-Code):

Link: http://files.to/get/242634/6748/OnlineTray.rar
Liebe Grüße,
Kostenlos
-----------------------------------------------------------
Kostenlos ist nicht umsonst...

Jedes Windows-Problem lässt sich mit einem Script lösen ;)

schuminator
Einsteiger
Beiträge: 7
Registriert: 20.10.06, 11:22

Beitrag von schuminator » 20.10.06, 21:33

Danke! :)
Dann mal sehen, wie es sich macht, aber das wird wohl nicht lange dauern ;)

Für die Icons, die angezeigt werden: Ich nehme an, das es Icon-Nr. 88 (Zeile26) sowie Nr. 109 (Zeile30) aus der shell32.dll ist, die ich mir nach eingenenm Geschmack aussuchen kann?

Gruß
schuminator

Benutzeravatar
Kostenlos
Mitglied
Beiträge: 578
Registriert: 22.07.06, 0:55

Beitrag von Kostenlos » 20.10.06, 22:26

Genau die sind aus der shell32.dll und können beliebig angepasst werden.

Über die Zeile:

Code: Alles auswählen

TraySetIcon(@SystemDir & "\shell32.dll", $icon) 
kannst du auch ganz andere Icons einbinden, andere Bibliootheken, Programme oder auch einzelne Icon-Dateien. In der If-Abfrage vorher passt du dann einfach die Icon-Nummer an.
Liebe Grüße,
Kostenlos
-----------------------------------------------------------
Kostenlos ist nicht umsonst...

Jedes Windows-Problem lässt sich mit einem Script lösen ;)

Benutzeravatar
Icfu
Mitglied
Beiträge: 1456
Registriert: 28.05.05, 3:29

Beitrag von Icfu » 21.10.06, 19:06

Funktioniert soweit jetzt, allerdings setzt auch die Flash-Version den Startup-Eintrag für OnlineTray.exe! Vielleicht kannst Du den Autoeintrag so modifizieren, daß kein absoluter Name gesetzt wird, sondern dynamisch der Name der laufenden Exe bzw. des laufenden Scripts.

Icfu
Holy Frankenfuck! Snakes!

Benutzeravatar
Kostenlos
Mitglied
Beiträge: 578
Registriert: 22.07.06, 0:55

Beitrag von Kostenlos » 21.10.06, 20:39

Icfu hat geschrieben:Funktioniert soweit jetzt, allerdings setzt auch die Flash-Version den Startup-Eintrag für OnlineTray.exe! Vielleicht kannst Du den Autoeintrag so modifizieren, daß kein absoluter Name gesetzt wird, sondern dynamisch der Name der laufenden Exe bzw. des laufenden Scripts.
Ja, das kann man machen ;)

Einfach Zeile 15 ändern in:

Code: Alles auswählen

If $var = @ScriptFullPath Then
UND Zeile 45 ändern in

Code: Alles auswählen

$var = RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "OnlineTray", "REG_SZ", @ScriptFullPath)
Viel Spaß damit! Falls noch mehr Vorschläge sind immer her damit, ich baue es ein ;)

Wie wäre z. B. es mit einer akustischen Benachrichtigung beim Auf- und Abbau der Verbindung?
Liebe Grüße,
Kostenlos
-----------------------------------------------------------
Kostenlos ist nicht umsonst...

Jedes Windows-Problem lässt sich mit einem Script lösen ;)

Benutzeravatar
Mr.QM
Einsteiger
Beiträge: 8
Registriert: 23.10.06, 10:02

Beitrag von Mr.QM » 23.10.06, 19:55

hi an alle, bin der Neue.

@kostenlos

ich hätte da noch eine idee bzw. einen wunsch.
kann man nicht noch im kontextmenü von onlinetray, wo "Beenden" + "Autoatrt" steht, 2 Einträge machen? ich würde gerne meine verbindung
von dort aus wählen und auch trennen.
die einträge wären dann z.b. "Verbindung Arcor wählen" oder nur "Verbinden und als 2 punkt "Trennen"

ich hoffe du hast verstanden was ich meine.
vielen dank im voraus für deine mühe

Mr.QM

Benutzeravatar
Kostenlos
Mitglied
Beiträge: 578
Registriert: 22.07.06, 0:55

Beitrag von Kostenlos » 23.10.06, 21:56

Hi Mr.QM!

Willkommen an Board :)

Das macht aber eigentlich keinen Sinn, denn die Überprüfung des Onlinestatus führt ja einen Ping aus, also wird bei jeder Überprüfung sowieso eine Verbindung aufgebaut. Oder verstehe ich dich falsch?

Edit://

Wenn ich den Onlinestatus ohne Ping abfragen könnte, würde ja keine Verbindung aufgebaut. Ich habe hier leider keine RAS-Verbindung zum Testen. Was steht bei dir wenn du in der Eingabeaufforderung "Rasdial" eingibst? Kannst du die Ergebnisse mal posten. Einmal bei Verbindung, einmal ohne Verbindung? Dann kann ich versuchen es zu integrieren.
Liebe Grüße,
Kostenlos
-----------------------------------------------------------
Kostenlos ist nicht umsonst...

Jedes Windows-Problem lässt sich mit einem Script lösen ;)

Benutzeravatar
Mr.QM
Einsteiger
Beiträge: 8
Registriert: 23.10.06, 10:02

Beitrag von Mr.QM » 24.10.06, 11:05

hi, erstmal danke für deine schnelle antwort.

also mir geht es darum:

ich habe auf meinen desktop einen button von meinem dfü. damit wähle ich mich immer ein und trenne meine internetverbindung.
(im kontextmenü dieses button steht verbinden und auch trennen). diesen button
will ich löschen und es wäre geil, wenn ich das aus dem kontextmenü von onlinetray machen könnte.

es geht mir nur darum, mich beispielsweise morgens einzuwählen und abend zu trennen.

hier nun das was ich in der eingabef. eingegeben habe:

c:/windows/system32/rasdial arcor

und es klappt. er wählt sich ein.

wie der befehl heist, um die verbindung wieder zu trennen, weiss ich leider nicht.
vielleicht kennst du den ja.

Mr.QM

Benutzeravatar
Kostenlos
Mitglied
Beiträge: 578
Registriert: 22.07.06, 0:55

Beitrag von Kostenlos » 24.10.06, 11:47

Hier nochmal nur zum Verbinden und Trennen ohne Onlineanzeige:

RASTray

Code: Alles auswählen

#NoTrayIcon
Opt("TrayMenuMode", 3)
Opt("TrayOnEventMode", 1)

$provider = IniRead("Settings.ini", "Settings", "Connection", "")
If $provider = "" Then 
	MsgBox(16, "Fehler", "Bitte die gewünschte Verbindung in der Settings.ini eingeben!")
	Exit
EndIf

$triConnect = TrayCreateItem("Verbinden")
$triDisconnect = TrayCreateItem("Trennen")
TrayCreateItem("")
$triAuto = TrayCreateItem("Autostart")
TrayCreateItem("")
$triQuit = TrayCreateItem("Beenden")
TrayItemSetOnEvent($triQuit, "Quit")
TrayItemSetOnEvent($triConnect, "Connect")
TrayItemSetOnEvent($triDisconnect, "Quit")
TrayItemSetOnEvent($triAuto, "Autostart")

$var = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "RASTray")

If $var = @ScriptFullPath Then
   TrayItemSetState($triAuto, 65)
ElseIf $var Then
   DeleteAutoRun()
EndIf
TraySetState()

While 1
	Sleep(100)
WEnd

Func Quit()
	Exit
EndFunc

Func Connect()
	Run('rasdial "' & $provider '"', "", @SW_HIDE)
EndFunc

Func Disconnect()
	Run('rasdial "' & $provider & '" /d', "", @SW_HIDE)
EndFunc

Func Autostart()
	ConsoleWrite(TrayItemGetState($triAuto) & @LF)
	If TrayItemGetState($triAuto) = 68 Then
		$var = RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "RASTray", "REG_SZ", @ScriptFullPath)
		TrayItemSetState($triAuto, 65)
	Else
		TrayItemSetState($triAuto, 68)
		DeleteAutoRun()
	EndIf
	TraySetState()
EndFunc

Func DeleteAutoRun()
	RegDelete("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "RASTray")
EndFunc
Im gleichen Ordner eine Settings.ini erstellen mit folgendem Inhalt:

Code: Alles auswählen

[Settings]
Connection=Arcor
Hier natürlich die gewünscht RAS-Verbindung angeben. Ich hoffe, ich habe dich richtig verstanden. Probiers mal aus, ich habe leider keine RAS-Verbindung zum Testen. Das Script habe ich auch nur kurz hingeschrieben, keine Ahnung ob es funzt. Gib mal Feedback ;)

Hier kompiliert: http://rapidshare.com/files/468999/RASTray.rar.html
Liebe Grüße,
Kostenlos
-----------------------------------------------------------
Kostenlos ist nicht umsonst...

Jedes Windows-Problem lässt sich mit einem Script lösen ;)

Benutzeravatar
Mr.QM
Einsteiger
Beiträge: 8
Registriert: 23.10.06, 10:02

Beitrag von Mr.QM » 24.10.06, 18:00

hi danke erstmal.

klappt leider nicht. beim trennen drücken
verabschiedet sich rastray und beim verbinden kommt folgender fehler:

Line0 (File "C:\RASTray\RASTray.exe")

Run('rasdial "' & $provider '"', "", @SW_HIDE)
Run(^ ERROR

Error: Error in expression


danach verabschiedet sich rastray ebenfalls.

übrigens wenn es funktionieren sollte, kannst du das in onlinetray mit einbauen??

leider hab ich null ahnung. kann man nicht einfach
run system32\ rasdial arcor ein bauen. denn mit dem befehl verbindet er sich ja.

MrQM

Antworten