Du bist nicht angemeldet.

Kontrollzentrum

Spenden

Jeder Euro hilft uns, euch zu helfen.

Adsense

Downloads

Stabil: 3.3.8.1 (Q, H)
Stabil: 3.3.10.2 (Q, H)
Beta: 3.3.11.4 (Q, H)
SciTE: 4/5/2014 (Q, H)
Hilfe Deutsch: 12/23/2013 (Q)
Download: OrganizeIncludes (Q)
Stand: 08.04.2014 - 15:42 Uhr

Lieber Besucher, herzlich willkommen bei: AutoIt.de - Das deutsche AutoIt-Forum. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

  • »I3asti« ist der Autor dieses Themas

Registrierungsdatum: 7. März 2012

  • Private Nachricht senden

1

Donnerstag, 15. März 2012, 11:12

PingList




Hallo,
das Programm hab ich mal für einen Kollegen geschrieben der testen wollte ob alle Server durchlaufen oder sich zwischendurch neustarten

Funktionsweise:

  Spoiler Spoiler

Das Programm pingt eine Liste von IP's und versendet, wenn sich ein Status ändert eine E-Mail.

Man kann im Programm die IP's mit Beschreibung usw. eintragen.
Die E-Mail Adresse wird bis aufs Passwort in eine ini geschrieben, damit man beim nächsten Start nicht wieder alles eingeben muss.
Jeder Eintrag in der Liste bekommt einen eigenen Prozess.
Schreibt Statusänderungen in ein Textdokument.



Pinglist Code:

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
#cs --------------------------------------------------------------------------------------------------------
    Name: PingList

    Description: Ping a list of Computers, write protocols, send e-mails if a Computer change his mode

    Author: I3asti
#ce  --------------------------------------------------------------------------------------------------------


#include <GUIConstants.au3>
#include <date.au3>
#include <GuiListView.au3>
#include <file.au3>
#include <mail.au3>
#include <EditConstants.au3>
#include <StructureConstants.au3>
#include <Clipboard.au3>
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

Dim $IP_Adresse, $Timeout, $Kunde, $Beschreibung, $Intervall, $k, $File, $t, $Server, $Benutzername, $Passwort, $EMail, $Smtp, $Port, $SSL, $string, $stringsplit
$ProgrammStatus = 0
$Stop = 0
Global $Adressen_Array[10000]
$Adressen = @ScriptDir & "\pingliste.txt"
$Ende = @ScriptDir & "\Ende.txt"
$ESave = @ScriptDir & "\EMail.ini"
$FirstRun = 1
$Status_End1 = "Online"
$Status_End2 = "Offline"
$z = 0
$Laufzeit = 0



#region GUI
$Ping = GUICreate("Ping", 961, 550, 193, 125)
$Listview2 = GUICtrlCreateListView("Kunde|Beschreibung|IP-Adresse|Timeout|Ergebnis|letzter Ping", 8, 8, 946, 115)
GUICtrlSendMsg(-1, 0x101E, 0, 175)
GUICtrlSendMsg(-1, 0x101E, 1, 175)
GUICtrlSendMsg(-1, 0x101E, 2, 166)
GUICtrlSendMsg(-1, 0x101E, 3, 115)
GUICtrlSendMsg(-1, 0x101E, 4, 155)
GUICtrlSendMsg(-1, 0x101E, 5, 155)
$Listview = GUICtrlCreateListView("Kunde|Beschreibung|IP-Adresse|Timeout|Ergebnis|letzter Ping", 8, 128, 609, 377)
GUICtrlSendMsg(-1, 0x101E, 0, 85)
GUICtrlSendMsg(-1, 0x101E, 1, 125)
GUICtrlSendMsg(-1, 0x101E, 2, 120)
GUICtrlSendMsg(-1, 0x101E, 3, 65)
GUICtrlSendMsg(-1, 0x101E, 4, 85)
GUICtrlSendMsg(-1, 0x101E, 5, 125)
$Kunde_Label = GUICtrlCreateLabel("Kunde", 632, 128, 50, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Kunde_Input = GUICtrlCreateInput($Kunde, 688, 128, 265, 21)
$Beschreibung_Label = GUICtrlCreateLabel("Beschreibung", 632, 160, 102, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Beschreibung_Input = GUICtrlCreateInput($Beschreibung, 736, 160, 217, 21)
$IP_Label = GUICtrlCreateLabel("IP", 632, 192, 19, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$IP_Input = GUICtrlCreateInput($IP_Adresse, 656, 192, 297, 21)
$Timeout_Label = GUICtrlCreateLabel("Timeout", 632, 224, 61, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Timeout_Input = GUICtrlCreateInput($Timeout, 696, 224, 257, 21)
$Insert = GUICtrlCreateButton("Hinzufügen", 880, 256, 75, 25, 0)
$Modus_Label = GUICtrlCreateLabel("Modus", 632, 264, 52, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Dauerping_Radio = GUICtrlCreateRadio("Dauerping (Jede Sekunde)", 632, 288, 250, 25)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Intervall_Radio = GUICtrlCreateRadio("Intervall", 632, 320, 113, 17)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Intervall_Input = GUICtrlCreateInput($Intervall, 832, 320, 121, 21)
$Aktueller_Ping = GUICtrlCreateLabel("Aktueller Ping:", 120, 520, 500, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Benutzername_Input = GUICtrlCreateInput($Benutzername, 632, 386, 129, 21)
$Passwort_Input = GUICtrlCreateInput($Passwort, 784, 386, 109, 21, $ES_PASSWORD)
$SSL_Check = GUICtrlCreateCheckbox("SSL", 904, 386)
$Benutzername_Label = GUICtrlCreateLabel("Benutzername", 632, 362, 109, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Passwort_Label = GUICtrlCreateLabel("Passwort", 784, 362, 109, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Zieladresse_Label = GUICtrlCreateLabel("Ziel-EMail", 632, 416, 109, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Zieladresse_Input = GUICtrlCreateInput($EMail, 632, 440, 129, 21)
$SMTP_Label = GUICtrlCreateLabel("SMTP-Server", 784, 416, 109, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$SMTP_Input = GUICtrlCreateInput($Smtp, 784, 440, 109, 21)
$Port_Label = GUICtrlCreateLabel("Port", 904, 416, 69, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Port_Input = GUICtrlCreateInput($Port, 904, 440, 49, 21)
$Delete_Button = GUICtrlCreateButton("Löschen", 632, 480, 75, 25, 0)
$Ende_Button = GUICtrlCreateButton("Ende", 792, 480, 75, 25, 0)
$Start_Button = GUICtrlCreateButton("Start", 880, 480, 75, 25, 0)
$Lade_Button = GUICtrlCreateButton("Lade Daten", 8, 520, 75, 25, 0)
$Testmail_Button = GUICtrlCreateButton("Test-Mail", 792, 520, 75, 25, 0)
$Close_Button = GUICtrlCreateButton("Beenden", 880, 520, 75, 25, 0)
GUISetState(@SW_SHOW)
GUICtrlSetOnEvent($Start_Button, "_Start")
GUICtrlSetOnEvent($Ende_Button, "_End")
GUICtrlSetOnEvent($Close_Button, "_Close")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
GUICtrlSetOnEvent($Lade_Button, "_LadeDaten")
GUICtrlSetOnEvent($Insert, "_SchreibeDaten")
GUICtrlSetOnEvent($Delete_Button, "_Delete")
GUICtrlSetOnEvent($Testmail_Button, "_Testmail")
#endregion GUI



Call("_LadeDaten")

If $ProgrammStatus = 1 Then
     AdlibRegister("_Ziel_Status", 1000)
    EndIf

While 1

    Sleep(100) ;damit er nicht 100% cpu verbrauch

    If $Laufzeit > 1000 Then
        Run(@ScriptName)
        Sleep(100)
        Exit
    EndIf

WEnd

Func _Testmail()

    $Benutzername = GUICtrlRead($Benutzername_Input)
    $Passwort = GUICtrlRead($Passwort_Input)
    $EMail = GUICtrlRead($Zieladresse_Input)
    $Smtp = GUICtrlRead($SMTP_Input)
    $Port = GUICtrlRead($Port_Input)

    If $Benutzername <> "" Then ;Wenn Benutzername und Passwort nicht leer sind
        If $Passwort <> "" Then ;Wenn Benutzername und Passwort nicht leer sind
            If $EMail <> "" Then ;Wenn die Zieladresse nicht leer ist
                If $Smtp <> "" Then ;Wenn ein SMTP-Server eingetragen ist
                    If $Port <> "" Then ;Wenn ein Port eingetragen ist
                        If StringInStr($EMail, "@") Then
                            If StringInStr($EMail, " ") Then

                                MsgBox(16, "!!!Fehler!!!", "In der EMail ist ein Leerzeichen enthalten")

                            Else

                                If BitAND(GUICtrlRead($SSL_Check), $GUI_CHECKED) Then

                                    $SSL = 1 ;SSL an

                                Else

                                    $SSL = "" ;SSL aus

                                EndIf

                                Call("_SchreibeEmail")
                                Call("_Mail", $Benutzername, $Passwort, "Testmail", $EMail, $Smtp, $Port, $SSL)

                            EndIf

                        Else

                            MsgBox(16, "!!!Fehler!!!", "In der EMail fehlt das @ Zeichen")

                        EndIf

                    Else
                        MsgBox(16, "!!!Stop!!!", "Geben Sie einen Port an")
                    EndIf


                Else
                    MsgBox(16, "!!!Stop!!!", "Geben Sie einen SMTP-Server an")
                EndIf


            Else
                MsgBox(16, "!!!Stop!!!", "Geben Sie eine Zieladresse an")
            EndIf

        Else
            MsgBox(16, "!!!Stop!!!", "Geben Sie ein Passwort an")
        EndIf

    Else
        MsgBox(16, "!!!Stop!!!", "Geben Sie einen Benutzernamen an")
    EndIf



EndFunc   ;==>_Testmail

Func _Delete()
    If $ProgrammStatus = 1 Then ;Test ob Ping bereits ausgeführt wird
        MsgBox(16, "!!!Stop!!!", "Ping wird gerade ausgeführt")
    Else
        $Del = _GUICtrlListView_GetSelectedIndices($Listview) ;Ausgewählter Eintrag in Del schreiben
        If $Del = "" Then
            MsgBox(16, "!!!Fehler!!!", "Wählen sie einen Eintrag aus") ;wenn kein Eintrag ausgewählt war
        Else
            $Del = $Del + 1 ;Del um eins erhöhen
            _ArrayDelete($Adressen_Array, $Del) ;Eintrag aus Array löschen
            $k = 0
            $d = 0 ;==> Zähler setzen

            FileDelete($Adressen) ;Liste löschen

            For $l = 1 To $Adressen_Array[0] Step 1
                If $d <> 0 Then ;beim ersten durchlauf nicht durchführen
                    $k = $k + 1
                    FileWriteLine($Adressen, $Adressen_Array[$k] & @CRLF) ;Eitnräge schreiben
                EndIf
                $d = 1
            Next
            Call("_LadeDaten") ;Daten laden
        EndIf
    EndIf
EndFunc   ;==>_Delete


Func _Start()

    FileDelete($Ende)

    $Benutzername = GUICtrlRead($Benutzername_Input)
    $Passwort = GUICtrlRead($Passwort_Input)
    $EMail = GUICtrlRead($Zieladresse_Input)
    $Smtp = GUICtrlRead($SMTP_Input)
    $Port = GUICtrlRead($Port_Input)

    If $ProgrammStatus = 1 Then ;Test ob Ping bereits ausgeführt wird
        MsgBox(16, "!!!Stop!!!", "Ping läuft bereits")
    Else

        If $Benutzername <> "" Then ;Wenn Benutzername und Passwort nicht leer sind
            If $Passwort <> "" Then ;Wenn Benutzername und Passwort nicht leer sind
                If $EMail <> "" Then ;Wenn die Zieladresse nicht leer ist
                    If $Smtp <> "" Then ;Wenn ein SMTP-Server eingetragen ist
                        If $Port <> "" Then ;Wenn ein Port eingetragen ist
                            If StringRegExp($EMail, "@") Then
                                If StringRegExp($EMail, " ") Then

                                    MsgBox(16, "!!!Fehler!!!", "In der EMail ist ein Leerzeichen enthalten")

                                Else

                                    If BitAND(GUICtrlRead($SSL_Check), $GUI_CHECKED) Then

                                        $SSL = 1 ;SSL an

                                    Else

                                        $SSL = "" ;SSL aus

                                    EndIf

                                    Call("_SchreibeEmail")
                                    IniWrite($ESave, "Running", "Running", "1")
                                    $Intervall = "" ;Setzt Intervall zurück
                                    Call("_Check")

                                EndIf

                            Else

                                MsgBox(16, "!!!Fehler!!!", "In der EMail fehlt das @ Zeichen")

                            EndIf

                        Else
                            MsgBox(16, "!!!Stop!!!", "Geben Sie einen Port an")
                        EndIf


                    Else
                        MsgBox(16, "!!!Stop!!!", "Geben Sie einen SMTP-Server an")
                    EndIf


                Else
                    MsgBox(16, "!!!Stop!!!", "Geben Sie eine Zieladresse an")
                EndIf

            Else
                MsgBox(16, "!!!Stop!!!", "Geben Sie ein Passwort an")
            EndIf

        Else
            MsgBox(16, "!!!Stop!!!", "Geben Sie einen Benutzernamen an")
        EndIf

    EndIf
EndFunc   ;==>_Start




Func _Close()

    If $ProgrammStatus <> 0 Then ;Test ob Ping ausgeführt wird
        MsgBox(16, "!!!Stop!!!", "Ping läuft noch bitte erst Ping beenden")
    Else
        Exit
    EndIf

EndFunc   ;==>_Close

Func _Modus($Modus)

    $FirstRun = 1 ;Setzt FirstRun auf 0
    $Stop = 0 ;Setzt Stop wieder auf 0
    $t = 0 ;Setzt t auf 0
    $ProgrammStatus = 1 ;Setzt den ProgrammStatus auf laufend
    GUICtrlSetData($Aktueller_Ping, "Aktueller Ping:Ping läuft")

    If $Modus = 1 Then
        $Intervall = 1000
        Call("_Go") ;startet _Start
    ElseIf $Modus = 2 Then
        $Intervall = $Intervall * 1000
        Call("_Go") ;startet _Start
    EndIf

EndFunc   ;==>_Modus


Func _Check()

    If GUICtrlRead($Dauerping_Radio) = 1 Then ;Wenn Dauerping gedrückt ist
        Call("_Modus", 1)
    ElseIf GUICtrlRead($Intervall_Radio) = 1 Then ;Wenn Intervall gedrückt ist
        $Intervall = GUICtrlRead($Intervall_Input) ;Intervall Wert einlesen
        If $Intervall <> "" Then ;Wenn Intervall nicht leer ist
            Call("_Modus", 2) ;Intervall Modus aufrufen
        Else
            MsgBox(16, "Fehler", "Bitte einen Intervall angeben") ;Ausgabe wenn Intervall leer ist
        EndIf
    Else
        MsgBox(16, "Fehler", "Bitte einen Modus auswählen") ;Wenn kein Modus angegeben ist
    EndIf


EndFunc   ;==>_Check

Func _End()
    $Stop = 1 ;Setzt Stop auf 1
    $ProgrammStatus = 0 ;Setzt lauft auf 0
    GUICtrlSetData($Aktueller_Ping, "Aktueller Ping: Ping beendet")
    AdlibUnRegister("_Ziel_Status")
    FileWriteLine($Ende, $Stop)
    IniWrite($ESave, "Running", "Running", "0")
EndFunc   ;==>_End

Func _Datum()

    $Heute = @YEAR & "." & @MON & "." & @MDAY & "|" ;Datum heute
    $Time = @HOUR & ":" & @MIN & ":" & @SEC & "|" ;Zeit jetzt
    $Datum = $Heute & $Time ; Datum und Zeit zusammensetzen

    Return $Datum
EndFunc   ;==>_Datum

Func _Go()

    $k = -1

    For $l = 1 To $Adressen_Array[0] Step 1 ;solange obejekte im array sind

        $k = $k + 1
        $Dat = _GUICtrlListView_GetItemText($Listview, $k, 0) & "|" & _GUICtrlListView_GetItemText($Listview, $k, 1) & "|" & _GUICtrlListView_GetItemText($Listview, $k, 2) & "|" & _GUICtrlListView_GetItemText($Listview, $k, 3) & "|" & $Benutzername & "|" & $Passwort & "|" & $EMail & "|" & $Smtp & "|" & $Port & "|" & $SSL & "|" & $k & "|" & $Intervall & "|" ;schreibt die Daten für die Pingfunktion
        Run('"' & @ScriptDir & '\Ping.exe " "' & $Dat & '"')
        Sleep(500)

    Next

    $Zeit = $Intervall - 100

    Call("_Ziel_Status")
    Call("_Ziel_Status")
    AdlibRegister("_Ziel_Status", $Zeit)

EndFunc   ;==>_Go



Func _Ziel_Status()

    _GUICtrlListView_DeleteAllItems($Listview2)

    $k = -1
    $o = -1
    $off = 0
    $Laufzeit = $Laufzeit + 1


    For $l = 1 To $Adressen_Array[0] Step 1 ;solange obejekte im array sind

        $k = $k + 1

        $Status_input = @ScriptDir & "\Status.ini" ;Status einlesen
        $Stat = IniRead($Status_input, $k, "Status", "Fehler beim lesen")

        $Datum = Call("_Datum") ;Führt Datum aus

        If $Stat = "Online" Then
            _GUICtrlListView_SetTextBkColor($Listview, 0x00ff00)

            $Datum = Call("_Datum") ;Führt Datum aus

            _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 3), 3)
            _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 2), 2)
            _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 1), 1)
            _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 0), 0)


        Else
            _GUICtrlListView_SetTextBkColor($Listview, 0x0000fa)
            _GUICtrlListView_SetTextBkColor($Listview2, 0x0000fa)

            $Datum = Call("_Datum") ;Führt Datum aus

            _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 3), 3)
            _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 2), 2)
            _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 1), 1)
            _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 0), 0)

            $off = 1

        EndIf

        _GUICtrlListView_SetItemText($Listview, $k, $Stat, 4) ;Status schreiben


        $StatPing = IniRead($Status_input, $k, "Ping", "Fehler beim lesen")
        _GUICtrlListView_SetItemText($Listview, $k, $StatPing, 5) ;Status schreiben

        If $off = 1 Then

            $o = $o + 1

            GUICtrlCreateListViewItem("", $Listview2)
            _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 5), 5)
            _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 4), 4)
            _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 3), 3)
            _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 2), 2)
            _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 1), 1)
            _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 0), 0)

            $off = 0

        EndIf


    Next

EndFunc   ;==>_Ziel_Status

Func _SchreibeDaten()
    If $ProgrammStatus = 1 Then ;Test ob Ping bereits ausgeführt wird
        MsgBox(16, "!!!Stop!!!", "Ping wird gerade ausgeführt")
    Else
        $Kunde = GUICtrlRead($Kunde_Input)
        $Beschreibung = GUICtrlRead($Beschreibung_Input)
        $IP = GUICtrlRead($IP_Input)
        $Timeout = GUICtrlRead($Timeout_Input)


        If $Kunde <> "" Then
            If $Beschreibung <> "" Then
                If $IP <> "" Then
                    If $Timeout <> "" Then

                        $Daten = $Kunde & "|" & $Beschreibung & "|" & $IP & "|" & $Timeout & "|"
                        FileWriteLine($Adressen, $Daten & @CRLF)

                    Else
                        MsgBox(16, "!!!Fehler!!!", "Bitte vergewissern Sie sich, dass alle Felder ausgefüllt sind")
                    EndIf

                Else
                    MsgBox(16, "!!!Fehler!!!", "Bitte vergewissern Sie sich, dass alle Felder ausgefüllt sind")
                EndIf

            Else
                MsgBox(16, "!!!Fehler!!!", "Bitte vergewissern Sie sich, dass alle Felder ausgefüllt sind")
            EndIf

        Else
            MsgBox(16, "!!!Fehler!!!", "Bitte vergewissern Sie sich, dass alle Felder ausgefüllt sind")
        EndIf

        Call("_LadeDaten")
    EndIf
EndFunc   ;==>_SchreibeDaten


Func _SchreibeEmail()

    FileDelete($ESave)
    IniWrite($ESave, "Benutzername", "Benutzername", $Benutzername)
    IniWrite($ESave, "EMail", "EMail", $EMail)
    IniWrite($ESave, "SMTP", "SMTP", $Smtp)
    IniWrite($ESave, "Port", "Port", $Port)
    IniWrite($ESave, "SSL", "SSL", $SSL)



EndFunc   ;==>_SchreibeEmail


Func _LadeDaten()



    If $ProgrammStatus = 1 Then

        MsgBox(16, "!!!STOP!!!", "Programm läuft gerade")

    Else

        _GUICtrlListView_DeleteAllItems($Listview)
        ReDim $Adressen_Array[1]
        ReDim $Adressen_Array[500]
        _FileReadToArray($Adressen, $Adressen_Array)
        For $l = 1 To $Adressen_Array[0] Step 1
            GUICtrlCreateListViewItem($Adressen_Array[$l], $Listview)
        Next
    EndIf

    If FileExists($ESave) Then

        $Benutzername = IniRead($ESave, "Benutzername", "Benutzername", "Fehler beim auslesen")
        $EMail = IniRead($ESave, "EMail", "EMail", "Fehler beim auslesen")
        $Smtp = IniRead($ESave, "SMTP", "SMTP", "Fehler beim auslesen")
        $Port = IniRead($ESave, "Port", "Port", "Fehler beim auslesen")
        $SSL = IniRead($ESave, "SSL", "SSL", "Fehler beim auslesen")

        GUICtrlSetData($Benutzername_Input, $Benutzername) ;Benutzername in Feld schreiben
        GUICtrlSetData($Zieladresse_Input, $EMail) ;Email in Feld schreiben
        GUICtrlSetData($SMTP_Input, $Smtp) ;Smtp in Feld schreiben
        GUICtrlSetData($Port_Input, $Port) ;Port in Feld schreiben

        If $SSL <> "" Then

            GUICtrlSetState($SSL_Check, $GUI_CHECKED)

        Else

            GUICtrlSetState($SSL_Check, $GUI_UNCHECKED)

        EndIf


    EndIf

    $ProgrammStatus = IniRead($ESave, "Running", "Running", "0")

EndFunc   ;==>_LadeDaten


Pingfunktion Code:

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
#cs --------------------------------------------------------------------------------------------------------
    Name: Pingfunktion

    Author: I3asti
#ce  ---

#NoTrayIcon
#include "file.au3"
#include "mail.au3"
#include "date.au3"
#include "EditConstants.au3"
#include "Array.au3"


Dim $IP, $Kunde, $Beschreibung, $Timeout, $Intervall, $File, $t, $Server, $Benutzername, $Passwort, $EMail, $Smtp, $Port, $SSL, $Nummer, $Status_output, $Ping, $Status_Anderung, $Datum_Anderung, $Status, $Ping_output, $Restart
$FirstRun = 0
$Status_End1 = 1
$Status_End2 = 2
$Ende = @ScriptDir & "\Ende.txt"
$Adressen = @ScriptDir & "\Data.txt"
Global $Stop[5]
$Stop[1] = 0
$Zahler = 0




Call("_Ziel_Status")


Func _Datum()

    $Heute = @YEAR & "." & @MON & "." & @MDAY & "|" ;Datum heute
    $Time = @HOUR & ":" & @MIN & ":" & @SEC & "|" ;Zeit jetzt
    $Datum = $Heute & $Time ; Datum und Zeit zusammensetzen

    Return $Datum
EndFunc   ;==>_Datum

Func _FirstRun()


    $Datum = Call("_Datum") ;Führt Datum aus
    $Datum_Anderung = $Datum ;Datum Anderung wird für Aktuellen Eintrag gesetzt

    If $Ping Then ;ping ausführen

        FileWriteLine($File, "Ping gestartet Status:|Online" & "|" & $Datum & @CRLF) ;positiv
        IniDelete($Status_output, $Nummer, "Status")
        IniWrite($Status_output, $Nummer, "Status", "Online")
        $Status = 1 ;Status schreiben
        $Letzte_Ping = $Datum ; Letzte Ping Zeit setzen
        $Status_Anderung = 2

    Else

        FileWriteLine($File, "Ping gestartet Status:|Offline" & "|" & $Datum & @CRLF) ;positiv
        IniDelete($Status_output, $Nummer, "Status")
        IniWrite($Status_output, $Nummer, "Status", "Offline")
        $Status = 2 ;Status schreiben
        $Letzte_Ping = $Datum ; Letzte Ping Zeit setzen
        $Status_Anderung = 1

    EndIf

EndFunc   ;==>_FirstRun



Func _Status_Anderung($Status)



    $Datum = Call("_Datum") ;Führt Datum aus

    $Letzte_Ping = $Datum

    $Letzte_Ping = StringSplit($Letzte_Ping, "|")
    IniDelete($Status_output, $Nummer, "Ping")
    IniWrite($Status_output, $Nummer, "Ping", $Letzte_Ping[2])


    If $Status = 1 Then ;Wird Bei Status 1 ausgeführt



        If $Status_Anderung = $Status Then ;Wird bei einer Statusänderung ausgeführt


            Sleep(5000)
            $Ping = Ping($IP, $Timeout);Pingt
            If $Ping Then

                IniDelete($Status_output, $Nummer, "Status")
                IniWrite($Status_output, $Nummer, "Status", "Online")

                Call("_Schreiben", 1) ;Schreiben war Offline
                $Datum_Anderung = $Datum
                $Status_Anderung = 2

            EndIf

        EndIf

    Else



        If $Status_Anderung = $Status Then ;Wird bei einer Statusänderung ausgeführt

            Sleep(5000)
            $Ping = Ping($IP, $Timeout);Pingt
            If $Ping Then

            Else

                IniDelete($Status_output, $Nummer, "Status")
                IniWrite($Status_output, $Nummer, "Status", "Offline")

                Call("_Schreiben", 2) ;Schreiben war Online
                $Datum_Anderung = $Datum
                $Status_Anderung = 1

            EndIf

        EndIf

    EndIf

    $FirstRun = 1 ;wird auf 2ten durchlauf gesetzt

EndFunc   ;==>_Status_Anderung


Func _Schreiben($Modus)

    If $FirstRun = 1 Then ;beim ersten durchlauf nicht ausführen

        $Datum = Call("_Datum") ;Führt Datum aus

        If $Modus = 1 Then

            Call("_Mail", $Benutzername, $Passwort, $Server & " ist Online gegangen", $EMail, $Smtp, $Port, $SSL)
            $Text = "Server war|Offline|" & $Datum_Anderung & $Datum ;Ausgabetext
            FileWriteLine($File, $Text & @CRLF) ;Ausgabe speichern

        Else

            Call("_Mail", $Benutzername, $Passwort, $Server & " ist Offline gegangen", $EMail, $Smtp, $Port, $SSL)
            $Text = "Server war|Online|" & $Datum_Anderung & $Datum ;Ausgabetext
            FileWriteLine($File, $Text & @CRLF) ;Ausgabe speichern

        EndIf

    EndIf
EndFunc   ;==>_Schreiben





Func _Ende()

    $Datum = Call("_Datum") ;Führt Datum aus

    If $Ping Then ;ping ausführen
        FileWriteLine($File, "Ping beendet Status:|Online" & "|" & $Datum & @CRLF) ;positiv
    Else
        FileWriteLine($File, "Ping beendet Status:|Offline" & "|" & $Datum & @CRLF);negativ
    EndIf

    Exit

EndFunc   ;==>_Ende


Func _Ziel_Status()

    $Datum = Call("_Datum") ;Führt Datum aus

    If $CmdLine[0] < 1 Then Exit

    $string = $CmdLine[1] ;Adresse in string speichern
    $stringsplit = StringSplit($string, "|") ;string splitten

    $Kunde = $stringsplit[1] ;Kunde in Variable schreiben
    $Beschreibung = $stringsplit[2] ;Beschreibung in Variable schreiben
    $IP = $stringsplit[3] ;IP in Variable schreiben
    $Timeout = $stringsplit[4] ;Timeout in Variable schreiben
    $Benutzername = $stringsplit[5] ;Benutzername in Variable schreiben
    $Passwort = $stringsplit[6] ;Passwort in Variable schreiben
    $EMail = $stringsplit[7] ;EMail in Variable schreiben
    $Smtp = $stringsplit[8] ;Smtp in Variable schreiben
    $Port = $stringsplit[9] ;Port in Variable schreiben
    $SSL = $stringsplit[10] ;SSL in Variable schreiben
    $Nummer = $stringsplit[11] ;Nummer in Variable schreiben
    $Intervall = $stringsplit[12] ;Intervall in Variable schreiben
    $First = $stringsplit[13] ;In Variable schreiben ob Programm schon gelaufen ist


    If $stringsplit[0] = 15 Then
        $Status = $stringsplit[14] ;Status in Variable schreiben
        $Status_Anderung = $stringsplit[15] ;Statusänderung in Variable schreiben

        $Restart = $CmdLine[1] ;CmdLine in Restart schreiben
        $Restart = StringTrimRight($Restart, 4) ;Restart kürzen
    EndIf


    If $First <> "" Then
        $FirstRun = 1
    Else
        $FirstRun = 0
        $Restart = $CmdLine[1] & "1" ;CmdLine FirstRun auf 1 setzen
    EndIf


    If $SSL <> "" Then
        $SSL = 1
    Else
        $SSL = 0
    EndIf

    $Status_output = @ScriptDir & "\Status.ini" ;hier wird der Status gespeichert

    If FileExists(@ScriptDir & "\Protokolle") Then ;wenn der Ordner existiert soll nichts gemacht werden
    Else
        DirCreate(@ScriptDir & "\Protokolle") ;wenn nicht soll er erstellt werden
    EndIf


    $Server = $Kunde & "." & $Beschreibung & "(" & $IP & ")"
    $File = @ScriptDir & "\Protokolle" & $Server & ".txt"
    $Server = "Kunde: " & $Kunde & @CRLF & "Beschreibung: " & $Beschreibung & @CRLF & "IP: " & $IP ;File Name

    While 1

        $Zahler = $Zahler + 1

        If $Zahler > 2500 Then

            $Restart &= "|" & $Status & "|" & $Status_Anderung ;Status, Statusänderung hinzufügen

            Run('"' & @ScriptDir & '\Ping.exe " "' & $Restart & '"') ;Script neu starten
            Sleep(100)
            Exit
        EndIf

        If $t <> 0 Then ;beim ersten ausführen nicht ausführen
            Sleep($Intervall)
        EndIf

        $t = 1


        $Ping = Ping($IP, $Timeout);Pingt

        If $FirstRun = 0 Then ;beim ersten durchlauf ausführen

            Call("_FirstRun") ;erster durchlauf

        EndIf

        If $Ping Then ;wenn ping true ist

            Call("_Status_Anderung", 1) ;positiv aufruf


        Else ;wenn ping false ist

            Call("_Status_Anderung", 2) ;negativ aufruf

        EndIf

        _FileReadToArray($Ende, $Stop)

        If $Stop[1] = 1 Then ;leitet exit Sequenz ein

            $Datum = Call("_Datum") ;Führt Datum aus

            If $Status_End2 = $Status Then ;wenn die Netzwerkverbindung getrennt war

                $Letzte_Ping = $Datum
                FileDelete($Status_output)
                FileWriteLine($Status_output, "Online")

                $Letzte_Ping = StringSplit($Letzte_Ping, "|")
                FileDelete($Ping_output)
                FileWriteLine($Ping_output, $Letzte_Ping[2])

                $Text = "Server war|Offline|" & $Datum_Anderung & $Datum ;Ausgabetext
                FileWriteLine($File, $Text & @CRLF) ;Ausgabe speichern
                Call("_Ende")

            ElseIf $Status_End1 = $Status Then ;wenn die Netzwerkverbindung bestand

                $Letzte_Ping = $Datum
                FileDelete($Status_output)
                FileWriteLine($Status_output, "Offline")

                $Letzte_Ping = StringSplit($Letzte_Ping, "|")
                FileDelete($Ping_output)
                FileWriteLine($Ping_output, $Letzte_Ping[2])

                $Text = "Server war|Online|" & $Datum_Anderung & $Datum ;Ausgabetext
                FileWriteLine($File, $Text & @CRLF) ;Ausgabe speichern
                Call("_Ende")

            EndIf

            ExitLoop

        EndIf



    WEnd
EndFunc   ;==>_Ziel_Status


Mail Code:

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#cs --------------------------------------------------------------------------------------------------------
    Name: mail

    Description: Send Mails

    Author: Jos


    Changed by I3asti

    Added _Mail($Name, $Password, $Body, $ToAddress, $SmtpServer) Function
#ce  --------------------------------------------------------------------------------------------------------


;##################################
; Include
;##################################
#include "file.au3"
;##################################
; Variables
;##################################


$Subject = "Server-Ping" ; subject from the email - can be anything you want it to be
$AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed
$CcAddress = "" ; address for cc - leave blank if not needed
$BccAddress = "" ; address for bcc - leave blank if not needed
$Importance = "Normal" ; Send message priority: "High", "Normal", "Low"
;~ $IPPort = 25                            ; port used for sending the mail
;~ $ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS
;~ $IPPort = 465 ; GMAIL port used for sending the mail
;~ $ssl = 1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS

;##################################
; Script
;##################################
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

Func _Mail($Username, $Password, $Body, $ToAddress, $SmtpServer, $IPPort, $ssl)

    $FromName = $Username ; name from who the email was sent
    $stringsplit = StringSplit($Username,"@")
    $Username = $stringsplit[1]
    $FromAddress = $Username & "@ping.de" ; address from where the mail should come

    $mail = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
EndFunc   ;==>_Mail

; The UDF
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
        $objEmail.HTMLBody = $as_Body
    Else
        $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
;~          ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
            If FileExists($S_Files2Attach[$x]) Then
                ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
                $objEmail.AddAttachment($S_Files2Attach[$x])
            Else
                ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
                SetError(1)
                Return 0
            EndIf
        Next
    EndIf
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    If Number($IPPort) = 0 Then $IPPort = 25
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    ;Authenticated SMTP
    If $s_Username <> "" Then
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $ssl Then
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Set Email Importance
    Switch $s_Importance
        Case "High"
            $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "High"
        Case "Normal"
            $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Normal"
        Case "Low"
            $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch
    $objEmail.Fields.Update
    ; Sent the Message
    $objEmail.Send
    If @error Then
        SetError(2)
        Return $oMyRet[1]
    EndIf
    $objEmail = ""
EndFunc   ;==>_INetSmtpMailCom
;
;
; Com Error Handler
Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ConsoleWrite("### COM Error !  Number: " & $HexNumber & "   ScriptLine: " & $oMyError.scriptline & "   Description:" & $oMyRet[1] & @LF)
    SetError(1); something to check for when this function returns
    Return
EndFunc   ;==>MyErrFunc


vll hat ja noch jemand Verbesserungsvorschläge :D
Mfg I3asti

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »I3asti« (9. August 2012, 14:00)


Registrierungsdatum: 10. Oktober 2008

Wohnort: Saarbrücken

Beruf: Student

  • Private Nachricht senden

2

Donnerstag, 15. März 2012, 14:43

In Zeile 131/132 vom Pinglist Code solltest du statt StringRegExp einfach nur StringInStr verwenden, das ist schneller.
Twitter: @L3viathan2142
Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • »I3asti« ist der Autor dieses Themas

Registrierungsdatum: 7. März 2012

  • Private Nachricht senden

3

Samstag, 17. März 2012, 00:17

In Zeile 131/132 vom Pinglist Code solltest du statt StringRegExp einfach nur StringInStr verwenden, das ist schneller.
^ ^ geändert danke :D
Mfg I3asti

  • »I3asti« ist der Autor dieses Themas

Registrierungsdatum: 7. März 2012

  • Private Nachricht senden

4

Montag, 19. März 2012, 15:43

Falls jemand mal kurz Zeit hätte ich komm net drauf. Ich habe das Programm über das Wochenende auf der Arbeit laufen lassen und als ich heute früh danach geschaut habe war es aus ohne Fehlermeldung, auch nichts in den Ereignisprotokollen. :huh: Ich habe es jetzt nochmal gestartet und lasse es laufen um zu schauen ob das Problem wieder kommt.
Mfg I3asti

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »I3asti« (26. März 2012, 08:54)


  • »I3asti« ist der Autor dieses Themas

Registrierungsdatum: 7. März 2012

  • Private Nachricht senden

5

Montag, 26. März 2012, 08:55

Hab jetzt doch ne Fehlermeldung bekommen bei der Pingfunktion.

Mfg I3asti

Registrierungsdatum: 26. April 2010

Wohnort: Baden-Württemberg

Beruf: Schüler (13.Kl)

  • Private Nachricht senden

6

Montag, 26. März 2012, 10:03

Das bedeutet, dass das Programm beendet wird, da sonst der Arbeitsspeicher volläuft...

  • »I3asti« ist der Autor dieses Themas

Registrierungsdatum: 7. März 2012

  • Private Nachricht senden

7

Montag, 26. März 2012, 10:27

Jo des hatte ich bei Google auch rausgefunden, aber trotzdem danke. Ich weiß aber nicht warum der vollläuft. ?(

Edit: Problem umgegangen funktionierender Code ist eingefügt
Mfg I3asti

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »I3asti« (19. April 2012, 08:39)


Registrierungsdatum: 11. Juli 2012

  • Private Nachricht senden

8

Mittwoch, 11. Juli 2012, 10:58

Hallo,

ich hab versucht den Code zu analysieren.. ich schreibe grad ein ähnliches tool, aber ich weis nicht wie ich den dauerping beenden kann..

HotKeySet("c", "PingEnde")

Func PingEnde()
send("^c")
EndFunc

funktioniert da iwie nicht

jemand ne Idee ?

  • »I3asti« ist der Autor dieses Themas

Registrierungsdatum: 7. März 2012

  • Private Nachricht senden

9

Donnerstag, 12. Juli 2012, 12:35

Mahlzeit,

mein "Dauerping" ist ja nur die Ping-Funktion von Autoit in einer Schleife, wenn du das beenden willst musst du einfach nur die Schleife beenden.

Wie startest du deinen Dauerping? Strg + c funktioniert ja nur in der Konsole wenn du deinen Dauerping mit ping -t laufen lässt.
Mfg I3asti

Registrierungsdatum: 11. Juli 2012

  • Private Nachricht senden

10

Freitag, 13. Juli 2012, 07:36

in meinem Tool arbeite ich grad mit Konsolen-Befehlen

  Spoiler Spoiler





Den Dauerping habe ich nun mit nem Hotkey zum stoppen gebracht.

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Func pinging2()
HotKeySet("{F1}", "PingEnde")
While 1
 if $Ping == 1 Then
  Local $foo = Run(@ComSpec & " /c ping "&GUICtrlRead($IP_Input[0])&"."&GUICtrlRead($IP_Input[1])&"."&GUICtrlRead($IP_Input[2])&"."&GUICtrlRead($IP_Input[3]), @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
  Local $line
  While 1
   $line = $line&StdoutRead($foo)
   If @error Then ExitLoop
   GUICtrlSetData($iMemo, $line)
   Sleep(250) 
  Wend
  While 1
   $line = StderrRead($foo)
   If @error Then ExitLoop
   MsgBox(0, "STDERR read:", $line)
  Wend
 Else
 
  ExitLoop
  GUISetState()
 
 EndIf
 
WEnd
;MsgBox(0, "Debug", "Exiting...")
 
EndFunc
Func PingEnde()
 $Ping = 0
EndFunc




Arbeite grad an der Abfrage für wenn Computername -> leer dann frag IP ab, wenn die leer dann MsgBox "geben sie eines von beidem ein"...

Versuche mich grad so in AutoIt reinzufuddeln, hab bisher immer nur mit Java programmiert und will mir jetzt eine Admin-Erleichterung basteln

  • »I3asti« ist der Autor dieses Themas

Registrierungsdatum: 7. März 2012

  • Private Nachricht senden

11

Donnerstag, 9. August 2012, 14:07

Hab bemerkt das der Arbeitsspeicher doch noch volläuft obwohl ich zwischendurch alles beende weiß aber leider nicht warum falls jemand ne Idee hätte ^^
Mfg I3asti

Thema bewerten
autoit.de Webutation