27.06.2003, 22:51
#32194159
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
|
Участник
Откуда: Санкт-Петербург - New York City
Сообщения: 4 885
Рейтинг:
0
/ 0
|
|
|
|
Считает время, проведенное в онлайн по диалапу.
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.
using System;
using System.Diagnostics;
namespace JimmersUtils
{
/// <summary>
/// "Бежит" по системному журналу и выбирает События типа Соединение Установлено /
/// Соединение Разорвано. Для каждой последовательной пары таких значений вычисляет
/// временной интервал между временами генерации значений и прибавляет вычисленный
/// интервал к общей сумме. При этом программа может проверять, что выбранное Событие
/// указанного выше типа принадлежит к заданному DIALUP соединению путем поиска
/// заданной строки (второй параметр командной строки) в тексте Сообщения. Способ,
/// конечно не лучший. Кроме того, программа привязана к версии Windows - предполагается
/// английская версия, так как есть сравнение строк типа RemoteAccess.
/// Пожалуйста, направляйте все сообщения о найденных ошибках на адрес: jimmers@yandex.ru
/// </summary>
class RASum
{
[STAThread]
static void Main(string[] args)
{
DateTime EstablishedTime = new DateTime(), DisconnectedTime = new DateTime();
TimeSpan TotalTimeOnline = new TimeSpan();
bool WasEstablished = false, WasDisconnected = false;
string MachineName = "";
string Connection = " ";
switch (args.Length)
{
case 1 :
MachineName = args[ 0 ];
break;
case 2 :
MachineName = args[ 0 ];
Connection = args[ 1 ];
break;
default:
Console.WriteLine("Usage: RASum MachineName [Connection] ");
return;
}
try
{
EventLog objEventLog = new EventLog();
objEventLog.MachineName = MachineName;
objEventLog.Log = " System ";
EventLogEntryCollection objEventLogEntryCollection = objEventLog.Entries;
foreach(EventLogEntry objEventLogEntry in objEventLogEntryCollection)
{
if(" RemoteAccess "==objEventLogEntry.Source &&
EventLogEntryType.Information==objEventLogEntry.EntryType &&
objEventLogEntry.Message.IndexOf(Connection)!=-1 )
{
switch(objEventLogEntry.EventID)
{
case 20158 :
EstablishedTime = objEventLogEntry.TimeGenerated;
Console.WriteLine("Established: { 0 } ", EstablishedTime);
WasEstablished = true;
break;
case 20159 :
DisconnectedTime = objEventLogEntry.TimeGenerated;
Console.WriteLine("Disconnected: { 0 } ", DisconnectedTime);
if(WasEstablished)
WasDisconnected = true;
break;
}
if(WasEstablished && WasDisconnected)
{
Console.WriteLine(" Time spent: " + DisconnectedTime.Subtract(EstablishedTime));
TotalTimeOnline += DisconnectedTime.Subtract(EstablishedTime);
WasEstablished = false;
WasDisconnected = false;
}
}
}
Console.WriteLine(" =========================== ");
Console.WriteLine(" Total Time Online: { 0 }", TotalTimeOnline.ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
|
|